温馨提示×

Kafka在Debian如何升级

小樊
48
2026-07-23 16:26:46
栏目: 智能运维

在 Debian 上升级 Apache Kafka,通常不是通过 apt,而是手动替换 Kafka 目录。下面给你一套稳妥、生产可用的升级流程,适用于大多数场景(包括从 2.x → 3.x)。


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

1️⃣ 确认当前版本

kafka-server-start.sh --version
# 或
/path/to/kafka/bin/kafka-topics.sh --version

2️⃣ 查看 Kafka 安装路径

常见路径:

/opt/kafka
/usr/local/kafka

3️⃣ 确认 ZooKeeper / KRaft 模式

# 是否使用 ZooKeeper
grep "zookeeper.connect" server.properties

Kafka 3.x 开始支持 KRaft(无 ZooKeeper),升级方式不同


二、升级方式选择

当前版本 升级方式
2.x → 3.x 滚动升级(推荐)
3.x → 3.y 滚动升级
ZooKeeper → KRaft 不可直接升级,需迁移

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

✅ 适用场景

  • 多 broker
  • 生产环境
  • 不停机

1️⃣ 下载新版本 Kafka

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

Scala 版本建议与旧版本一致(如 2.13)


2️⃣ 解压到新目录

tar -xzf kafka_2.13-3.6.1.tgz -C /opt

目录结构:

/opt/kafka_2.13-3.6.1

3️⃣ 复制配置文件(关键)

cp /opt/kafka/server.properties /opt/kafka_2.13-3.6.1/config/
cp /opt/kafka/zookeeper.properties /opt/kafka_2.13-3.6.1/config/

⚠️ 不要直接覆盖整个 config 目录


4️⃣ 逐个 Broker 升级(滚动)

① 停止旧 broker

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

② 切换软链接

ln -sfn /opt/kafka_2.13-3.6.1 /opt/kafka

③ 启动新 broker

systemctl start kafka

✅ 观察日志:

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

5️⃣ 全部升级完成后

升级 protocol 版本(重要)

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

四、单节点 Kafka 升级(简单粗暴)

systemctl stop kafka
mv /opt/kafka /opt/kafka_old
tar -xzf kafka_*.tgz -C /opt
cp kafka_old/config/server.properties /opt/kafka/config/
systemctl start kafka

五、KRaft 模式升级(Kafka 3.x)

⚠️ 不能从 ZooKeeper 直接升级

升级步骤(仅 KRaft → KRaft)

# 停止 controller + broker
# 替换 Kafka 目录
# 使用相同 cluster.id

查看 cluster.id:

cat /opt/kafka/meta.properties

六、Debian systemd 示例

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

[Service]
Type=simple
User=kafka
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

七、升级后检查清单 ✅

  • [ ] broker 正常启动
  • [ ] topic / partition 无丢失
  • [ ] consumer lag 正常
  • [ ] protocol 版本已升级
  • [ ] 日志无 ERROR

八、常见错误

错误 原因
UnsupportedVersionException protocol 版本未升级
broker 无法加入集群 config 不一致
topic 丢失 数据目录未保留

九、我可以继续帮你

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

  1. Kafka 当前版本
  2. Debian 版本
  3. 是否使用 ZooKeeper
  4. 单节点还是集群

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

0