一 kafka集群擴容比較簡單,機器配置一樣的前提下只需要把配置檔案裡的brokerid改乙個新的啟動起來就可以。比較需要注意的是如果公司內網dns更改的不是很及時的話,需要給原有的舊機器加上新伺服器的host,不然可能會產生controller伺服器從zk上拿到網域名稱但是解析不到新機器位址的情況。
二 集群擴容後資料是不會自動均衡到新機器上的,需要採用kafka-reassign-partitions.sh這個工具指令碼。指令碼可以工作在三種模式--generate,--execute,--verify
分別用來生成topic遷移計畫檔案,執行遷徙計畫,檢視遷移進度,官方文件寫的很明白了,不足的地方是每一步都需要手工執行比較麻煩和容易出錯,借用了組內同學之前寫的
乙個指令碼差不多實現了半自動化還是很提高效率的,備忘一下。
startrebalance.sh
#!/bin/bash
source /etc/profile
source ./conf.sh
echo "zkconf:" $zkserver$clustername
echo "brokerlist:" $brokeridlist
echo "###########################start generate reblance conf##############################"
content=`kafka-reassign-partitions.sh --zookeeper $zkserver$clustername --topics-to-move-json-file topicmove.conf.multi --broker-list $brokeridlist --generate`
content=`echo $content | awk -f 'proposed partition reassignment configuration' ''`
echo $content
echo $content > ressgintopic.conf
echo $content >> ./log/reblance.log
echo "" >> ./log/reblance.log
echo "###########################end generate reblance conf##############################"
#start reblance
echo "###########################start reblance##############################"
kafka-reassign-partitions.sh --zookeeper $zkserver$clustername --reassignment-json-file ressgintopic.conf --execute
conf.sh
#!/bin/bash
zkserver=1.1.1.1:2181
clustername=/kafka/chroot
brokeridlist=1,2,3
kafka集群擴容後的topic分割槽遷移
kafka集群擴容後,新的broker上面不會資料進入這些節點,也就是說,這些節點是空閒的 它只有在建立新的topic時才會參與工作。除非將已有的partition遷移到新的伺服器上面 所以需要將一些topic的分割槽遷移到新的broker上。kafka reassign partitions.sh...
Kafka 集群的擴容
將現有的集群上任乙個伺服器上的kafka目錄拷貝到新的伺服器上 修改config server.properties中的broker.id log.dirs listeners 建立logs.dirs指定的目錄,並設定讀寫許可權 chomd r 777 broker.id 3log dirs kaf...
Kafka 資料遷移
當kafka 減少broker節點後,需要把資料分割槽遷移到其他節點上,以下將介紹我的一次遷移驗證過程。前3步為環境準備,實際資料操作看第4步即可 增加broker節點,也可以採用步驟4相同的方法進行重新分割槽 方案思想 使用kafka reassign partitions命令,把partitio...