在 Linux 上升级 Kafka,通常分为 单节点 和 集群(多 broker) 两种情况。下面以**最常见的 Apache Kafka(非 CDH / 云托管)**为例说明。
cd /opt/kafka
cat release
# 或
bin/kafka-topics.sh --version
不同版本升级路径不同,尤其是 0.10 → 1.x → 2.x → 3.x: https://kafka.apache.org/documentation/#upgrade
⚠️ 大版本升级可能有 协议版本(inter.broker.protocol.version) 要求
cp -r /opt/kafka /opt/kafka_backup
cp server.properties server.properties.bak
wget https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
bin/kafka-server-stop.sh
mv /opt/kafka /opt/kafka_old
mv kafka_2.13-3.6.1 /opt/kafka
cp /opt/kafka_old/config/server.properties /opt/kafka/config/
bin/kafka-server-start.sh -daemon config/server.properties
✅ 不中断服务,逐个 broker 升级
在 升级前 的旧 Kafka 上:
inter.broker.protocol.version=CURRENT_VERSION
log.message.format.version=CURRENT_VERSION
重启所有 broker(使配置生效)
对每个 broker:
# 停止
bin/kafka-server-stop.sh
# 替换二进制
cp -r /opt/kafka_new/* /opt/kafka/
# 修改配置
inter.broker.protocol.version=NEW_VERSION
# 启动
bin/kafka-server-start.sh -daemon config/server.properties
✅ 等一个 broker 正常后再升级下一个
修改配置:
inter.broker.protocol.version=NEW_VERSION
log.message.format.version=NEW_VERSION
重启所有 broker
| 升级路径 | 注意 |
|---|---|
| 2.x → 3.x | ZooKeeper 仍可用,可选 KRaft |
| 旧 → KRaft | 必须新建集群 |
| 0.10 以前 | 必须先升到 0.10+ |
bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
如果你能提供:
我可以给你精确升级步骤。