寫在前面
上篇文章我們介紹了新增節(jié)點后分區(qū)怎么重新負(fù)載,但這種情況很少發(fā)生。因為kafka單機負(fù)載能力很是強悍,一般3個節(jié)點即可,5個節(jié)點的都很少見。
然而很大概率出現(xiàn)的問題是有個節(jié)點宕機了怎莫辦?沒錯,答案就是重啟。
但重啟后會面臨一個問題,broker的宕機重啟,會引發(fā)Leader分區(qū)和Follower分區(qū)的角色轉(zhuǎn)換,最后可能Leader大部分都集中在少數(shù)幾臺broker上,由于Leader負(fù)責(zé)客戶端的讀寫操作,此時集中Leader分區(qū)的少數(shù)幾臺服務(wù)器的網(wǎng)絡(luò)I/O,CPU,以及內(nèi)存都會很緊張。
別擔(dān)心,kafka自動再均衡腳本: kafka-preferred-replica-election.sh會幫我們初始的副本分配。
一. 副本自動再均衡
1.1指定再均衡的主題及其分區(qū)
cat preferred.json
- 內(nèi)容示例
{
"partitions": [
{
"topic":"your topic's name",
"partition":0
},
{
"topic":"your topic's name",
"partition":1
},
{
"topic":"your topic's name",
"partition":2
}
]
}
-
參數(shù)說明
topic再均衡主題名
partition當(dāng)前主題分區(qū)
1.2 執(zhí)行腳本
kafka-preferred-replica-election.sh --zookeeper your zookeeperIP:PORT --path-to-json-file preferred.json
至此操作完畢
1.3 查看副本情況和原來對比
kafka-topics.sh --zookeeper your zookeeperIP:PORT --describe --topic your topic's name
至此就恢復(fù)了最初情況