Zookeeper 在线迁移
背景
最近团队新接了其他部门的一个系统的数据库和中间件维护,其中包括 Zookeeper,需要我来出迁移方案并实施。其实,Zookeepr 的迁移之前我就给业务做过,但是当时也没有把完整过程记录下来,只写了一个大概的迁移方案,还丢了,所以这次又得重新写方案并且在验证一遍,想着还是把方案给记录下来,后面肯定还是会用到,本次迁移是热迁移,ZK 服务不中断。
说明
现有一个三节点集群,信息如下:
配置文件如下:
新集群准备了三台服务器,信息如下:
热迁移方案
我们都知道 ZK 集群可用的基本要求是半数以上节点处于存活状态,为了集群不中断服务,迁移步骤为如下:
扩容 4 和 5 两个节点,新集群由 1,2,3,4,5 组成
缩容 1 和 2 两个节点,新集群由 3,4,5 组成
扩容 6 这个节点,新集群由 3,4,5,6 组成
业务切换并验证,配置 4,5,6 三个节点(关键)
缩容 3 这个节点,集群由 4,5,6 组成,完成迁移
具体步骤
扩容 4 和 5 两个节点,新集群由 1,2,3,4,5 组成
下载安装包,配置 myid(略),修改 4 和 5 的配置文件如下并启动,1,2,3 节点暂时不动
查看集群状态,确认节点 4 和 5 加入集群并完成了数据同步
修改 1,2,3 的配置如下,依次重启节点 1,3,2(2 是 leader),过程中集群一直可用,仅仅在重启节点 2 的时候发生主节点选举,已有连接会断掉,但是客户端会重连,服务一直可用
直接停止节点 1,2,完成缩容,新集群由 3,4,5 组成
扩容 6 这个节点,新集群由 3,4,5,6 组成
修改 6 的配置文件如下,启动节点 6,查看集群状态,确认节点 6 加入集群并完成了数据同步
业务切换并验证,配置 4,5,6 三个节点,确认连接正常,业务运行正常
缩容 3 这个节点,集群由 4,5,6 组成,完成迁移
修改 4,5 的配置文件,集群配置为 4,5,6 的地址,依次重启节点 4,5(5 是 leader)
停止节点 3,over
总结
本文章目的为说明清楚迁移过程,给大家提供一个经过实战可行的方案,如果问为什么要这么做,原理是什么,有没有其他方案,比如直接扩容 3 个节点行不行,后面我会在出文章专门介绍。
版权声明: 本文为 InfoQ 作者【阿骆麦迪】的原创文章。
原文链接:【http://xie.infoq.cn/article/99b23e33e5d95b9b99c64effc】。文章转载请联系作者。
评论