ZooKeeper在线迁移
在至少有一个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
配置文件
|
1
2
3
4
|
server.1=10.1.24.110:2888:3888
server.2=10.1.24.111:2888:3888
server.3=10.1.24.112:2888:3888
|
实验过程
配置一个3节点的ZooKeeper
idc02-kafka-ds-00:
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-00bin]$./zkServer.shstatus
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:follower
|
idc02-kafka-ds-01:
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-01 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader
|
idc02-kafka-ds-02:
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-02bin]$./zkServer.shstatus
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:follower
|
将其扩容为5节点的ZooKeeper
先查看原先的ZooKeeper集群情况
echo mntr|nc localhost 2181
这条4字命令可以查看集群的情况,其中follower的相关数据需要在Leader机器上才能查看
在idc02-kafka-ds-01上查看
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[hadoop@idc02-kafka-ds-01 bin]$ echo mntr|nc localhost 2181
zk_version 3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency 0
zk_max_latency 0
zk_min_latency 0
zk_packets_received 3
zk_packets_sent 2
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 4
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 27
zk_open_file_descriptor_count 27
zk_max_file_descriptor_count 65535
zk_followers 2
zk_synced_followers 2
zk_pending_syncs 0
|
启动另外两台机器的Zookeeper
另外两台机器的配置文件
|
1
2
3
4
5
6
|
server.1=10.1.24.110:2888:3888
server.2=10.1.24.111:2888:3888
server.3=10.1.24.112:2888:3888
server.4=10.1.24.113:2888:3888
server.5=10.1.24.114:2888:3888
|
启动
idc02-kafka-ds-03:
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-03 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
|
idc02-kafka-ds-04:
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-04bin]# ./zkServer.sh status
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:follower
|
再查看集群情况
仍然在idc02-kafka-ds-01上查看
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[hadoop@idc02-kafka-ds-01 bin]$ echo mntr|nc localhost 2181
zk_version 3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency 0
zk_max_latency 0
zk_min_latency 0
zk_packets_received 4
zk_packets_sent 3
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 4
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 27
zk_open_file_descriptor_count 31
zk_max_file_descriptor_count 65535
zk_followers 4
zk_synced_followers 4
zk_pending_syncs 0
|
可以看到zk_followers为4,连接到的follower从2变为4了
而且zk_synced_followers为4,说明新加入的2个也都同步好了
接下来我们滚动重启myid为1-3的前三台机器
先处理idc02-kafka-ds-00
关闭
如不放心请在关闭其间于
Leader机器或后加入的两台机器上监控日志
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-00bin]$./zkServer.shstop
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stoppingzookeeper...STOPPED
|
修改其配置文件
由原来的
|
1
2
3
4
|
server.1=10.1.24.110:2888:3888
server.2=10.1.24.111:2888:3888
server.3=10.1.24.112:2888:3888
|
到新的
|
1
2
3
4
5
6
|
server.1=10.1.24.110:2888:3888
server.2=10.1.24.111:2888:3888
server.3=10.1.24.112:2888:3888
server.4=10.1.24.113:2888:3888
server.5=10.1.24.114:2888:3888
|
启动
|
1
2
3
4
5
6
7
8
9
|
[hadoop@idc02-kafka-ds-00 bin]$ ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@idc02-kafka-ds-00 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
|
然后跳过作为Leader的idc02-kafka-ds-01,先处理idc02-kafka-ds-02
关闭
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-02bin]$./zkServer.shstop
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stoppingzookeeper...STOPPED
|
修改配置文件
|
1
2
3
4
5
6
|
server.1=10.1.24.110:2888:3888
server.2=10.1.24.111:2888:3888
server.3=10.1.24.112:2888:3888
server.4=10.1.24.113:2888:3888
server.5=10.1.24.114:2888:3888
|
启动
|
1
2
3
4
5
6
7
8
9
|
[hadoop@idc02-kafka-ds-02bin]$./zkServer.shstart
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Startingzookeeper...STARTED
[hadoop@idc02-kafka-ds-02bin]$./zkServer.shstatus
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:follower
|
最后处理原Leader的idc02-kafka-ds-01
关闭
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-01 bin]$ ./zkServer.sh stop
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
|
查看新Leader
ZooKeeper会尽可能的选择myid最大的机器为Leader,因此原本的idc02-kafka-ds-04其myid为5变为了Leader
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-04bin]# ./zkServer.sh status
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:leader
|
修改配置文件
|
1
2
3
4
5
6
|
server.1=10.1.24.110:2888:3888
server.2=10.1.24.111:2888:3888
server.3=10.1.24.112:2888:3888
server.4=10.1.24.113:2888:3888
server.5=10.1.24.114:2888:3888
|
启动
|
1
2
3
4
5
6
7
8
9
|
[hadoop@idc02-kafka-ds-01bin]$./zkServer.shstart
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Startingzookeeper...STARTED
[hadoop@idc02-kafka-ds-01bin]$./zkServer.shstatus
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:follower
|
在新的Leader上查看集群情况
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[hadoop@idc02-kafka-ds-04 bin]# echo mntr|nc localhost 2181
zk_version 3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency 1
zk_max_latency 4
zk_min_latency 0
zk_packets_received 12
zk_packets_sent 11
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 4
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 27
zk_open_file_descriptor_count 33
zk_max_file_descriptor_count 65535
zk_followers 4
zk_synced_followers 4
zk_pending_syncs 0
|
一切正常
到这里,我们已经将原本的3台扩展到了5台,成功了一半。
然后只要将现在的5台再缩小到3台且不包括原本
myid为1-2的机器,就完成了迁移
将5台缩小回3台
修改idc02-kafka-ds-02
根据前面的注意事项,我们此时5台集群中启动的数量不得少于3台,因此我们需要先修改
3-5号机器的配置文件为3台,再关闭1-2号机器
关闭
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-02bin]$./zkServer.shstop
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stoppingzookeeper...STOPPED
|
修改配置文件为
|
1
2
3
4
|
server.3=10.1.24.110:2888:3888
server.4=10.1.24.111:2888:3888
server.5=10.1.24.112:2888:3888
|
启动
|
1
2
3
4
5
6
7
8
9
|
[hadoop@idc02-kafka-ds-02bin]$./zkServer.shstart
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Startingzookeeper...STARTED
[hadoop@idc02-kafka-ds-02bin]$./zkServer.shstatus
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:follower
|
然后修改idc02-kafka-ds-03
关闭
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-03 bin]# ./zkServer.sh stop
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
|
修改配置文件为
|
1
2
3
4
|
server.3=10.1.24.110:2888:3888
server.4=10.1.24.111:2888:3888
server.5=10.1.24.112:2888:3888
|
启动
|
1
2
3
4
5
6
7
8
9
|
[hadoop@idc02-kafka-ds-03 bin]$ ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@idc02-kafka-ds-03 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
|
最后修改idc02-kafka-ds-04
关闭
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-04bin]$./zkServer.shstop
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stoppingzookeeper...STOPPED
|
关闭后
Leader移动到了myid第二大的idc02-kafka-ds-02上
修改配置文件为
|
1
2
3
4
|
server.3=10.1.24.110:2888:3888
server.4=10.1.24.111:2888:3888
server.5=10.1.24.112:2888:3888
|
启动
|
1
2
3
4
5
6
7
8
9
|
[hadoop@idc02-kafka-ds-04bin]$./zkServer.shstart
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Startingzookeeper...STARTED
[hadoop@idc02-kafka-ds-04bin]$./zkServer.shstatus
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode:follower
|
在Leader中查看
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[hadoop@idc02-kafka-ds-03 bin]$ echo mntr|nc localhost 2181
zk_version 3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency 0
zk_max_latency 0
zk_min_latency 0
zk_packets_received 4
zk_packets_sent 3
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 4
zk_watch_count 0
zk_ephemerals_count 0
zk_approximate_data_size 27
zk_open_file_descriptor_count 27
zk_max_file_descriptor_count 65535
zk_followers 2
zk_synced_followers 2
zk_pending_syncs 0
|
此时的zk_followers为2,说明Leader已经不认1-2号机器了
关闭1-2号机器
关闭idc02-kafka-ds-00
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-00bin]$./zkServer.shstop
JMXenabledbydefault
Usingconfig:/usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stoppingzookeeper...STOPPED
|
关闭idc02-kafka-ds-01
|
1
2
3
4
5
|
[hadoop@idc02-kafka-ds-01 bin]$ ./zkServer.sh stop
JMX enabled by default
Using config: /usr/local/webserver/zookeeper-3.4.6/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
|
再查看
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[hadoop@idc02-kafka-ds-03bin]$echomntr|nclocalhost2181
zk_version 3.4.6-1569965,builton02/20/201409:09GMT
zk_avg_latency 0
zk_max_latency 0
zk_min_latency 0
zk_packets_received5
zk_packets_sent4
zk_num_alive_connections 1
zk_outstanding_requests0
zk_server_stateleader
zk_znode_count 4
zk_watch_count 0
zk_ephemerals_count0
zk_approximate_data_size 27
zk_open_file_descriptor_count 27
zk_max_file_descriptor_count 65535
zk_followers 2
zk_synced_followers2
zk_pending_syncs 0
|
没有任何影响
实验成功
ZooKeeper在线迁移的更多相关文章
- 基于本地存储的kvm虚拟机在线迁移
基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是基于本地存储的热迁移 动态块迁 ...
- Oracle 12C 新特性之表分区或子分区的在线迁移
Oracle 12c 中迁移表分区或子分区到不同的表空间不再需要复杂的过程.与之前版本中未分区表进行在线迁移类似,表分区或子分区可以在线或是离线迁移至一个不同的表空间.当指定了 ONLINE 语句,所 ...
- Redis Cluster高可用集群在线迁移操作记录【转】
之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...
- OpenStack平台虚拟机实例在线迁移失败问题
一.在线迁移时提示如下的报错 二.原因分析 通过kolla-ansible部署queens版本时,因为OEM的机器设备的UUID记录的一致,导致迁移时识别的是自身机器的UUID,导致迁移失败 三.问题 ...
- Redis Cluster 4.0高可用集群安装、在线迁移操作记录
之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...
- Redis Cluster在线迁移
由于之前的redis cluster物理硬件性能不足.决定升级到更好的服务器上.考虑到redis是核心生产数据库,决定在线迁移,迁移过程,不中断服务. 下面是测试环境的完成迁移步骤:1. 原环境(测试 ...
- Redis Cluster高可用集群在线迁移操作记录
之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...
- MongoDB副本集配置系列五:副本集的在线迁移
MongoDB副本集的在线迁移 查看当前集群的状态: { "setName" : "gechongrepl", "setVersion" : ...
- 开启vmotion,实现虚拟机可以在线迁移的选项
先决条件: 1.vcenter5.5 2.vmotion服务开启 3.分布式交换机已经部署完毕 4.虚拟机在线迁移必须在web管理下,在vclient不可以
随机推荐
- 【Alpha】阶段第一次Scrum Meeting
[Alpha]阶段第一次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 后端接口开发 测试接口,修正bug 赵智源 撰写测试方案书 部署实际任务和编写测试样例 ...
- mininet实验 可视化界面形成拓扑
参考博客一 参考博客二 实验目的 mininet中内置了一个mininet可视化工具:miniedit.miniedit在mininet/mininet/examples目录下提供miniedit.p ...
- C++寒假计划
课程 西北工业大学的c++程序设计 理由 这个课程里的内容都比较详细,能比较全面的讲解C++,我们是从C过渡到C++的,所以我之前看了阚道洪的面向对象程序设计的课程,他讲解了两者的差别,还有C++对C ...
- debian 安装kde
今天用最小安装安装了一台debian虚拟机,想要安装kde桌面,总是安装不上,使用语句 apt-get install kde apt-get install kde4 都试了,不行.最终查看debi ...
- erlang节点互相ping,一个能ping通,另外一个不行。
今天发现一个问题,2个erlang节点,1个主动ping另外一个不通,然后等待另外一个ping过来,2个节点才连通.记录一下. 首先,erlang节点的cookie是一致的.查了文档,cookie一致 ...
- 重写JdbcRDD支持Sql命名参数和分区
Spark提供的JdbcRDD很不好用,没法指定命名参数,而且必须要提供两个Long类型的参数表示分区的范围,如果数据表没有long类型的字段或者不需要条件,那就不能用JdbcRDD了.这里我简单重写 ...
- BurpSuite 激活破解
1.下载软件关于Burp Suite, 它是进行Web应用安全测试的一个集成平台,无缝融合各种安全工具并提供全面的接口适配,支持完整的Web应用测试流程,从最初的映射和应用程序的攻击面分析到发现和利用 ...
- zookeeper学习之集群环境搭建
一.安装环境 zookeeper:3.4.6 JDK:1.8 linux:centos6.5 64位 主机: server0:192.168.0.224server1:192.168.0.225se ...
- LDPC译码器的FPGA实现
应用笔记 V0.0 2015/3/17 LDPC译码器的FPGA实现 概述 本文将介绍LDPC译码器的FPGA实现,译码器设计对应CCSDS131x1o1s文档中提到的适用于深空通信任务的LD ...
- CIR,CBS,EBS,PIR,PBS 名词解释 令牌桶应用
为了达到上述目的,我们需要对进入网络的流量进行监督,实现CAR(Committed Access Rate). CAR:将进入网络的用户流量的速率限制在约定的范围之内,从而避免引起网络拥塞. CIR( ...