下面给你一份在 Linux 上升级 ZooKeeper(ZK)的通用、安全做法,适用于大多数生产/测试环境(ZK 3.x → 3.x 或 3.5+ → 3.6/3.7/3.8 等)。
zkServer.sh version
# 或
echo stat | nc 127.0.0.1 2181 | grep version
集群必须逐台滚动升级,不能全停
cp -r /data/zookeeper /data/zookeeper_bak_$(date +%F)
cp -r /opt/zookeeper /opt/zookeeper_bak
关键目录:
dataDir(快照)dataLogDir(事务日志)zoo.cfg官方升级说明:
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
✅ 建议用软链接方式,方便回滚
cp /opt/zookeeper_bak/conf/zoo.cfg /opt/zookeeper/conf/
cp /opt/zookeeper_bak/conf/log4j.properties /opt/zookeeper/conf/
3.5+ 新增示例:
admin.serverPort=8080
如不需要可关闭:
admin.enableServer=false
zkServer.sh stop
zkServer.sh start
zkServer.sh status
echo stat | nc 127.0.0.1 2181
zkServer.sh stop
# 替换二进制
zkServer.sh start
同上
zkServer.sh stop
zkServer.sh start
Leader 一般会自动转移,最后升级 Leader 最安全
# 版本
zkServer.sh version
# 状态
zkServer.sh status
# 日志
tail -f /opt/zookeeper/logs/zookeeper.log
观察是否有:
# 停止新版本
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
如果你愿意,可以告诉我:
我可以给你完全针对性的升级步骤。