温馨提示×

linux zookeeper如何升级

小樊
70
2026-10-01 13:20:20
栏目: 智能运维

下面给你一份在 Linux 上升级 ZooKeeper(ZK)的通用、安全做法,适用于大多数生产/测试环境(ZK 3.x → 3.x 或 3.5+ → 3.6/3.7/3.8 等)。


一、升级前准备(非常重要)

1. 查看当前版本

zkServer.sh version
# 或
echo stat | nc 127.0.0.1 2181 | grep version

2. 确认集群模式

  • 单机(standalone)
  • 集群(ensemble,通常 3 / 5 台)

集群必须逐台滚动升级,不能全停

3. 备份数据(必须)

cp -r /data/zookeeper /data/zookeeper_bak_$(date +%F)
cp -r /opt/zookeeper /opt/zookeeper_bak

关键目录:

  • dataDir(快照)
  • dataLogDir(事务日志)
  • 配置文件 zoo.cfg

4. 查看官方兼容性

  • ZooKeeper 小版本升级一般兼容
  • 大版本(如 3.4 → 3.5+)需注意:
    • 配置格式变化
    • 默认端口变化(3.5+ 增加 admin server)

官方升级说明:

https://zookeeper.apache.org/doc/

二、下载并安装新版本

cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz
tar -xzf apache-zookeeper-3.8.3-bin.tar.gz
ln -snf /opt/apache-zookeeper-3.8.3-bin /opt/zookeeper

✅ 建议用软链接方式,方便回滚


三、配置文件处理(关键)

1. 复制原配置

cp /opt/zookeeper_bak/conf/zoo.cfg /opt/zookeeper/conf/
cp /opt/zookeeper_bak/conf/log4j.properties /opt/zookeeper/conf/

2. 检查 zoo.cfg 变化

3.5+ 新增示例:

admin.serverPort=8080

如不需要可关闭:

admin.enableServer=false

四、升级方式(分场景)


✅ 场景 1:单机 ZooKeeper

停止服务

zkServer.sh stop

启动新版本

zkServer.sh start

校验

zkServer.sh status
echo stat | nc 127.0.0.1 2181

✅ 场景 2:集群(推荐滚动升级)

步骤(以 3 节点为例)

1️⃣ 升级 Follower A

zkServer.sh stop
# 替换二进制
zkServer.sh start

2️⃣ 升级 Follower B

同上

3️⃣ 最后升级 Leader

zkServer.sh stop
zkServer.sh start

Leader 一般会自动转移,最后升级 Leader 最安全


五、升级后检查

# 版本
zkServer.sh version

# 状态
zkServer.sh status

# 日志
tail -f /opt/zookeeper/logs/zookeeper.log

观察是否有:

  • Connection errors
  • Leader election 异常
  • 数据目录权限问题

六、回滚方案(保险)

# 停止新版本
zkServer.sh stop

# 恢复旧版本
ln -snf /opt/zookeeper_bak /opt/zookeeper
zkServer.sh start

七、常见坑提醒

⚠️ 不要直接覆盖 dataDir
⚠️ 3.4 → 3.5+ 不向下兼容
⚠️ JDK 版本要求(3.6+ 建议 JDK 8+)
⚠️ 防火墙 / SELinux 可能影响 admin server


如果你愿意,可以告诉我:

  • 当前 ZK 版本
  • 是否集群
  • Linux 发行版(CentOS / Ubuntu)

我可以给你完全针对性的升级步骤。

0 踩