Zookeeper缩容5缩3操作记录(一)
一、测试目标
验证5台zk,将1、2、3配置列表修改为1、2、3逐一重启,然后下线4、5是否可行。
二、验证过程
1、搭建集群,5台机器,3为leader
echo mntr | nc localhost 2181
2、修改1、2、5 的配置逐台重启
修改配置前leader follower为4,
修改1配置后follower为3
修改2配置后follower为2,此时集群状态【1,2】【3,4,5】
修改5的配置后,先不重启,查看集群状态:
发现:2变为leader、1变为follower。
3、4、5报错如下:
This ZooKeeper instance is not currently serving requests
说明,对于3、4来说,超过半数机器不可用。(5未重启)
此时,用zkCli.sh create 一个临时节点 发现仍然可以创建成功,说明对于1、2来讲,1、2、3为一个集群,1、2存活,可写。
然后将5重启,现象如下:
zk2为leader
zk5为leader
发现集群脑裂,2的follower为1,5的follower为3、4
【1、2】【3、4、5】
- 在1、2创建的临时节点/test,在3、4、5查询不到
- 在3、4、5创建临时节点/test2,在1、2 也查询不到
结论
5台zk,降配成3台、逐一修改前三台的配置为1、2、3重启,此时脑裂【1、2、3】为一个集群【4、5】为一个集群,此时的写入4、5的数据,最终会出问题,再下线4、5,集群正常。