温馨提示×

如何更新Ubuntu上的Zookeeper版本

小樊
36
2025-12-08 21:07:57
栏目: 智能运维

Ubuntu 上更新 Zookeeper 版本的安全做法

一 升级前准备

  • 备份关键数据与配置:建议完整备份数据目录 /var/lib/zookeeper 与配置目录 /etc/zookeeper,以便快速回滚。示例:
    • sudo cp -R /var/lib/zookeeper /var/lib/zookeeper-backup
    • sudo cp -R /etc/zookeeper /etc/zookeeper-backup
  • 检查当前运行状态与版本:确认服务正在运行及当前版本,便于制定升级顺序与回滚计划。
    • sudo systemctl status zookeeper
    • 使用四字命令查看版本:echo stat | nc 127.0.0.1 2181(如提示未授权,需在 zoo.cfg 末尾添加:4lw.commands.whitelist=* 并重启后再试)
  • 环境核对:确认 JDK 版本满足新版本要求(常见为 OpenJDK 11),以及防火墙对 2181/2888/3888 端口的放行策略。
  • 升级策略:生产环境优先采用滚动升级(逐台升级 Follower,最后升级 Leader),并在测试环境充分验证。

二 标准升级步骤

  • 下载并解压新版本:从 Apache 镜像下载所需版本(优先选择带有 -bin 的发行包),解压到临时目录。示例:
    • wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
    • tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz -C /tmp
  • 停止旧服务:
    • sudo systemctl stop zookeeper
  • 处理数据目录(两种常见做法,二选一)
    • 沿用现有数据目录:将旧版 /var/lib/zookeeper 整体保留,仅替换二进制与配置(推荐,风险更低)。
    • 迁移数据目录:将新包内的 data/ 移动到 /var/lib/zookeeper(注意权限与属主一致)。示例:
      • sudo mv /var/lib/zookeeper /var/lib/zookeeper-old
      • sudo mv /tmp/apache-zookeeper-3.7.0-bin/data /var/lib/zookeeper
  • 更新配置:将旧配置与新包默认配置合并,保留自定义项(如 dataDir、dataLogDir、server.x 等)。示例:
    • sudo cp /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg.old
    • cp /tmp/apache-zookeeper-3.7.0-bin/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg
    • 如有新增参数,再按需合并回 /etc/zookeeper/conf/zoo.cfg
  • 启动与验证:
    • sudo systemctl start zookeeper
    • sudo systemctl status zookeeper
    • 使用 zkCli.sh 连接测试:echo stat | nc 127.0.0.1 2181 或 /opt/apache-zookeeper-3.7.0-bin/bin/zkCli.sh -server 127.0.0.1:2181
    • 观察日志无异常后,再继续升级下一台节点

三 集群滚动升级要点

  • 顺序:先升级全部 Follower,最后升级 Leader,以降低对业务的影响。
  • 逐台操作:对每台节点重复“停止 → 升级二进制与配置 → 启动 → 验证”的流程,确认健康后再处理下一台。
  • 配置一致性:确保各节点的 zoo.cfgserver.x 列表、端口与 myid 一致且正确。
  • 版本兼容:跨小版本升级通常较为平滑,但务必阅读发行说明;如跨多个大版本,建议在测试环境验证后再上线。

四 回滚与常见问题

  • 快速回滚:若升级异常,优先恢复服务与数据目录。
    • 停止新版本:sudo systemctl stop zookeeper
    • 恢复数据与配置:
      • sudo mv /var/lib/zookeeper /var/lib/zookeeper-failed
      • sudo mv /var/lib/zookeeper-old /var/lib/zookeeper
      • sudo cp -R /etc/zookeeper-backup /etc/zookeeper
    • 启动旧版本:sudo systemctl start zookeeper
  • 常见问题处理:
    • 四字命令不可用:在 zoo.cfg 末尾添加 4lw.commands.whitelist=* 并重启。
    • JMX/监控不可用:检查新版本的启动脚本与 JVM 参数是否变化。
    • 权限问题:确保 /var/lib/zookeeper/var/log/zookeeper 属主与权限与运行用户一致(常见为 zookeeper 用户)。

0