温馨提示×

linux zookeeper怎么升级

小樊
44
2026-10-10 09:02:07
栏目: 智能运维

下面以 Linux 环境下 ZooKeeper 升级 为例,给你一个通用、安全的升级步骤(以 3.4.x → 3.5.x / 3.6.x / 3.7.x 为例,其他小版本类似)。


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

1. 查看当前版本

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

2. 确认集群模式

  • 单机(standalone)
  • 集群(ensemble,3/5/7 节点)

集群必须滚动升级,不能全部同时停

3. 备份数据和配置(必做)

cp -r /data/zookeeper /data/zookeeper_bak_$(date +%F)
cp -r $ZK_HOME/conf $ZK_HOME/conf_bak_$(date +%F)

4. 查看官方升级说明

不同大版本可能有 不兼容变更:

  • 3.4 → 3.5:配置项变化(如 autopurge)
  • 3.5+ 默认开启 AdminServer(端口 8080)

官方文档: https://zookeeper.apache.org/doc/


二、下载新版本 ZooKeeper

cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin zookeeper-3.7.1

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

1. 复制旧配置

cp zookeeper旧版本/conf/zoo.cfg zookeeper-3.7.1/conf/
cp zookeeper旧版本/conf/log4j.properties zookeeper-3.7.1/conf/

2. 检查 zoo.cfg 变化

常见需要关注的:

dataDir=
dataLogDir=
clientPort=
server.1=
server.2=
server.3=

3. 注意 AdminServer(3.5+)

如不需要:

admin.enableServer=false

四、升级方式(推荐滚动升级)

✅ 集群滚动升级步骤

  1. 停一个 ZooKeeper 节点
zkServer.sh stop
  1. 替换目录或软链接
ln -sfn /opt/zookeeper-3.7.1 /opt/zookeeper
  1. 启动新版本
zkServer.sh start
  1. 确认状态
echo stat | nc 127.0.0.1 2181
zkServer.sh status
  1. 依次对其它节点重复

必须等节点完全加入集群再升级下一个


五、单机升级

zkServer.sh stop
# 替换目录
zkServer.sh start

六、升级后验证

zkCli.sh -server 127.0.0.1:2181
ls /
get /test

检查:

  • 节点状态正常
  • 数据完整
  • 日志无 ERROR

七、常见问题

1. 版本不兼容

  • 3.4 → 3.5 不能直接降级
  • 升级前务必备份 version-2

2. 端口冲突

  • 8080(AdminServer)
  • 修改或关闭

3. JDK 版本

  • ZooKeeper 3.5+ 需要 JDK 8+

八、回滚方案

zkServer.sh stop
ln -sfn /opt/zookeeper-旧版本 /opt/zookeeper
zkServer.sh start

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

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

我可以给你精确升级命令。

0 踩