Zookeeper的扩容和缩容
目的是用三台新的ZK服务器替换老的三台,所以采取先扩容再缩容的方式来进行。
扩容
环境描述
原有ZK服务器计算机名称 | IP地址 | 角色 | myid |
Srv01 | 172.16.100.10 | Follower | 1 |
Srv02 | 172.16.100.20 | Follower | 2 |
Srv03 | 172.16.100.30 | Leader | 3 |
新加入ZK服务器计算机名称 | IP地址 | 角色 | myid |
Srv04 | 172.16.100.40 | 无 | 101 |
Srv05 | 172.16.100.50 | 无 | 102 |
Srv06 | 172.16.100.60 | 无 | 103 |
以上三台的配置文件
步骤一:新ZK加入集群
老ZK服务器的配置文件暂时不变,然后修改2台新ZK服务器的配置文件,如下图
修改好后启动这2台新的ZK服务器。
我们明明准备了3台服务器,为什么要先启动2台呢,因为目前有3台,而且老的配置文件不变,如果你启动3台新的,在这种情况下新的机器无法加入集群,所以要先弄2台。你看上图新机器的配置中最后那台是注释的。2台启动完成查看一下集群,之前100.30是Leader,现在我们依然查看30这台机器,发现它有4个follower,说明新加入的已经生效了。
步骤二:重启原有的ZK服务器
修改原有3台ZK服务器的配置文件,然后重启
三台重启完成后新加入的100.50就变成了Leader因为它的myid最大
到此扩容完毕原来的3台规模的集群变成了5台,下面我就需要进行缩容。
缩容
步骤一:下线一台老的,上线一台新的
此时5台规模的集群允许失败2台,所以我们下线一台。目的是让3台新的都加入到集群中。
首先:关闭Srv01服务器的ZK服务。
其次:修改Srv02、Srv03、Srv04的配置文件如下,然后重启
再次:上线Srv05,然后重启
这时候Leader依然是Srv05服务器
之后一次修改Srv02、Srv03、Srv04服务器的配置文件,然后再次重启,此时Srv05还是Leader。
完成之后修改Srv05然后进行重启。这时候所有的ZK服务器配置文件都一样,而且随着Srv05重启完成后将产生新的Leader,Srv06
步骤二:下线Srv02和Srv03
停止Srv02和Srv03,然修改Srv04和Srv05的配置文件,然后重启
此时Follower变成2个
最后修改Srv06的配置文件然后进行重启,重启完成后Srv05就变成了Leader。
到此缩容完毕。
注意事项
- 迁移过程中始终要保证有ZK服务器可用
- 重启原有ZK服务器的时候要注意查看新ZK服务器中的ZXID是否和原有的一致
- 重启时要先重启myid小的
- 如果有其他服务使用ZK,请在停止老集群前修改哪些服务的连接地址以便他们可以连接到新的ZK上