在 CentOS 上升级 ZooKeeper 版本,通常有两种常见场景:单机/伪集群 和 生产集群。下面我按最稳妥、可控的方式给你一个通用升级步骤,适用于 CentOS 7 / 8 / Stream。
echo stat | nc 127.0.0.1 2181 | grep version
# 或
/usr/local/zookeeper/bin/zkServer.sh version
cp -r /data/zookeeper /data/zookeeper_bak_$(date +%F)
cp -r /usr/local/zookeeper /usr/local/zookeeper_bak
✅ 数据目录一般在
dataDir(zoo.cfg 中)
cat /usr/local/zookeeper/conf/zoo.cfg
记录:
以 3.8.3 为例(可换成你需要的版本):
cd /usr/local/src
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz
mv apache-zookeeper-3.8.3-bin /usr/local/zookeeper-3.8.3
⚠️ 一定要下载 -bin 版本(已编译)
/usr/local/zookeeper/bin/zkServer.sh stop
确认已停止:
ps -ef | grep zookeeper
ln -sfn /usr/local/zookeeper-3.8.3 /usr/local/zookeeper
修改环境变量(如有):
vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
source /etc/profile
cp /usr/local/zookeeper_bak/conf/zoo.cfg /usr/local/zookeeper/conf/
cp /usr/local/zookeeper_bak/conf/log4j.properties /usr/local/zookeeper/conf/
确保 zoo.cfg 中:
dataDir=/data/zookeeper
⚠️ 不要删除 dataDir 里的 version-2
/usr/local/zookeeper/bin/zkServer.sh start
查看日志:
tail -f /usr/local/zookeeper/logs/zookeeper.log
验证版本:
echo stat | nc 127.0.0.1 2181 | grep version
如果是 ZooKeeper 集群:
顺序建议:
Follower → Follower → Leader
⚠️ 跨大版本(如 3.4 → 3.8)需确认:
ln -sfn /usr/local/zookeeper_bak /usr/local/zookeeper
/usr/local/zookeeper/bin/zkServer.sh start
❌ 不要直接覆盖旧目录
❌ 不要删除 version-2
❌ 不要混用不同大版本客户端
✅ 升级前一定做快照/备份
如果你愿意,可以告诉我:
我可以给你针对性的升级命令。