博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZooKeeper在线迁移
阅读量:6671 次
发布时间:2019-06-25

本文共 10057 字,大约阅读时间需要 33 分钟。

在至少有一个Leader存在的前提下,进行Zookeeper在线增量在线减量在线迁移

在全过程中ZooKeeper不停止服务

 

注意事项

首先,当我们要从3台扩充到5台时,应保证集群不停止服务。

3台不停止服务的最低限度是2台X/2+1),而5台的最低限度是3台

  • 我们应该保证,集群中最低有3台ZooKeeper是启动的。

  • 此外,重启时应保证先重启myid最小的机器,由小向大进行重启

  • Leader无论其myid大小,都放到最后重启

因为ZooKeeper的机制中,myid大的会向小的发起连接,而小的不会向大的发起连接。因此如果最后重启myid最小的机器,则其可能无法加入集群

环境情况

五台机器

IP Hostname
10.1.24.110 idc02-kafka-ds-00
10.1.24.111 idc02-kafka-ds-01
10.1.24.112 idc02-kafka-ds-02
10.1.24.113 idc02-kafka-ds-03
10.1.24.114 idc02-kafka-ds-04

JDK

jdk1.7.0_67

ZooKeeper

zookeeper-3.4.6

myid

根据IP自增为1-5

配置文件

 

 

实验过程

配置一个3节点的ZooKeeper

idc02-kafka-ds-00

 

 


idc02-kafka-ds-01

 

 


idc02-kafka-ds-02

 

 

将其扩容为5节点的ZooKeeper

先查看原先的ZooKeeper集群情况

echo mntr|nc localhost 2181

这条4字命令可以查看集群的情况,其中follower的相关数据需要在Leader机器上才能查看

idc02-kafka-ds-01上查看

 

 

启动另外两台机器的Zookeeper

另外两台机器的配置文件

 

 

启动

idc02-kafka-ds-03

 

 


idc02-kafka-ds-04

 

 

再查看集群情况

仍然在idc02-kafka-ds-01上查看

 

 

可以看到zk_followers4,连接到的follower2变为4

而且zk_synced_followers4,说明新加入的2个也都同步好了

接下来我们滚动重启myid1-3的前三台机器

先处理idc02-kafka-ds-00

关闭

如不放心请在关闭其间于Leader机器或后加入的两台机器上监控日志

 

 

修改其配置文件

由原来的

 

 

到新的

 

 

启动

 

 

然后跳过作为Leaderidc02-kafka-ds-01,先处理idc02-kafka-ds-02

关闭

 

 

修改配置文件

 

 

启动

 

 

最后处理原Leaderidc02-kafka-ds-01

关闭

 

 

查看新Leader

ZooKeeper会尽可能的选择myid最大的机器为Leader,因此原本的idc02-kafka-ds-04myid5变为了Leader

 

 

修改配置文件

 

 

启动

 

 

在新的Leader上查看集群情况

 

 

一切正常

到这里,我们已经将原本的3台扩展到了5台,成功了一半。

然后只要将现在的5台再缩小到3台且不包括原本myid1-2的机器,就完成了迁移

将5台缩小回3台

修改idc02-kafka-ds-02

根据前面的注意事项,我们此时5台集群中启动的数量不得少于3台,因此我们需要先修改3-5号机器的配置文件为3台,再关闭1-2号机器

关闭

 

 

修改配置文件为

 

 

启动

 

 

然后修改idc02-kafka-ds-03

关闭

 

 

修改配置文件为

 

 

启动

 

 

最后修改idc02-kafka-ds-04

关闭

 

 

关闭后Leader移动到了myid第二大的idc02-kafka-ds-02

修改配置文件为

 

 

启动

 

 

Leader中查看

 

 

此时的zk_followers为2,说明Leader已经不认1-2号机器了

关闭1-2号机器

关闭idc02-kafka-ds-00

 

 

关闭idc02-kafka-ds-01

 

 

再查看

 

 

没有任何影响

实验成功

转载于:https://www.cnblogs.com/liqing1009/p/7411685.html

你可能感兴趣的文章
Learning Data Structure_5_图(2)
查看>>
HDS G1000和Gx00的端口属性
查看>>
Innodb中mysql如何快速删除2T的大表
查看>>
bash基本命令的使用(笔记)
查看>>
windows_learn 002 用户管理和组策略
查看>>
kafka性能优化
查看>>
含有echart 图表的报表打印
查看>>
域控迁移为08 R2后无法访问Linux服务器共享
查看>>
我的友情链接
查看>>
华为认证考试
查看>>
我的友情链接
查看>>
nosql之redis简单安装与使用
查看>>
System Center Operation Manager 2012(一) 拓扑变化
查看>>
基于LVS的NAT模式实现PHP应用
查看>>
在物质与精神之间实现平衡
查看>>
vim 文本编辑器
查看>>
使用angular做微信内html5开发时碰到的两个坑
查看>>
pvst+
查看>>
关于gradle的入门教程
查看>>
博为峰Java技术题 ——JavaEE Servlet 国际化Ⅰ
查看>>