linux

如何在Linux上升级Zookeeper版本

小樊
58
2025-09-21 04:24:59
栏目: 智能运维

一、升级前准备

  1. 备份数据与配置
    升级前必须备份ZooKeeper的数据目录(默认/var/lib/zookeeper,存储快照和事务日志)和配置文件(默认/etc/zookeeper/conf/zoo.cfg),避免升级失败导致数据丢失。
    示例命令:

    cp -r /var/lib/zookeeper /var/lib/zookeeper.bak
    cp /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg.bak
    
  2. 下载新版本安装包
    访问Apache ZooKeeper官方网站(https://zookeeper.apache.org/releases.html),下载目标版本的安装包(如apache-zookeeper-3.8.0-bin.tar.gz)。
    示例命令(以3.8.0为例):

    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
    
  3. 检查版本兼容性
    确认目标版本与当前ZooKeeper版本、JDK版本的兼容性:

    • JDK要求:ZooKeeper 3.5.x及以上版本需JDK 8+,3.4.x及以下版本支持JDK 6/7/8;
    • 特性兼容:若使用了旧版本的特有功能(如3.4.x的leaderElection模式),需确认目标版本是否保留该功能。
      参考官方升级文档中的“Compatibility Matrix”部分。

二、停止ZooKeeper服务
使用systemctlservice命令停止正在运行的ZooKeeper服务:

systemctl stop zookeeper  # 推荐使用systemctl(适用于大多数现代Linux发行版)
# 或
service zookeeper stop

三、替换二进制文件与更新配置

  1. 解压并移动新版本
    将下载的安装包解压到临时目录(如/tmp),然后将新版本的二进制文件移动到目标安装目录(如/opt/zookeeper):

    tar -xzf apache-zookeeper-3.8.0-bin.tar.gz -C /tmp
    mv /tmp/apache-zookeeper-3.8.0-bin /opt/zookeeper
    
  2. 保留原有配置文件
    将旧版本的zoo.cfg复制到新版本的conf目录,避免重新配置的麻烦:

    cp /etc/zookeeper/conf/zoo.cfg /opt/zookeeper/conf/
    
  3. 更新配置文件(按需)
    检查新版本的zoo.cfg示例文件(conf/zoo_sample.cfg),若有新增配置项(如3.6.0引入的zookeeper.connection_throttle_fill_count),需添加到现有配置文件中。
    示例(修改dataDir路径,若未变更则无需修改):

    sed -i 's|/var/lib/zookeeper|/opt/zookeeper/data|g' /opt/zookeeper/conf/zoo.cfg
    

四、启动新版本服务
使用systemctl启动新版本的ZooKeeper服务,并检查状态:

systemctl start zookeeper
systemctl status zookeeper  # 确认服务状态为“active (running)”

五、验证升级结果

  1. 检查服务状态
    使用zkServer.sh脚本验证节点状态:

    /opt/zookeeper/bin/zkServer.sh status
    

    输出应显示“Mode: leader”(领导者节点)或“Mode: follower”(跟随者节点)。

  2. 连接客户端验证
    使用zkCli.sh工具连接ZooKeeper,执行基本命令验证数据一致性和功能:

    /opt/zookeeper/bin/zkCli.sh -server localhost:2181
    # 连接后执行以下命令
    ls /          # 查看根节点下的ZNode列表
    get /test     # 获取指定ZNode的数据(若存在)
    stat /        # 查看节点状态(包含版本信息)
    
  3. 检查日志文件
    查看ZooKeeper的日志文件(默认/opt/zookeeper/logs/zookeeper.out),确认无报错信息:

    tail -f /opt/zookeeper/logs/zookeeper.out
    

六、清理旧版本(可选)
若升级成功且运行稳定,可删除旧版本的二进制文件、数据目录和备份文件,释放磁盘空间:

rm -rf /var/lib/zookeeper.bak      # 删除旧数据备份
rm -rf /etc/zookeeper/conf/zoo.cfg.bak  # 删除旧配置备份
rm -rf /opt/zookeeper_old          # 删除旧版本安装目录(若有)

七、滚动升级(集群环境必做)
若ZooKeeper运行在集群模式,需逐个节点升级,避免同时停机导致集群不可用:

  1. 停止集群中的一个节点(如node1);
  2. 按上述步骤升级node1
  3. 启动node1并等待其加入集群(通过日志确认“Synced with leader”);
  4. 重复上述步骤,依次升级node2node3等节点。

注意事项

0
看了该问题的人还看了