zookeeper集群只是需要3个服务器分别安装zookeeper服务。
【说明】服务器zookeeper个数必须为奇数
4.1 安装zookeeper软件包
先将zookeeper-3.4.10.tar.gz上传到目标服务器上/opt/
$ cd /opt /
$ tar zxvf zookeeper-3.4.6.tar.gz
4.2 配置zookeeper集群
$ cd zookeeper-3.4.6/conf
$ cp zoo_sample.cfg zoo.cfg
$ vi zoo.cfg
对zoo.cfg文件需要配置的项如下:
配置名称 | 说明 | 默认配置 |
dataDir | Zookeeper数据存储目录 | [zookeeper安装目录] /data (修改配置) 例如: dataDir=../data |
dataLogDir | 日志目录 | [zookeeper安装目录]/dataLog (增加配置) 例如: dataLogDir=../dataLog |
server.1 | 第一个zookeeper IP和端口 | [第一个zookeeper的IP]:2888:3888(增加配置) 例如: server.1= nms.zookeeper01:2888:3888 |
server.2 | 第二个zookeeper IP和端口 | [第二个zookeeper的IP]:2888:3888(增加配置) 例如: server.2= nms.zookeeper02:2888:3888 |
server.3 | 第三个zookeeper IP和端口 | [第三个zookeeper的IP]:2888:3888(增加配置) 例如: server.3= nms.zookeeper03:2888:3888 |
【说明】默认配置中2888和3888端口不用修改,该端口的作用是zookeeper集群之间通讯
分别设置每个服务器上的zookeeper服务的myid (需要手动创建data目录及配置文件myid)
$ cd /opt / zookeeper-3.4.6/data
$ vi myid
【说明】配置文件中仅有一个字符,即zookeeper的id。 注意必须一一对应
例如: server.1的id在服务器nms.zookeeper01里,myid里面写1。
server.2的id在服务器nms.zookeeper02里,myid里面写2。
server.3的id在服务器nms.zookeeper03里,myid里面写3。
创建dataLog目录
$ cd /opt /zookeeper-3.4.6
$ mkdir dataLog
4.3 启动zookeeper集群
依次登录到3个服务器上执行如下命令:
$ cd /opt/zookeeper-3.4.6/bin
$ ./zkServer.sh start
【说明】集群的时候启动第一个zookeeper可能会出现如下警告,忽略即可,3个节点全部启动后再验证即可。
[root@yxdh4f-h03-app-proxy02 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/neusoft/app/zookeeper-3.4.10/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
验证zookeeper集群
依次登录到3个服务器上执行如下命令:
$ cd /opt/zookeeper-3.4.6/bin
$ ./zkServer.sh status
如果出现如下截图的样子代表集群启动成功:
(1)其中一个服务器为leader
(2)其他2个服务器为follower
【注意】验证不成功可能的原因:
(1)没有关闭防火墙服务,具体操作参考第二章 1.3 章节
(2)文件的所属用户组不对,导致配置文件不可读
如果在root用户下启动zookerper服务,切换回neusoft用户那么zookeeper所属用户组就变成root了,而不是neusoft,所以需要执行如下命令修改:chown -R neusoft:neusoft /home/neusoft/app/zookeeper-3.4.6
4.5 修复ZooKeeper未授权访问漏洞
进入的zookeeper的bin目录
# cd /home/neusoft/app/zookeeper-3.4.6/bin
设置ALC访问规则
# ./zkCli.sh -server 127.0.0.1:2181
进入到zookeeper交互会话后执行如下命令:
setAcl / digest:admin:11qq!!QQ33ee##EE:cdrwa
过程见如下图: