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(日志刷新間隔)以平衡吞吐量與數據持久性)。