zookeeper 在线扩容缩容
目标:扩容过程中,zookeeper 集群对外提供服务正常
当前集群状态
集群由3个节点构成,每个节点的状态如下:
节点1:角色=follower,myid=1,端口=2181
![](http://upload-images.jianshu.io/upload_images/3532401-e41c298896cb6eb9.png?imageMogr2/auto-orient/strip|imageView2/2/w/859/format/webp)
节点2:角色=follower,myid=2,端口=2182
![](http://upload-images.jianshu.io/upload_images/3532401-5dd31a77af3cded6.png?imageMogr2/auto-orient/strip|imageView2/2/w/856/format/webp)
节点3:角色=leader,myid=3,端口=2183
![](http://upload-images.jianshu.io/upload_images/3532401-abd346fe03d23b33.png?imageMogr2/auto-orient/strip|imageView2/2/w/870/format/webp)
集群在线扩展
的节点数由3个扩展至5个,新增节点4 、节点5 ,对应的zoo.cfg文件如下:
![](http://upload-images.jianshu.io/upload_images/3532401-835bab98aff619c4.png?imageMogr2/auto-orient/strip|imageView2/2/w/581/format/webp)
节点4:完成相关配置后,启动对应zk实例,确认启动ok,验证实例状态
![](http://upload-images.jianshu.io/upload_images/3532401-73e0c6e261940520.png?imageMogr2/auto-orient/strip|imageView2/2/w/829/format/webp)
节点5:完成相关配置后,启动对应zk实例,确认启动ok,验证实例状态
![](http://upload-images.jianshu.io/upload_images/3532401-7def9492dcc7a4f4.png?imageMogr2/auto-orient/strip|imageView2/2/w/931/format/webp)
在leader节点上查看目前状态同步的follower数,确认新增节点已经成功加入集群
![](http://upload-images.jianshu.io/upload_images/3532401-9cc3f0d54db16aac.png?imageMogr2/auto-orient/strip|imageView2/2/w/939/format/webp)
确认新增节点加入集群后,滚动更新原有集群的配置,并重启,这里需要注意,在重启follwer节点的时候并无任何影响,不过在重启leader节点的时候,这个时候会触发一次新的leader选举,zxid最新的默认优先当选新的leader,当zxid相同,myid最大的优先当选新的leader
滚动重启后,节点5的myid最大,荣升为新的集群leader。
zookeeper集群缩容
目标:缩容过程中,确保zookeeper集群对外提供服务正常。
集群缩容
将目前的5个节点缩小至3个,将节点1、节点2 下线,该两个节点都是follower
更新节点3、4、5的配置,并重启,这里先处理follower角色的节点,follower节点的重启无任何影响;更新leader配置并重启会触发一次leader的重新选举
作者:陈先生家的园丁
链接:https://www.jianshu.com/p/26ddaf688a4f