在 Linux 环境下对 Kafka 集群进行扩容,通常分为 Broker 节点扩容 和 Topic 分区/副本扩容 两部分。下面按实际运维流程说明。
server.properties,注意:broker.id=新ID(不能和已有冲突)
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
nohup bin/kafka-server-start.sh config/server.properties &
查看是否注册成功:
bin/kafka-broker-api-versions.sh --bootstrap-server 新节点:9092
⚠️ 新 Broker 加入后不会自动迁移数据,需要手动 reassign。
bin/kafka-topics.sh --bootstrap-server kafka1:9092 --list
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)bin/kafka-reassign-partitions.sh \
--bootstrap-server kafka1:9092 \
--reassignment-json-file reassign.json \
--execute
bin/kafka-reassign-partitions.sh \
--bootstrap-server kafka1:9092 \
--reassignment-json-file reassign.json \
--verify
如果是为了提高并发:
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。
bin/kafka-log-dirs.sh --bootstrap-server kafka1:9092 --describe
✅ 建议在低峰期操作
✅ 大 Topic 迁移可能耗时较长
✅ 不要同时扩容 Broker 和修改副本因子
✅ Kafka 3.x + KRaft 模式流程类似,但无 ZooKeeper
如果你愿意,可以告诉我:
我可以给你一套可直接执行的命令模板。