寫在前面
上篇文章我們介紹了新增節(jié)點(diǎn)后分區(qū)怎么重新負(fù)載,但這種情況很少發(fā)生。因?yàn)閗afka單機(jī)負(fù)載能力很是強(qiáng)悍,一般3個(gè)節(jié)點(diǎn)即可,5個(gè)節(jié)點(diǎn)的都很少見。
然而很大概率出現(xiàn)的問題是有個(gè)節(jié)點(diǎn)宕機(jī)了怎莫辦?沒錯(cuò),答案就是重啟。
但重啟后會(huì)面臨一個(gè)問題,broker的宕機(jī)重啟,會(huì)引發(fā)Leader分區(qū)和Follower分區(qū)的角色轉(zhuǎn)換,最后可能Leader大部分都集中在少數(shù)幾臺(tái)broker上,由于Leader負(fù)責(zé)客戶端的讀寫操作,此時(shí)集中Leader分區(qū)的少數(shù)幾臺(tái)服務(wù)器的網(wǎng)絡(luò)I/O,CPU,以及內(nèi)存都會(huì)很緊張。
別擔(dān)心,kafka自動(dòng)再均衡腳本: kafka-preferred-replica-election.sh會(huì)幫我們初始的副本分配。
一. 副本自動(dòng)再均衡
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 查看副本情況和原來對(duì)比
kafka-topics.sh --zookeeper your zookeeperIP:PORT --describe --topic your topic's name
至此就恢復(fù)了最初情況