温馨提示×

Debian下Kafka如何升级

小樊
35
2026-08-22 07:31:19
栏目: 智能运维

在 Debian 系统上升级 Kafka,通常 不建议用 apt,而是采用 官方二进制包 + 手动升级 的方式。下面给你一套 生产环境稳妥升级流程,适用于从旧版本升级到新版本(如 2.x → 3.x)。


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

1️⃣ 查看当前版本

kafka-server-start.sh --version
# 或
ls /opt/kafka*

2️⃣ 备份配置和数据

cp -r /opt/kafka /opt/kafka_bak_$(date +%F)
cp -r /var/lib/kafka /var/lib/kafka_bak_$(date +%F)

3️⃣ 查看 Kafka 与 Scala / Java 版本关系

Kafka 版本 推荐 Java
2.8+ Java 11 / 17
3.x Java 11 / 17

查看 Java:

java -version

二、下载新版本 Kafka

1️⃣ 官方下载

cd /opt
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz

示例为 Kafka 3.6.1(Scala 2.13)

2️⃣ 解压

tar -xzf kafka_2.13-3.6.1.tgz
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka_new

三、Kafka 升级方式选择

✅ 推荐方式:轮流滚动升级(无停机)

适用于 多 Broker 集群


四、滚动升级步骤(生产推荐)

1️⃣ 修改新配置

拷贝旧配置:

cp /opt/kafka/config/server.properties /opt/kafka_new/config/

重点检查:

broker.id
log.dirs
zookeeper.connect
listeners

⚠️ 不要直接覆盖 log.dirs


2️⃣ 先升级一台 Broker(示例)

停止旧 Kafka

systemctl stop kafka
# 或
pkill -f kafka

使用新版本启动

/opt/kafka_new/bin/kafka-server-start.sh \
-daemon /opt/kafka_new/config/server.properties

3️⃣ 观察日志

tail -f /opt/kafka_new/logs/server.log

确认:

  • 成功连接 Zookeeper
  • 未出现 FATAL

4️⃣ 升级协议版本(关键)

所有 Broker 都升级完成后再执行

/opt/kafka_new/bin/kafka-configs.sh \
--bootstrap-server localhost:9092 \
--entity-type brokers \
--entity-default \
--alter \
--add-config inter.broker.protocol.version=3.6

(版本号对应 Kafka 版本)


5️⃣ 依次升级其余 Broker

重复步骤 2–4


五、升级后验证

1️⃣ 查看 Broker 版本

/opt/kafka_new/bin/kafka-broker-api-versions.sh \
--bootstrap-server localhost:9092

2️⃣ 测试生产 / 消费

kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test

kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test --from-beginning

六、常见错误 & 解决

UnsupportedVersionException

✅ 说明 protocol 版本未升级

❌ Java 版本不兼容

✅ Kafka 3.x 需要 Java 11+

❌ log.dirs 被清空

✅ 一定确认指向旧数据目录


七、单机 Kafka 升级(快速版)

systemctl stop kafka
mv /opt/kafka /opt/kafka_old
ln -s /opt/kafka_new /opt/kafka
systemctl start kafka

八、Debian systemd 示例(可选)

[Unit]
Description=Apache Kafka
After=network.target

[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

九、升级总结

✅ Debian 下 Kafka 不使用 apt
✅ 推荐 滚动升级
✅ 一定要 备份配置 & 数据
✅ 升级完成后 调整 protocol 版本


如果你愿意,可以告诉我:

  • Kafka 当前版本
  • 是否使用 Zookeeper / KRaft
  • 单节点还是集群

我可以给你 定制化升级方案

0