zookeeper-集群扩缩容

引言:

作为zk的日常运维人员,难免会遇到服务扩缩容的情况, 因此,我们需要掌握相关流程。

一. 3.5前的版本:

  1. 扩容:

原有节点

|--------------------|------|------|------|----------|
| 主机 | myid | 事务端口 | 选举端口 | 角色 |
| l-zk-test1.xxx.com | 1 | 2888 | 3888 | follower |
| l-zk-test2.xxx.com | 2 | 2888 | 3888 | leader |
| l-zk-test3.xxx.com | 3 | 2888 | 3888 | follower |

新加入两个节点:

|--------------------|---|------|------|
| l-zk-test4.xxx.com | 4 | 2888 | 3888 |
| l-zk-test5.xxx.com | 5 | 2888 | 3888 |

a). 新节点添加配置:

复制代码
tickTime=2000
initLimit=30
syncLimit=5
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/log
clientPort=2181
maxClientCnxns=1024
minSessionTimeout=4000
maxSessionTimeout=40000
autopurge.purgeInterval=24
autopurge.snapRetainCount=5
server.1=l-zk-test1.xxx.com:2888:3888
server.2=l-zk-test2.xxx.com:2888:3888
server.3=l-zk-test3.xxx.com:2888:3888
server.4=l-zk-test4.xxx.com:2888:3888
server.5=l-zk-test5.xxx.com:2888:3888
leaderServes=yes

b). 输入对应myid(echo 4 > /opt/zookeeper/data/myid)后,启动新节点(bin/zkServer.sh start)。

c). 逐台变更老节点配置,重启服务(bin/zkServer.sh restart)

  1. 节点缩容:

对于缩减,相当简单了, 只需要关闭需要下线的节点, 然后逐台变更线上节点配置后重启即可。

  1. 节点故障(替换):

如果采用主机名方式(可以被其他节点解析), 绑定host或者dns 。 这种情况下,之间将node id和主机名改成故障节点的,启动就行。

如果采用ip的方式,那就只能走新增老的, 缩容故障 ,的方式了。

二. 3.5.0之后的版本:

对于3.5.0版本以后,支持重配置动态变更配置。

zookeeper的重配置通过将部分配置移到一个动态文件(dynamicConfigFile)中来实现重配置, 如之前的静态配置为:

复制代码
#vim zoo.cfg
tickTime=2000
initLimit=30
syncLimit=5
dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/log
maxClientCnxns=1024
minSessionTimeout=4000
maxSessionTimeout=40000
autopurge.purgeInterval=24
autopurge.snapRetainCount=5
dynamicConfigFile=./dyn.cfg

#dyn.cfg配置:
server.1=l-zk-test1.xxx.com:2888:3888:participant;2181
server.2=l-zk-test2.xxx.com:2888:3888:participant;2181
server.3=l-zk-test3.xxx.com:2888:3888:participant;2181

部署新节点后,我们通过以下指令就可变更节点:

复制代码
reconfig -remove 2,3 -add server.4=l-zk-test4.xxx.com:2888:3888:participant;2181,5=l-zk-test5.xxx.com:2888:3888:participant;2181

不需要逐台变更配置,重启服务。


深耕运维行业多年,擅长运维体系建设,方案落地。欢迎交流!

"V-x": ywjw996

《 运维经纬 》

相关推荐
EnglishJun6 分钟前
Linux系统编程(二)---学习Linux系统函数
linux·运维·学习
VekiSon14 分钟前
Linux内核驱动——设备树原理与应用
linux·c语言·arm开发·嵌入式硬件
Trouvaille ~19 分钟前
【Linux】进程间关系与守护进程详解:从进程组到作业控制到守护进程实现
linux·c++·操作系统·守护进程·作业·会话·进程组
消失的旧时光-194322 分钟前
第十六课实战:分布式锁与限流设计 —— 从原理到可跑 Demo
redis·分布式·缓存
若水不如远方25 分钟前
分布式一致性(三):共识的黎明——Quorum 机制与 Basic Paxos
分布式·后端·算法
Fcy64834 分钟前
Linux下 进程(二)(进程状态、僵尸进程和孤儿进程)
linux·运维·服务器·僵尸进程·孤儿进程·进程状态
ZFB00011 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——救援模式显示异常
linux·kylin
第七序章1 小时前
【Linux学习笔记】初识Linux —— 理解gcc编译器
linux·运维·服务器·开发语言·人工智能·笔记·学习
迎仔1 小时前
A-总览:GPU驱动运维系列总览
linux·运维
tiantangzhixia1 小时前
Master PDF Linux 平台的 5.9.35 版本安装与自用
linux·pdf·master pdf