在 Debian 系统上对 Kafka 进行扩容,通常分为 Broker 扩容 和 Topic 分区/副本重平衡 两部分。下面按运维实操流程说明。
在新 Debian 机器上:
apt update
apt install -y openjdk-17-jdk
复制原有 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
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
检查:
jps | grep Kafka
kafka-broker-api-versions.sh --bootstrap-server broker1:9092
⚠️ Kafka 不会自动把数据迁移到新节点
kafka-topics.sh \
--bootstrap-server broker1:9092 \
--alter \
--topic my-topic \
--partitions 12
分区只能增加,不能减少
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
}
kafka-reassign-partitions.sh \
--bootstrap-server broker1:9092 \
--reassignment-json-file reassign.json \
--execute
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 命令即可。
systemctl enable kafka
新机器 → 装 Kafka → 改配置 → 启动
→ 增加分区
→ 生成 reassign
→ 执行迁移
→ 验证完成
如果你用的是 KRaft 模式 或 Docker / k8s,可以告诉我,我可以给你对应版本的扩容方案。