温馨提示×

如何升级Debian Kafka

小樊
33
2026-07-11 18:01:45
栏目: 智能运维

升级 Debian 上的 Kafka 通常分为 “保留数据升级”“全新安装升级” 两种场景。下面我按 生产环境最稳妥的方式 给你一个完整流程(适用于 Kafka 2.x → 3.x,或 3.x 小版本升级)。


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

1. 确认当前版本

kafka-server-start.sh --version

ls /opt/kafka

2. 查看 Debian 版本

cat /etc/debian_version

3. 备份关键数据

cp -r /opt/kafka /opt/kafka.bak
cp -r /var/lib/kafka /var/lib/kafka.bak
cp /etc/kafka/server.properties /etc/kafka/server.properties.bak

4. 查看 Kafka 数据目录

grep log.dirs /etc/kafka/server.properties

二、升级策略选择

场景 推荐方式
单机 / 测试 停止 → 替换 → 启动
集群 / 生产 滚动升级(逐个 broker)

三、方式一:单机升级(简单直接)

1. 停止 Kafka

systemctl stop kafka
# 或
/opt/kafka/bin/kafka-server-stop.sh

2. 下载新版本 Kafka

官网:https://kafka.apache.org/downloads

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

3. 替换旧版本(保留数据)

mv /opt/kafka /opt/kafka_old
ln -s /opt/kafka_2.13-3.6.1 /opt/kafka

4. 复用配置文件

cp /opt/kafka_old/config/server.properties /opt/kafka/config/
cp /opt/kafka_old/config/zookeeper.properties /opt/kafka/config/  # 如果用 ZK

5. 启动 Kafka

systemctl start kafka

四、方式二:集群滚动升级(生产推荐)

1. 升级前检查

kafka-features.sh --bootstrap-server localhost:9092 describe

确保:

  • 所有 broker 都在线
  • 副本充足

2. 逐个 broker 升级

① 禁用自动 leader 切换(可选)

kafka-configs.sh \
  --bootstrap-server localhost:9092 \
  --entity-type brokers \
  --entity-default \
  --alter \
  --add-config auto.leader.rebalance.enable=false

② 停止一个 broker

systemctl stop kafka

③ 替换 Kafka 目录(同上)

④ 启动新版本

systemctl start kafka

⑤ 等待恢复

kafka-broker-api-versions.sh --bootstrap-server localhost:9092

⑥ 重复以上步骤


五、Kafka 3.x 特别注意(KRaft 模式)

如果你从 2.x → 3.x 并想启用 KRaft(无 ZooKeeper)

⚠️ 不能原地直接切换 必须:

  1. 新建 KRaft 集群
  2. 用 MirrorMaker 迁移数据
  3. 下线旧集群

六、升级后验证

1. 查看版本

kafka-server-start.sh --version

2. 检查 broker

kafka-broker-api-versions.sh --bootstrap-server localhost:9092

3. 检查 topic

kafka-topics.sh --bootstrap-server localhost:9092 --list

七、常见问题

❌ 启动失败

journalctl -u kafka -xe

常见原因:

  • Java 版本不兼容(Kafka 3.x 推荐 Java 11 / 17)
  • log.dirs 权限问题

八、Java 版本建议

Kafka 版本 Java
2.8 及以下 Java 8
3.x Java 11 / 17
java -version

九、总结(最稳妥流程)

✅ 备份
✅ 停服务
✅ 替换 Kafka 目录
✅ 复用配置
✅ 启动验证


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

  • Kafka 当前版本
  • 是否使用 ZooKeeper
  • 单节点还是集群
  • Debian 具体版本

我可以给你 精确到命令的升级方案

0