温馨提示×

linux kafka怎么扩容

小樊
36
2026-09-26 12:45:28
栏目: 智能运维

在 Linux 环境下对 Kafka 集群进行扩容,通常分为 Broker 节点扩容 和 Topic 分区/副本扩容 两部分。下面按实际运维流程说明。


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

1. 准备新节点

  • 安装相同版本的 Kafka
  • 配置 server.properties,注意:
    broker.id=新ID(不能和已有冲突)
    listeners=PLAINTEXT://:9092
    log.dirs=/data/kafka-logs
    zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
    
  • 确保 JDK、ulimit、磁盘、网络与现有节点一致

2. 启动新 Broker

nohup bin/kafka-server-start.sh config/server.properties &

查看是否注册成功:

bin/kafka-broker-api-versions.sh --bootstrap-server 新节点:9092

二、分区再均衡(关键步骤)

⚠️ 新 Broker 加入后不会自动迁移数据,需要手动 reassign。

1. 生成 Topic 列表

bin/kafka-topics.sh --bootstrap-server kafka1:9092 --list

2. 生成 reassign 计划

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

topics.json 示例:

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

会输出:

  • 当前分配方案
  • 建议的新分配方案(保存到 reassign.json)

3. 执行迁移

bin/kafka-reassign-partitions.sh \
--bootstrap-server kafka1:9092 \
--reassignment-json-file reassign.json \
--execute

4. 查看迁移进度

bin/kafka-reassign-partitions.sh \
--bootstrap-server kafka1:9092 \
--reassignment-json-file reassign.json \
--verify

三、Topic 分区扩容(可选)

如果是为了提高并发:

bin/kafka-topics.sh \
--bootstrap-server kafka1:9092 \
--alter \
--topic test-topic \
--partitions 12

分区只能增加,不能减少


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

修改 reassign JSON,例如:

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

然后执行 reassign。


五、验证与监控

  • 消费/生产是否正常
  • 磁盘 IO 是否均衡
  • 使用:
    bin/kafka-log-dirs.sh --bootstrap-server kafka1:9092 --describe
    

六、注意事项

✅ 建议在低峰期操作
✅ 大 Topic 迁移可能耗时较长
✅ 不要同时扩容 Broker 和修改副本因子
✅ Kafka 3.x + KRaft 模式流程类似,但无 ZooKeeper


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

  • Kafka 版本(2.x / 3.x)
  • 是否使用 ZooKeeper / KRaft
  • 是想 加机器 还是 提高吞吐

我可以给你一套可直接执行的命令模板。

0 踩