赞
踩
(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]
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
进入图形界面后需要设置名称、集群节点和超时时间
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。