zookeeper集群线上机器置换

  事情的初衷是这样的:线上有一个小的zk集群,三台机器。其中有一台机器过了保期,需要置换。所以需要用一台新的机器来替换掉其中的一个zk节点,但是为了不影响

线上的服务,所以不能停zk集群。

  这里不将具体的hostname和ip写出来,姑且将原来的三台机器定义为 a、b和c, 现在b过保,用新机器d来替换掉b,zk集群由abc变成acd,下面将整个过程记录如下:

  先说明一下原来的zk的配置是怎样的(只贴出需要改动的地方):

  server.1=a:2182:2183
  server.2=b:2182:2183   ###这个过保啦,需要替换成d服务器
  server.3=c:2182:2183

 

  1. 先停止b机器上面的zk服务:zkServer.sh stop, 因为现在zk的集群还有过半节点是正常的,所以zk可以正常对外提供服务;

 

  2. 从b机器上上拷贝zk的安装包到d机器的 /opt/zk 目录下(我这里是直接将b服务器上的zk环境拷贝到了d机器对应的文件夹下面), 然后修改d服务器上面上面zk的配置文

    件zoo.cfg, 将:

    server.1=a:2182:2183

    server.2=b:2182:2183

    server.3=c:2182:2183

    修改为:

    server.1=a:2182:2183

    server.3=c:2182:2183

    server.4=d:2182:2183

   保存退出;

 

  3. 在d上创建zk的数据保存目录, /data1/zookeeper/data/ 和 /data2/zookeeper/log/, 在/data1/zookeeper/data/ 中创建一个myid文件,里面内容是server.4中的4: echo "4" > myid,

      然后启动zk服务: zkServer.sh start

 

  4.  等待生成了1到2次快照之后继续进行下面的操作(查看快照的方式: 去 /data1/zookeeper/data/ 目录下查看生成的快照的日期即可.  具体存放数据的目录可能不相同, 要根据具体的

      配置文件来,这些配置在这里不做说明)

 

  5. 查看ac两台zk中,哪一台是follower,这个步骤会操作是follower的那台机器,这里假设a是follower,对a进行如下操作:修改zk的zoo.conf, 将原来的

    server.1=a:2182:2183

    server.2=b:2182:2183

    server.3=c:2182:2183

    修改为:

    server.1=a:2182:2183

    server.3=c:2182:2183

    server.4=d:2182:2183

  保存退出,然后重启a上面的zk服务;

 

  6. 现在开始操作c,步骤同上面的步骤5. 操作完成之后,可以观察到d上的zk会变成leader.(myid最大的会成为leader)

 

  7. 检查每台机器上zk的status是否正常: zkServer.sh status

 

  步骤完毕。按理说严格按照上面的步骤来操作是不会影响zk对外提供服务的。而且我们也这样正常的置换掉了机器~~~~~。

 

  下面是几点注意事项:

  1. 操作是要使用对应的账号,不要稀里糊涂搞错了账号

    2. 要注意目录的权限

    3. leader放在最后操作

 

posted @ 2018-06-25 16:55  无西lc  阅读(860)  评论(0编辑  收藏  举报