温馨提示×

debian中kafka怎样扩容

小樊
44
2026-09-12 19:35:55
栏目: 智能运维

在 Debian 系统上对 Kafka 进行扩容,通常分为 Broker 扩容 和 Topic 分区/副本重平衡 两部分。下面按运维实操流程说明。


一、Broker 扩容(增加 Kafka 节点)

1. 新节点准备

在新 Debian 机器上:

  • 安装相同版本的 JDK
  • 安装相同版本的 Kafka
  • 保证网络互通(同一集群)
apt update
apt install -y openjdk-17-jdk

2. 配置新 Broker

复制原有 server.properties,修改关键参数:

broker.id=3                 # 不能和已有冲突
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181

如果使用 KRaft 模式,则配置 controller.quorum.voters


3. 启动新 Broker

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

检查:

jps | grep Kafka

4. 确认加入集群

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

二、Topic 扩容(分区 & 副本)

⚠️ Kafka 不会自动把数据迁移到新节点

1. 增加分区数

kafka-topics.sh \
  --bootstrap-server broker1:9092 \
  --alter \
  --topic my-topic \
  --partitions 12

分区只能增加,不能减少


2. 生成迁移计划

kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --topics-to-move-json-file topics.json \
  --broker-list "1,2,3" \
  --generate

topics.json 示例:

{
  "topics": [
    { "topic": "my-topic" }
  ],
  "version": 1
}

3. 执行迁移

kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --reassignment-json-file reassign.json \
  --execute

4. 查看迁移进度

kafka-reassign-partitions.sh \
  --bootstrap-server broker1:9092 \
  --reassignment-json-file reassign.json \
  --verify

三、副本扩容(提高可靠性)

例如从 1 副本 → 3 副本:

{
  "version": 1,
  "partitions": [
    {
      "topic": "my-topic",
      "partition": 0,
      "replicas": [1,2,3]
    }
  ]
}

执行同上 reassign 命令即可。


四、常见注意事项

  • 流量平滑:迁移会占用网络 IO,建议低峰期操作
  • 磁盘规划:新节点磁盘容量要匹配
  • 监控:
    • Under Replicated Partitions
    • ISR 收缩
  • Debian 服务化(推荐):
systemctl enable kafka

五、简要流程总结

新机器 → 装 Kafka → 改配置 → 启动
→ 增加分区
→ 生成 reassign
→ 执行迁移
→ 验证完成

如果你用的是 KRaft 模式 或 Docker / k8s,可以告诉我,我可以给你对应版本的扩容方案。

0 踩