zookeeper集群centos上如何扩容
导读:CentOS 上 ZooKeeper 集群扩容实操指南 一 扩容方式与版本选择 建议优先使用 ZooKeeper 3.5+ 的 reconfig 动态重配置,可在运行中新增节点,通常无需重启整个集群,停机窗口最小。配置要点:在 zoo.c...
CentOS 上 ZooKeeper 集群扩容实操指南
一 扩容方式与版本选择
- 建议优先使用 ZooKeeper 3.5+ 的 reconfig 动态重配置,可在运行中新增节点,通常无需重启整个集群,停机窗口最小。配置要点:在 zoo.cfg 中开启 reconfigEnabled=true、将 standaloneEnabled=false,并使用“server.X=IP:2888:3888:participant; clientPort”的扩展语法。适合生产环境在线扩容。
- 对于 3.4.x 等不支持 reconfig 的版本,可采用“滚动重启”方式扩容:先并行启动新节点加入现有集群,待数据同步完成后,再逐个(按 myid 从小到大)重启原有节点,使所有节点配置保持一致。该方式需要短暂停机窗口。
二 前置准备与网络要求
- 基础环境:所有节点统一 JDK 版本,完成 NTP 时钟同步,并按需调整 ulimit/file descriptor 等系统参数;生产环境建议关闭 SELinux 或按策略放行,防火墙仅开放必要端口。
- 网络与端口:确保各节点间 TCP 2888/3888 互通,客户端访问 2181 开放;如使用 firewalld,可新增服务或端口策略并持久化。
- 版本一致:新旧节点 ZooKeeper 版本保持一致,避免因协议/特性差异导致异常。
三 标准步骤 3.5 及以上使用 reconfig 动态扩容(推荐)
- 配置新节点
- 拷贝现有集群安装包至新节点,编辑 zoo.cfg:
- 开启:reconfigEnabled=true、standaloneEnabled=false
- 保留现有 server 列表,新增待加入节点,例如:server.4=10.0.0.4:2888:3888:participant; 2181
- 在 dataDir 下创建 myid,内容为新增的序号(如:4)
- 启动新节点:bin/zkServer.sh start
- 拷贝现有集群安装包至新节点,编辑 zoo.cfg:
- 动态加入集群
- 连接任一在役节点执行 reconfig,增加新成员(示例将 server.4 加入):
- 使用 CLI:
- addauth digest < admin_user> :< admin_pwd> (如启用鉴权)
- reconfig -add server.4=10.0.0.4:2888:3888:participant; 2181
- 或使用 HTTP API(需启用四字命令白名单/管理员账户):
- echo “reconfig -add server.4=10.0.0.4:2888:3888:participant; 2181” | nc 127.0.0.1 2181
- 使用 CLI:
- 连接任一在役节点执行 reconfig,增加新成员(示例将 server.4 加入):
- 验证
- 在 Leader 上查看成员与同步情况:
- echo mntr | nc 127.0.0.1 2181 | egrep “zk_synced_followers|zk_followers”
- echo srvr | nc 127.0.0.1 2181(观察 Mode 与各节点信息)
- 新节点应显示为 follower 并参与同步,客户端连接串可逐步加入新节点地址。
- 在 Leader 上查看成员与同步情况:
四 兼容步骤 3.4.x 滚动重启扩容(无 reconfig 时)
- 准备新节点
- 安装同版本 ZooKeeper,配置 zoo.cfg 包含“现有全部 server 列表 + 新节点”,如:server.4=10.0.0.4:2888:3888
- 在 dataDir 下写入 myid=4,先不启动
- 分批启动新节点
- 启动新节点,观察其通过 2888/3888 加入集群并同步数据;在 Leader 上确认 zk_followers / zk_synced_followers 增加
- 滚动重启原有节点
- 为避免脑裂与选主异常,按 myid 从小到大 依次重启原有节点(每次仅停一台,确认 Mode: follower/leader 恢复后再操作下一台)
- 验证
- 集群规模达到预期,Leader 唯一,synced_followers 与成员数一致;客户端连接串可逐步包含新节点。
五 验证与回滚要点
- 关键检查
- 成员与角色:echo srvr | nc IP 2181;一致性:echo mntr | nc IP 2181 | egrep “zk_followers|zk_synced_followers”
- 配置一致性:各节点 zoo.cfg 的 server 列表应完全一致(reconfig 场景以动态配置为准)
- 时钟与 GC:确认 NTP 正常、JVM GC 无异常长停顿
- 常见问题与处理
- 出现 两个 Leader:多为配置不一致或重启顺序不当,回滚到最近稳定配置并按 myid 从小到大重启
- 新节点无法加入:核对 myid 唯一、server.X 序号与 IP 端口、网络连通性(2888/3888)
- 客户端抖动:扩容期间保持会话,使用 临时节点 验证会话保持能力;逐步将连接串切换到新节点
- 回滚建议
- reconfig 方式:使用 -remove 将新增节点移除,恢复至扩容前成员列表
- 滚动重启方式:按 myid 逆序回滚配置并重启,确保每次变更后 Leader 唯一且 quorum 满足。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: zookeeper集群centos上如何扩容
本文地址: https://pptw.com/jishu/786099.html
