ZooKeeper動(dòng)態(tài)調(diào)整集群成員

手動(dòng)集群成員調(diào)整

  1. 停止整個(gè)ZooKeeper現(xiàn)有集群
  2. 更改配置文件zoo.cfg的server.n項(xiàng)
  3. 啟動(dòng)新集群的ZooKeeper節(jié)點(diǎn)

問(wèn)題1:需要停止ZooKeeper服務(wù)。
問(wèn)題2:已經(jīng)提交的數(shù)據(jù)可能會(huì)被覆蓋,如下:

在quorum模式下,有三個(gè)節(jié)點(diǎn),節(jié)點(diǎn)2是leader,節(jié)點(diǎn)3數(shù)據(jù)比較舊。由于這三個(gè)節(jié)點(diǎn)性能比較低,計(jì)劃加入節(jié)點(diǎn)4和節(jié)點(diǎn)5


把節(jié)點(diǎn)1、2、3停掉之后,設(shè)置4、5節(jié)點(diǎn)。先啟動(dòng)4、5,再啟動(dòng)節(jié)點(diǎn)3。然后再啟2、1這兩個(gè)節(jié)點(diǎn)。
先啟動(dòng)的3、4、5節(jié)點(diǎn)會(huì)先形成一個(gè)quorum,選舉3為leader,開(kāi)始進(jìn)行事務(wù)的提交,產(chǎn)生事務(wù)<2,1>。


當(dāng)節(jié)點(diǎn)1、2加入新的quorum的時(shí)候,由于1、2節(jié)點(diǎn)的事務(wù)<1,3>和節(jié)點(diǎn)3(leader)的事務(wù)不一樣,會(huì)被<2,1>覆蓋,而造成數(shù)據(jù)丟失。


動(dòng)態(tài)配置

解決上面的問(wèn)題就可以使用動(dòng)態(tài)配置。
要使用動(dòng)態(tài)配置,必須啟用ZooKeeper的Authentication(認(rèn)證)

  1. 調(diào)用類DigestAuthencatinProvider的generateDigest函數(shù)生成digest(密鑰),輸入?yún)?shù)比如:“super:jingguo”
  2. 配置產(chǎn)生的密鑰


  3. 編輯動(dòng)態(tài)配置的配置文件zoo.reconf.cfg


dyn.cfg文件內(nèi)的內(nèi)容



最好不要省略配置文件內(nèi)的ali-1這樣的host name,ZooKeeper會(huì)讀取這些信息。如果不配置host name的話,ZooKeeper會(huì)使用默認(rèn)名字。對(duì)客戶端來(lái)說(shuō),不知道這些默認(rèn)名字是什么。

  1. 啟動(dòng)節(jié)點(diǎn)


  2. 啟動(dòng)cli,由于只在ali-1啟用了super機(jī)制,只能連ali-1節(jié)點(diǎn),才能算是經(jīng)過(guò)認(rèn)證。
zkCli.sh -server ali-1:2181
// 添加digest
addauth digest super:jingguo

查看配置config
配置集群成員reconfig, 比如移除3號(hào)節(jié)點(diǎn)reconfig -remove 3

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

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

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