Zookeeper 动态扩容与缩减节点

温馨提醒

环境

主机名主机IP
zk01192.168.1.195
zk02192.168.1.199
zk03192.168.1.203
zk04192.168.1.204

部署 Zookeeper 集群

下载安装包

1
https://zookeeper.apache.org

配置 zk01、zk02、zk03

修改三个节点的主配置文件 vim /data/zookeeper/conf/zoo.cfg

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
autopurge.purgeInterval=1
initLimit=10
syncLimit=5
skipACL=yes				# 跳过acl检查,如果不设置成yes,则需要superuser权限才能执行reconfig
maxClientCnxns=2000
tickTime=2000
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/log
4lw.commands.whitelist=*		# zookeeper可以响应的四个字母单次的命令有哪些,*表示所有四个字母命令
reconfigEnabled=true 			# 启用该功能后,zookeeper可以动态的增加服务器列表
dynamicConfigFile=/data/program/zookeeper/conf/zoo.cfg.dynamic

修改三个节点的动态配置文件 vim /data/zookeeper/conf/zoo.cfg.dynamic

1
2
3
server.1=192.168.1.195:2888:3888;0.0.0.0:12181
server.2=192.168.1.197:2888:3888;0.0.0.0:12181
server.3=192.168.1.203:2888:3888;0.0.0.0:12181

创建三个节点的 myid 文件

1
2
3
echo 1 > /data/zookeeper/data/myid		# zk01执行
echo 2 > /data/zookeeper/data/myid		# zk02执行
echo 3 > /data/zookeeper/data/myid		# zk03执行

启动三个节点的 zookeeper 服务

1
2
3
/data/zookeeper/bin/zkServer.sh start		# 启动zookeeper
/data/zookeeper/bin/zkServer.sh stop		# 停止zookeeper
/data/zookeeper/bin/zkServer.sh status		# 查看启动状态

动态扩容节点(添加 zk04 节点)

修改 zk04 节点的配置文件

vim /data/zookeeper/conf/zoo.cfg.dynamic

1
2
3
4
server.1=192.168.1.195:2888:3888;0.0.0.0:12181
server.2=192.168.1.197:2888:3888;0.0.0.0:12181
server.3=192.168.1.203:2888:3888;0.0.0.0:12181
server.4=192.168.1.204:2888:3888;0.0.0.0:12181

创建 myid 文件

1
echo 4 > /data/zookeeper/data/myid

启动 zk04 服务

1
/data/zookeeper/bin/zkServer.sh start

添加 zk04 到集群

1
2
3
/data/zookeeper/bin/zkCli.sh -server 127.0.0.1:12181
[zk: 127.0.0.1:12181(CONNECTED) 1] reconfig -add 4=192.168.1.204:2888:3888;0.0.0.0:12181
[zk: 127.0.0.1:12181(CONNECTED) 1] config

执行完 reconfig 命令后,所有节点都生成一份新的配置文件 zoo.cfg.dynamic.xxxxx,并且 zoo.cfg 指向该dynamic文件

动态缩减节点(删除 zk01 节点)

在任意一节点执行以下命令,删除 zk01 节点

1
2
3
/data/zookeeper/bin/zkCli.sh -server 127.0.0.1:12181
[zk: 127.0.0.1:12181(CONNECTED) 1] reconfig -remove 1
[zk: 127.0.0.1:12181(CONNECTED) 1] config

停止 zk01 节点

1
/data/zookeeper/bin/zkServer.sh stop