kafka集群擴容以及數據遷移


一 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' '{print $2}'`

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM