温馨提示×

kafka在linux如何升级

小樊
36
2026-10-08 05:48:30
栏目: 智能运维

下面给你一份在 Linux 上升级 Apache Kafka 的常规做法,适用于二进制包(tar.gz)部署场景(最常见)。如果你是用 RPM / DEB / Docker / Kubernetes,方式会不同,可以再告诉我。


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

1. 查看当前版本

kafka/bin/kafka-topics.sh --version
# 或
cat kafka/version.txt

2. 阅读官方升级文档(必看)

Kafka 升级不能跳大版本乱升,必须看对应版本的 Upgrade Guide: https://kafka.apache.org/documentation/#upgrade

例如:

  • 2.8 → 3.x
  • 3.0 → 3.7

⚠️ 特别注意:

  • 协议版本(inter.broker.protocol.version)
  • 消息格式版本(log.message.format.version)
  • 是否涉及 ZooKeeper → KRaft 模式

二、标准升级流程(滚动升级,推荐)

假设你是 多 Broker 集群

1. 备份配置和数据(保险)

cp -r kafka/config kafka_config_backup
cp -r kafka/logs kafka_logs_backup

如果是生产环境,建议先做一次 全量备份。


2. 下载新版本 Kafka

wget https://archive.apache.org/dist/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz -C /opt

3. 复制原配置文件

cp kafka/config/server.properties new_kafka/config/
cp kafka/config/producer.properties new_kafka/config/
cp kafka/config/consumer.properties new_kafka/config/

⚠️ 不要直接覆盖,先对比差异:

diff kafka/config/server.properties new_kafka/config/server.properties

4. 修改协议版本(如跨版本)

在 server.properties 中确认:

inter.broker.protocol.version=CURRENT_VERSION
log.message.format.version=CURRENT_VERSION

例如从 3.0 → 3.7:

inter.broker.protocol.version=3.0

先不要改成新版本


5. 逐个 Broker 滚动重启(关键)

停止一个 Broker

kafka/bin/kafka-server-stop.sh
# 或
kill -TERM <broker_pid>

使用新版本启动

new_kafka/bin/kafka-server-start.sh -daemon new_kafka/config/server.properties

✅ 等该 Broker 完全恢复(in-sync)
✅ 再升级下一个


6. 全部升级完成后,再升级协议版本

确认没问题后,修改:

inter.broker.protocol.version=3.7
log.message.format.version=3.7

再滚动重启一次。


三、单节点 Kafka 升级(简单)

kafka-server-stop.sh
# 替换目录
mv kafka kafka_old
mv kafka_new kafka
kafka/bin/kafka-server-start.sh -daemon kafka/config/server.properties

四、ZooKeeper 和 KRaft 注意

ZooKeeper 模式

  • 一般 Kafka 升级 不要求 ZK 升级
  • 但大版本建议同步评估

KRaft 模式(3.x 新特性)

  • 不建议从 ZK 直接“升级成 KRaft”
  • 通常是 迁移,不是简单升级

五、升级后验证

kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

观察日志:

tail -f kafka/logs/server.log

六、常见坑

❌ 直接覆盖 config
❌ 跨多个大版本升级
❌ 没备份直接干
❌ 没等 ISR 恢复就重启下一个节点


七、我可以继续帮你

你可以告诉我:

  1. Kafka 当前版本 → 目标版本
  2. 单节点 / 集群
  3. ZK 还是 KRaft
  4. Linux 发行版(CentOS / Ubuntu)

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

0 踩