Linux环境下Kafka集群扩容步骤
server.properties文件,关键配置如下:
broker.id:设置为唯一值(不与现有Broker冲突,如现有最大ID为2,新节点设为3);listeners:指定Broker监听地址(如PLAINTEXT://:9092);log.dirs:设置日志存储目录(可配置多个目录提升IO性能,如/data/kafka-logs,/data1/kafka-logs);zookeeper.connect:指向现有ZooKeeper集群地址(如zk1:2181,zk2:2181,zk3:2181/kafka)。nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties &),观察启动日志确认无报错。/opt/kafka/bin/zookeeper-shell.sh zk1:2181 ls /brokers/ids),若返回结果包含新Broker的ID,则说明节点已成功加入集群。topics-to-move.json),内容示例如下:{
"topics": [{"topic": "user-tracking"}, {"topic": "order-events"}],
"version": 1
}
使用kafka-reassign-partitions.sh脚本生成初始重分配计划(指定目标Broker列表,如3,4):./bin/kafka-reassign-partitions.sh --bootstrap-server broker1:9092 \
--topics-to-move-json-file topics-to-move.json \
--broker-list "3,4" --generate
脚本会输出建议的重分配方案(包含Topic分区与Broker的映射关系)。reassignment.json文件(如expand-cluster-reassignment.json),执行迁移命令:./bin/kafka-reassign-partitions.sh --bootstrap-server broker1:9092 \
--reassignment-json-file reassignment.json --execute
此命令会将指定Topic的分区副本逐步迁移到目标Broker上。./bin/kafka-reassign-partitions.sh --bootstrap-server broker1:9092 \
--reassignment-json-file reassignment.json --verify
迁移完成后,新Broker将承担指定Topic分区的存储和请求处理任务。kafka-topics.sh命令查看集群中所有Topic的分区分布(如./bin/kafka-topics.sh --bootstrap-server broker1:9092 --describe),确认新Broker已分配到分区;检查ZooKeeper状态(如./bin/zkServer.sh status),确保集群元数据一致。num.network.threads(网络线程数)、num.io.threads(IO线程数)以提升处理能力;调整log.flush.interval.messages(日志刷新间隔)以平衡吞吐量与数据持久性)。