《Apache Kafka 實(shí)戰(zhàn)》筆記 - 7.5.1 preferred leader 選舉

概念

  • preferred replica

假設(shè)我們?yōu)橐粋€(gè)分區(qū)分配了3個(gè)副本,它們分別是 0、1、2,那么節(jié)點(diǎn)0就是該分區(qū)的 preferred replica,并且通常情況下是不會(huì)發(fā)生變更的,選擇節(jié)點(diǎn)0的原因僅僅是它是副本列表中的第一個(gè)副本。

  • preferred leader 選舉

把指定分區(qū)的leader調(diào)整回它們的 preferred replica 的過程。

為什么需要 preferred leader 選舉

因?yàn)樵?kafka 集群長時(shí)間運(yùn)行中,broker 的宕機(jī)或崩潰是不可避免的,leader 就會(huì)發(fā)生轉(zhuǎn)移,即使 broker 重新回來,也不會(huì)是 leader 了。在眾多 leader 的轉(zhuǎn)移過程中,就會(huì)產(chǎn)生 leader 不均衡現(xiàn)象,可能一小部分 broker 上有大量的 leader,影響了整個(gè)集群的性能,所以就需要把 leader 調(diào)整會(huì)最初的 broker 上,這就需要 preferred leader 選舉。

實(shí)踐

需要搭建一個(gè)3節(jié)點(diǎn)的集群環(huán)境,為了方便測試,可以搭建簡單的單機(jī)集群(參考 http://www.itdecent.cn/p/eaac847ca193)。

創(chuàng)建測試 topic:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --partitions 3 --replication-factor 3 --topic test-topic03

查看 topic:

bin/kafka-topics.sh  --describe  --zookeeper localhost:2181 --topic test-topic03

由上面的輸出可知,當(dāng)前的3個(gè)分區(qū)的 leader 副本已經(jīng)是它們的 preferred replica 了。

現(xiàn)在我們依次關(guān)閉 broker2 和 broker3 來模擬集群服務(wù)器崩潰的場景。這樣做的目的是為了讓所有分區(qū)的leader都變更到broker1上,從而造成集群leader分布不均勻的情況出現(xiàn)。

再次查看 topic:

bin/kafka-topics.sh  --describe  --zookeeper localhost:2181 --topic test-topic03

3個(gè)分區(qū)的leader現(xiàn)在都變成了broker1。

下面來調(diào)整它們的leader,先創(chuàng)建配置文件:

echo '{"partitions":[{"topic":"test-topic03","partition":0},{"topic":"test-topic03","partition":1}]}' > preferred-leader-plan.json

由于分區(qū)2的leader已經(jīng)是 preferred replica 了,故真正需要調(diào)整的分區(qū)只有分區(qū)0和分區(qū)1。

重新啟動(dòng) broker2、broker3,然后執(zhí)行命令:

bin/kafka-preferred-replica-election.sh  --zookeeper localhost:2181  --path-to-json-file <path>/preferred-leader-plan.json

輸出信息:
Created preferred replica election path with test-topic03-0,test-topic03-1
Successfully started preferred replica election for partitions Set(test-topic03-0, test-topic03-1)

再次查看 topic:

bin/kafka-topics.sh  --describe  --zookeeper localhost:2181 --topic test-topic03

所有分區(qū)都已經(jīng)調(diào)整成它們的preferred replica了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容