Docker version: 20.10.8;Zookeeper version: 3.7
一、容器安装
docker下载zookeeper镜像,而后启动容器
docker run -d -p 2181:2181 --name=zk1 zookeeper:latest
docker run -d -p 2182:2181 --name=zk2 zookeeper:latest
docker run -d -p 2183:2181 --name=zk3 zookeeper:latest
zookeeper数据、日志、配置文件分别在/data,/datalog,/conf目录,有需求可自行配置挂载。
问题:之前尝试用-v进行目录挂载,无法正常启动,原因:CentOS7中的安全模块selinux把权限禁掉了。自己试了–privileged=true参数无作用。其他几种方法感觉太麻烦,所以算了。
二、配置文件修改
之后查看zk1容器IP,zk2、zk3依次类推
docker inspect zk1 | grep IPAddress
获得IP地址:172.17.0.2,172.17.0.3,172.17.0.4
修改/conf/zoo.cfg配置文件,末尾改为
没有vim的话需先在容器内安装vim,依次执行
apt-get update
apt-get install vim
修改/data/myid的值,zk2、zk3依次执行,修改为2、3
echo 1 > /data/myid
三、检查状态
重启容器zk1/zk2/zk3,查看结果,zk1已变为follower,说明部署成功。
[root@VM-0-15-centos ~]# echo stat | nc 172.17.0.2 2181
Zookeeper version: 3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC
Clients:
/172.17.0.1:46600[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: follower
Node count: 5
可能会出现报错:stat is not executed because it is not in the whitelist.
原因:zookeeper.4lw.commands.whitelist,3.4.10中的新增功能
解决办法:进入容器,在/apache-zookeeper-3.7.0-bin/bin目录下的zkServer.sh脚本中添加代码。
ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
可加在如下位置,重启后即可。