在 Linux 环境下,Kafka 扩容通常分为两种场景:
下面分别说明,并给出常用命令和注意事项。
server.propertiesbroker.id=新ID(不能重复)
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
bin/kafka-server-start.sh -daemon config/server.properties
此时:
Kafka 不会自动把数据挪到新节点,需要手动迁移。
bin/kafka-reassign-partitions.sh \
--bootstrap-server localhost:9092 \
--topics-to-move-json-file topics.json \
--broker-list "0,1,2,3" \
--generate
topics.json 示例:
{
"topics": [
{ "topic": "test-topic" }
],
"version": 1
}
bin/kafka-reassign-partitions.sh \
--bootstrap-server localhost:9092 \
--reassignment-json-file reassignment.json \
--execute
bin/kafka-reassign-partitions.sh \
--bootstrap-server localhost:9092 \
--reassignment-json-file reassignment.json \
--verify
bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test-topic
bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--alter \
--topic test-topic \
--partitions 6
⚠ 注意:
✅ 扩容前:
broker.id 唯一✅ 扩容后:
✅ 自动化:
Q:加 broker 后为什么数据没动?
A:Kafka 不会自动迁移,需要 reassignment。
Q:会影响生产消费吗?
A:迁移有 IO,建议低峰期操作。
Q:能在线扩容吗?
A:可以,Kafka 支持不停机扩容。
如果你愿意,可以告诉我:
我可以给你更精确的命令模板。