1、集群搭建(/data/myid为0,1,2, 3)
docker run --name zookeeper-0 --restart always -d -p 2181:2181 \
-p 2888:2888 -p 3888:3888 -v $PATH/zookeeper/conf/zoo.cfg:/conf/zoo.cfg \
-v $PATH/zookeeper/0/data:/data -v $PATH/zookeeper/0/datalog:/datalog \
-v $PATH/zookeeper/0/conf/dynamic:/conf/dynamic zookeeper:3.7.0
docker run --name zookeeper-1 --restart always -d -p 12181:12181 \
-p 12888:12888 -p 13888:13888 -v $PATH/zookeeper/conf/zoo.cfg:/conf/zoo.cfg \
-v $PATH/zookeeper/1/data:/data -v $PATH/zookeeper/1/datalog:/datalog \
-v $PATH/zookeeper/1/conf/dynamic:/conf/dynamic zookeeper:3.7.0
docker run --name zookeeper-2 --restart always -d -p 22181:22181 \
-p 22888:22888 -p 23888:23888 -v $PATH/zookeeper/conf/zoo.cfg:/conf/zoo.cfg \
-v $PATH/zookeeper/2/data:/data -v $PATH/zookeeper/2/datalog:/datalog \
-v $PATH/zookeeper/2/conf/dynamic:/conf/dynamic zookeeper:3.7.0
docker run --name zookeeper-3 --restart always -d -p 32181:32181 \
-p 32888:32888 -p 33888:33888 -v $PATH/zookeeper/conf/zoo.cfg:/conf/zoo.cfg \
-v $PATH/zookeeper/3/data:/data -v $PATH/zookeeper/3/datalog:/datalog \
-v $PATH/zookeeper/3/conf/dynamic:/conf/dynamic zookeeper:3.7.0
2、配置文件
zoo.cfg
reconfigEnabled=true
standaloneEnabled=false
dynamicConfigFile=/conf/dynamic/zoo.cfg.dynamic (文件必须存在)
(第一次配置时应清除/data和/datalog里持久化的内容)
注: standaloneEnabled应该为false,否则会出现KeeperErrorCode =Unimplemented
在/conf/dynamic/zoo.cfg.dynamic里面配置
server.0=172.17.0.1:2888:3888;2181
server.1=172.17.0.1:12888:13888;12181
server.2=172.17.0.1:22888:23888;22181
server.3=172.17.0.1:32888:33888;32181
3、重配置(有acl访问控制,在测试环境下可以加入配置参数skipACL=yes)
登录服务器2
docker exec -it zookeeper-2 zkCli.sh -server 127.0.0.1:22181
查看配置
config
删除服务器0的配置
reconfig -remove 0
在服务器0上查看配置:
查看配置文件(/conf/dynamic/zoo.cfg.dynamic):
增加服务器0的配置:
reconfig -add server.0=172.17.0.1:2888:3888:participant;0.0.0.0:2181
参考资料: