温馨提示×

centos怎样升级zookeeper版本

小樊
50
2026-09-30 13:22:37
栏目: 智能运维

在 CentOS 上升级 ZooKeeper 版本,通常有两种常见场景:单机/伪集群 和 生产集群。下面我按最稳妥、可控的方式给你一个通用升级步骤,适用于 CentOS 7 / 8 / Stream。


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

1. 查看当前版本

echo stat | nc 127.0.0.1 2181 | grep version
# 或
/usr/local/zookeeper/bin/zkServer.sh version

2. 备份数据(必须)

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

✅ 数据目录一般在 dataDir(zoo.cfg 中)

3. 查看配置文件

cat /usr/local/zookeeper/conf/zoo.cfg

记录:

  • dataDir
  • dataLogDir
  • clientPort
  • 集群配置(server.x)

二、下载新版本 ZooKeeper

以 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 版本(已编译)


三、停止旧版本 ZooKeeper

/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

五、复制配置和数据(关键)

1. 复制原配置

cp /usr/local/zookeeper_bak/conf/zoo.cfg /usr/local/zookeeper/conf/
cp /usr/local/zookeeper_bak/conf/log4j.properties /usr/local/zookeeper/conf/

2. 保留数据目录(不要动)

确保 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 集群:

推荐滚动升级(Rolling Upgrade)

  1. 一次只升级 一个节点
  2. 等该节点重新加入集群(Leader 正常)
  3. 再升级下一个

顺序建议:

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
❌ 不要混用不同大版本客户端
✅ 升级前一定做快照/备份


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

  • 当前 ZooKeeper 版本
  • 是单机还是集群
  • CentOS 具体版本

我可以给你针对性的升级命令。

0 踩