kafka ubuntu更新升级流程
小樊
36
2026-01-01 22:33:19
Kafka 在 Ubuntu 的升级流程
一 升级前准备
- 备份与检查
- 备份所有节点的配置与数据目录(如 server.properties、zookeeper.properties、log.dirs),以及 ZooKeeper 元数据(如使用外部 ZK,建议导出关键 znode 内容)。
- 检查 JDK 版本要求(Kafka 3.x 通常需要 JDK 11+),并确认新版本对 Scala 版本 的对应关系。
- 阅读目标版本的 Release Notes,识别不兼容变更、废弃参数与升级路径限制。
- 环境与工具
- 建议在 测试环境 完整演练升级与回滚;准备 滚动升级 与必要的监控/告警(如 UnderReplicatedPartitions=0、ISR 健康)。
- 规划版本跨度,避免跨多个小版本直接升级,按官方推荐路径逐步执行。
- 集群现状梳理
- 明确当前是 ZooKeeper 模式 还是 KRaft 模式,记录关键配置:broker.id、listeners/advertised.listeners、log.dirs、zookeeper.connect(ZK 模式)或 process.roles、controller.quorum.voters(KRaft 模式)。
二 标准升级流程(ZooKeeper 模式)
- 逐节点滚动升级(一次一台)
- 检查集群健康:
- 列出 Topic:
kafka-topics.sh --bootstrap-server <任一Broker:9092> --list
- 检查版本兼容:
kafka-broker-api-versions.sh --bootstrap-server <任一Broker:9092>
- 观察分区健康:
kafka-topics.sh --bootstrap-server <任一Broker:9092> --describe 确认 UnderReplicatedPartitions=0。
- 停止待升级 Broker:
- 如使用 systemd:
systemctl stop kafka
- 或脚本:
bin/kafka-server-stop.sh config/server.properties
- 部署新版本(保持目录结构一致,便于回滚):
- 下载并解压:
tar xzf kafka_2.13-<new_version>.tgz -C /opt/kafka-new --strip-components=1
- 同步配置:
cp -r /opt/kafka/current/config /opt/kafka-new/config(按需合并新旧配置)。
- 启动新版本 Broker:
- systemd:
systemctl start kafka
- 或脚本:
bin/kafka-server-start.sh -daemon config/server.properties
- 验证节点加入与健康:
- 再次检查
kafka-broker-api-versions.sh 与分区健康,确认 UnderReplicatedPartitions=0 后再升级下一台。
- 升级后统一调整协议版本(所有 Broker 升级完成后)
- 在 server.properties 中将 inter.broker.protocol.version 提升到新版本(例如从 3.7 提升到 3.8),并滚动重启以生效。
- 可选 升级 ZooKeeper(如使用内置或外部 ZK)
- 逐节点停止 ZK → 替换安装目录 → 启动 → 验证 1 Leader + N Follower 状态,再继续下一节点。
三 KRaft 模式与跨版本注意事项
- KRaft 模式升级要点
- 先升级 Controller 节点,再升级 Broker 节点;升级前确认 process.roles、controller.quorum.voters 配置正确。
- 如从 ZooKeeper 模式迁移到 KRaft,需提前规划并初始化元数据(执行
kafka-storage.sh format 会清空数据,务必在迁移场景使用且做好备份)。
- 升级完成后使用
kafka-metadata-quorum.sh 检查 Controller 状态与健康。
- 版本跨度与兼容性
- 避免跨多个小版本直接升级,遵循官方支持的升级路径;升级后逐步更新 客户端依赖(kafka-clients) 并回归测试。
- 配置与命令行差异
- Kafka 3.x 在配置参数与工具链上有较多变化(如命令行工具与参数命名调整),务必对照新版本文档逐项核对。
四 升级后验证与回滚
- 功能与性能验证
- 基础连通与健康:
kafka-topics.sh --list、kafka-consumer-groups.sh --list、kafka-broker-api-versions.sh。
- 端到端生产消费:使用
kafka-console-producer.sh / kafka-console-consumer.sh 验证消息收发。
- 性能回归:
kafka-producer-perf-test.sh、kafka-consumer-perf-test.sh 做吞吐与延迟压测。
- 监控与观测
- 关键指标:UnderReplicatedPartitions=0、ISR 与副本同步延迟、控制器与 Broker 日志无异常选举/错误。
- 回滚策略
- 保留旧版本安装包与配置,出现严重问题时可快速回退到上一版本并恢复配置与数据目录;回滚后按需降级 inter.broker.protocol.version 并重启。