欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Zookeeper在线迁移方案(适用于扩容场景)

程序员文章站 2022-06-19 10:57:34
...

背景

最近团队新接了其他部门的一个系统的数据库和中间件维护,其中包括Zookeeper,需要我来出迁移方案并实施。其实,Zookeepr的迁移之前我就给业务做过,但是当时也没有把完整过程记录下来,只写了一个大概的迁移方案,还丢了,所以这次又得重新写方案并且在验证一遍,想着还是把方案给记录下来,后面肯定还是会用到,本次迁移是热迁移,ZK服务不中断。

说明

现有一个三节点集群,信息如下:

myid ip role
1 172.30.10.13 follower
2 172.30.10.14 leader
3 172.30.10.16 follower

配置文件如下:

server.1=172.30.10.13:2888:3888
server.2=172.30.10.14:2888:3888
server.3=172.30.10.16:2888:3888

新集群准备了三台服务器,信息如下:

myid ip
4 172.30.8.226
5 172.30.8.252
6 172.30.9.245

迁移方案

我们都知道ZK集群可用的基本要求是半数以上节点处于存活状态,为了集群不中断服务,迁移步骤为如下:

  1. 扩容4和5两个节点,新集群由1,2,3,4,5组成
  2. 缩容1和2两个节点,新集群由3,4,5组成
  3. 扩容6这个节点,新集群由3,4,5,6组成
  4. 业务切换并验证,配置4,5,6三个节点(关键)
  5. 缩容3这个节点,集群由4,5,6组成,完成迁移

具体步骤

扩容4和5两个节点,新集群由1,2,3,4,5组成
  1. 下载安装包,配置myid(略),修改4和5的配置文件如下并启动,1,2,3节点暂时不动

    server.1=172.30.10.13:2888:3888
    server.2=172.30.10.14:2888:3888
    server.3=172.30.10.16:2888:3888
    server.4=172.30.8.226:2888:3888
    server.5=172.30.8.252:2888:3888
    
  2. 查看集群状态,确认节点4和5加入集群并完成了数据同步

  3. 修改1,2,3的配置如下,依次重启节点1,3,2(2是leader),过程中集群一直可用,仅仅在重启节点2的时候发生主节点选举,已有连接会断掉,但是客户端会重连,服务一直可用

    server.1=172.30.10.13:2888:3888
    server.2=172.30.10.14:2888:3888
    server.3=172.30.10.16:2888:3888
    server.4=172.30.8.226:2888:3888
    server.5=172.30.8.252:2888:3888
    
直接停止节点1,2,完成缩容,新集群由3,4,5组成
扩容6这个节点,新集群由3,4,5,6组成
  1. 修改6的配置文件如下,启动节点6,查看集群状态,确认节点6加入集群并完成了数据同步

    server.4=172.30.8.226:2888:3888
    server.5=172.30.8.252:2888:3888
    server.6=172.30.9.245:2888:3888
    
业务切换并验证,配置4,5,6三个节点,确认连接正常,业务运行正常
缩容3这个节点,集群由4,5,6组成,完成迁移
  1. 修改4,5的配置文件,集群配置为4,5,6的地址,依次重启节点4,5(5是leader)
  2. 停止节点3,over

总结

本文章目的为说明清楚迁移过程,给大家提供一个经过实战可行的方案,如果问为什么要这么做,原理是什么,有没有其他方案,比如直接扩容3个节点行不行,后面我会在出文章专门介绍。