单点部署
(1)下载zookeeper
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
(2)解压软件包
tar xf apache-zookeeper-3.8.1-bin.tar.gz -C /oldboyedu/softwares/
(3)配置环境变量
[root@elk101 ~]# cat /etc/profile.d/zk.sh
#!/bin/bash
export ZK_HOME=/oldboyedu/softwares/apache-zookeeper-3.8.1-bin
export PATH=$PATH:$ZK_HOME/{bin}
[root@elk101 ~]# source /etc/profile.d/zk.sh
(4)创建配置文件
[root@elk101 ~]# cp /oldboyedu/softwares/apache-zookeeper-3.8.1-bin/conf/{zoo_sample,zoo}.cfg
(5)启动zookeeper服务
[root@elk101 ~]# zkServer.sh start # 启动zookeeper服务
[root@elk101 ~]# zkServer.sh status # 查看zookeeper服务状态
[root@elk101 ~]# zkServer.sh stop # 停止zookeeper服务
[root@elk101 ~]# zkServer.sh restart # 重启zookeeper服务
(6)确定zookeeper服务后,测试zookeeper服务是否可用
[root@elk101 ~]# zkCli.sh
....
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 1]
zookeeper集群部署
1.创建配置文件
[root@elk101 ~]# cat > /oldboyedu/softwares/apache-zookeeper-3.8.1-bin/conf/zoo.cfg <<EOF
# 定义最小单元的时间范围tick。
tickTime=2000
# 启动时最长等待tick数量。
initLimit=5
# 数据同步时最长等待的tick时间进行响应ACK
syncLimit=2
# 指定数据目录
dataDir=/oldboyedu/data/zk
# 监听端口
clientPort=2181
# 开启四字命令允许所有的节点访问。
4lw.commands.whitelist=*
# server.ID=A:B:C[:D]
# ID:
# zk的唯一编号。
# A:
# zk的主机地址。
# B:
# leader的选举端口,是谁leader角色,就会监听该端口。
# C:
# 数据通信端口。
# D:
# 可选配置,指定角色。
server.101=10.0.0.101:2888:3888
server.102=10.0.0.102:2888:3888
server.103=10.0.0.103:2888:3888
EOF
2.同步zookeeper软件包及目录结构
[root@elk101 ~]# mkdir /oldboyedu/data/zk
[root@elk101 ~]#
[root@elk101 ~]# data_rsync.sh /oldboyedu/softwares/apache-zookeeper-3.8.1-bin/
[root@elk101 ~]#
[root@elk101 ~]# data_rsync.sh /oldboyedu/data/zk
[root@elk101 ~]#
[root@elk101 ~]# data_rsync.sh /etc/profile.d/zk.sh
#编写同步脚本
[root@elk101 ~]# cat > /usr/local/sbin/data_rsync.sh <<'EOF'
#!/bin/bash
# Auther: Jason Yin
if [ $# -ne 1 ];then
echo "Usage: $0 /path/to/file(绝对路径)"
exit
fi
# 判断文件是否存在
if [ ! -e $1 ];then
echo "[ $1 ] dir or file not find!"
exit
fi
# 获取父路径
fullpath=`dirname $1`
# 获取子路径
basename=`basename $1`
# 进入到父路径
cd $fullpath
for ((host_id=102;host_id<=103;host_id++))
do
# 使得终端输出变为绿色
tput setaf 2
echo ===== rsyncing elk${host_id}: $basename =====
# 使得终端恢复原来的颜色
tput setaf 7
# 将数据同步到其他两个节点
rsync -apz $basename `whoami`@elk${host_id}:$fullpath
if [ $? -eq 0 ];then
echo "命令执行成功!"
fi
done
EOF
3.每个zookeeper节点创建唯一标识ID
[root@elk101 ~]# for ((host_id=101;host_id<=103;host_id++)) do ssh elk${host_id} "echo ${host_id} > /oldboyedu/data/zk/myid";done
4.编写zookeeper集群管理脚本
[root@elk101 ~]# cat /usr/local/sbin/manager_zk.sh
#!/bin/bash
#判断用户是否传参
if [ $# -ne 1 ];then
echo "无效参数,用法为: $0 {start|stop|restart|status}"
exit
fi
#获取用户输入的命令
cmd=$1
#定义函数功能
function zookeeperManger(){
case $cmd in
start)
echo "启动服务"
remoteExecution start
;;
stop)
echo "停止服务"
remoteExecution stop
;;
restart)
echo "重启服务"
remoteExecution restart
;;
status)
echo "查看状态"
remoteExecution status
;;
*)
echo "无效参数,用法为: $0 {start|stop|restart|status}"
;;
esac
}
#定义执行的命令
function remoteExecution(){
for (( i=101 ; i<=103 ; i++ )) ; do
tput setaf 2
echo ========== elk${i} zkServer.sh $1 ================
tput setaf 9
ssh elk${i} "source /etc/profile.d/zk.sh; zkServer.sh $1 2>/dev/null"
done
}
#调用函数
zookeeperManger
[root@elk101 ~]#
[root@elk101 ~]# chmod +x /usr/local/sbin/manager_zk.sh
5.启动zookeeper集群
[root@elk101 ~]# manager_zk.sh start
6.查看集群状态
[root@elk101 ~]# manager_zk.sh status
使用zkWeb.jar来管理ZK集群:
1.下载zkWeb.jar
[root@elk101 ~]# wget http://192.168.11.253/ElasticStack/day09/softwares/zkWeb-v1.2.1.jar
2.运行jar包
[root@elk101 ~]# nohup java -jar zkWeb-v1.2.1.jar &>/tmp/zkWeb.log &
3.图形使用
监听端口8099
进入图形界面后需要设置名称、集群节点和超时时间