當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]來(lái)自:DBAplus社群 作者介紹 鄒春華,新炬網(wǎng)絡(luò)中間件專家。10年軟件開發(fā)工作經(jīng)驗(yàn),9年運(yùn)營(yíng)商行業(yè)IT系統(tǒng)維護(hù)經(jīng)驗(yàn)。精通C、C++、JAVA、PHP、SHELL等語(yǔ)言,有著深厚的大型IT軟件系統(tǒng)開發(fā)功底,精通MQ、Redis、Zookeeper、nginx、tomcat等技術(shù)組件的配置和優(yōu)化,


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因

來(lái)自:DBAplus社群

作者介紹

鄒春華,新炬網(wǎng)絡(luò)中間件專家。10年軟件開發(fā)工作經(jīng)驗(yàn),9年運(yùn)營(yíng)商行業(yè)IT系統(tǒng)維護(hù)經(jīng)驗(yàn)。精通C、C++、JAVA、PHP、SHELL等語(yǔ)言,有著深厚的大型IT軟件系統(tǒng)開發(fā)功底,精通MQ、Redis、Zookeeper、nginx、tomcat等技術(shù)組件的配置和優(yōu)化,也擅長(zhǎng)zabbix、Grafana 、cacti、ansbile等組件的運(yùn)用,有大量的自動(dòng)化運(yùn)維開發(fā)實(shí)踐。


大家好,我是一名有著近二十年工作經(jīng)驗(yàn)的運(yùn)維老鳥。


你問(wèn)運(yùn)維干什么的?呵呵…運(yùn)維就像三國(guó)里的軍師,擅長(zhǎng)排兵布陣,能夠運(yùn)籌帷幄,統(tǒng)籌大局。再爛的系統(tǒng),運(yùn)維也能玩得轉(zhuǎn)!


你說(shuō)什么?重啟能夠解決運(yùn)維90%的問(wèn)題?


嗯…嗯…其實(shí)…你說(shuō)的對(duì)!重啟能夠解決90%的問(wèn)題,如果不行的話…那就再重啟一次試試!


好吧,看看大家眼中的運(yùn)維是什么樣的吧:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


至于我對(duì)運(yùn)維的理解…給大家講講我們最近解決的一個(gè)小問(wèn)題吧。


一、問(wèn)題緣由


最近從業(yè)務(wù)部門納管了一批ZooKeeper集群,在對(duì)納管集群進(jìn)行巡檢的時(shí)候,發(fā)現(xiàn)其中一個(gè)5節(jié)點(diǎn)的集群存在兩個(gè)leader節(jié)點(diǎn)的情況。經(jīng)與業(yè)務(wù)部門確認(rèn),該集群影響多個(gè)重要業(yè)務(wù)系統(tǒng),所以在處理問(wèn)題的時(shí)候既要保證ZooKeeper集群能夠恢復(fù)正常服務(wù),又需要確保所有的業(yè)務(wù)數(shù)據(jù)不能丟失。


問(wèn)題集群為三機(jī)房部署的可容災(zāi)集群,集群信息如下(本文所有IP等關(guān)鍵信息已脫敏):


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


正常情況下一個(gè)ZooKeeper集群只能有一個(gè)leader節(jié)點(diǎn),若干個(gè)follower節(jié)點(diǎn)。如下圖:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


但是該集群在兩個(gè)leader節(jié)點(diǎn)的情況下,各節(jié)點(diǎn)依然狀態(tài)正常,并能夠正常提供服務(wù),確實(shí)有點(diǎn)奇怪。為了能夠說(shuō)明清楚該問(wèn)題,我們先了解下ZooKeeper集群的選舉原則。


二、ZooKeeper集群選舉原則


ZooKeeper集群的leader選舉三原則:


  • 集群中只有超過(guò)半數(shù)以上的節(jié)點(diǎn)啟動(dòng),集群才能正常工作;

  • 在集群正常服務(wù)前,myid小的節(jié)點(diǎn)給myid大的節(jié)點(diǎn)投票,直到集群正常,選出Leader;

  • 選出Leader之后,之前的節(jié)點(diǎn)狀態(tài)由Looking變?yōu)镕ollowing,以后的節(jié)點(diǎn)都是Follower。


假設(shè)一個(gè)5節(jié)點(diǎn)的集群,myid分別是1、2、3、4、5,依序啟動(dòng):


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


  • 各節(jié)點(diǎn)狀態(tài)(1:?jiǎn)?dòng);2:關(guān)停;3:關(guān)停;4:關(guān)停;5:關(guān)停)

  • 選取狀態(tài)(1: LOOKING;2:-;3:-;4:-;5:-)

  • 集群狀態(tài)(節(jié)點(diǎn)未滿半數(shù):失?。?/span>


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


  • 各節(jié)點(diǎn)狀態(tài)(1:?jiǎn)?dòng);2:?jiǎn)?dòng);3:關(guān)停;4:關(guān)停;5:關(guān)停)

  • 選取狀態(tài)(1: LOOKING;2:LOOKING;3:-;4:-;5:-)

  • 集群狀態(tài)(節(jié)點(diǎn)未滿半數(shù):失?。?/span>


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


  • 各節(jié)點(diǎn)狀態(tài)(1:?jiǎn)?dòng);2:?jiǎn)?dòng);3:?jiǎn)?dòng);4:關(guān)停;5:關(guān)停)

  • 選取狀態(tài)(1: FOLLOWING;2:FOLLOWING;3:LEADING;4:-;5:-)

  • 集群狀態(tài)(節(jié)點(diǎn)過(guò)半數(shù):成功)


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


  • 各節(jié)點(diǎn)狀態(tài)(1:?jiǎn)?dòng);2:?jiǎn)?dòng);3:?jiǎn)?dòng);4:?jiǎn)?dòng);5:關(guān)停)

  • 選取狀態(tài)(1: FOLLOWING;2:FOLLOWING;3:LEADING;4:FOLLOWING;5:-)

  • 集群狀態(tài)(節(jié)點(diǎn)過(guò)半數(shù):成功)


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


  • 各節(jié)點(diǎn)狀態(tài)(1:?jiǎn)?dòng);2:?jiǎn)?dòng);3:?jiǎn)?dòng);4:?jiǎn)?dòng);5:?jiǎn)?dòng))

  • 選取狀態(tài)(1: FOLLOWING;2:FOLLOWING;3:LEADING;4:FOLLOWING;5:FOLLOWING)

  • 集群狀態(tài)(節(jié)點(diǎn)過(guò)半數(shù):成功)


三、問(wèn)題分析


根據(jù)集群信息表:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


查看192.176.238.219的日志發(fā)現(xiàn)4號(hào)節(jié)點(diǎn)成為L(zhǎng)EADING狀態(tài)時(shí),集群中有3個(gè)節(jié)點(diǎn):



[myid:4] - INFO  [QuorumPeer[myid=4]/0:0:0:0:0:0:0:0:2181:Leader@946] - Have quorum of supporters, sids: [ 1,2,4 ];


滿足節(jié)點(diǎn)數(shù)過(guò)半的原則,集群正常服務(wù),但是查看節(jié)點(diǎn)內(nèi)容,發(fā)現(xiàn)節(jié)點(diǎn)1、2的內(nèi)容和4不一致,反而是節(jié)點(diǎn)1、2、3、5內(nèi)容是一致的。


查看節(jié)點(diǎn)4的內(nèi)容:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


查看節(jié)點(diǎn)5內(nèi)容:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


通過(guò)內(nèi)容排查可以看出節(jié)點(diǎn)1、2、3、5內(nèi)容一致,可能屬于同一集群,那么節(jié)點(diǎn)4為什么和其它節(jié)點(diǎn)內(nèi)容不一致呢?


繼續(xù)排查節(jié)點(diǎn)的配置信息,發(fā)現(xiàn)節(jié)點(diǎn)4配置的內(nèi)部通訊端口:選舉端口與其它節(jié)點(diǎn)配置的不一致!


節(jié)點(diǎn)4配置情況:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


節(jié)點(diǎn)1、2、3、5的配置情況:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


通過(guò)配置排查可以確認(rèn)1、2、3、5是屬于同一個(gè)集群,那4節(jié)點(diǎn)又是哪個(gè)集群呢?


繼續(xù)排查發(fā)現(xiàn),在同一批主機(jī)下面部署了另一個(gè)ZooKeeper實(shí)例,開放的服務(wù)端口是2182,而其配置的內(nèi)部通訊端口:選舉端口正是2888:3888。


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


通過(guò)排查這個(gè)集群節(jié)點(diǎn)的內(nèi)容發(fā)現(xiàn):節(jié)點(diǎn)1、2的內(nèi)容和上面集群的節(jié)點(diǎn)4內(nèi)容是一致的,而這個(gè)集群3、4、5節(jié)點(diǎn)的內(nèi)容又是一致的!通過(guò)推斷,集群狀態(tài)如下表:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


由于集群2和集群3都有三個(gè)節(jié)點(diǎn),配置的總節(jié)點(diǎn)數(shù)是5,均滿足節(jié)點(diǎn)數(shù)過(guò)半的原則!


四、問(wèn)題影響


那么這種情況下會(huì)出現(xiàn)什么問(wèn)題呢?


本來(lái)正常情況下A類業(yè)務(wù)系統(tǒng)只讀寫2181端口的集群、B類業(yè)務(wù)系統(tǒng)只讀寫2182端口的集群,而現(xiàn)在集群2既可以服務(wù)A類業(yè)務(wù),又可服務(wù)B類業(yè)務(wù),如果集群2的數(shù)據(jù)丟失,將影響兩類業(yè)務(wù)的正常運(yùn)行。


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


五、解決問(wèn)題


集群2是一個(gè)異常集群,但是如果將集群2的節(jié)點(diǎn)恢復(fù)正常并分別加入到集群1和集群3后,集群2的數(shù)據(jù)勢(shì)必會(huì)丟失。由于ZooKeeper集群的數(shù)據(jù)是由A類業(yè)務(wù)系統(tǒng)和B類業(yè)務(wù)系統(tǒng)進(jìn)行讀寫的,解決的方法首先需要將集群2的數(shù)據(jù)導(dǎo)出并根據(jù)業(yè)務(wù)類型進(jìn)行區(qū)分,待集群恢復(fù)正常后,再將這部分?jǐn)?shù)據(jù)依據(jù)業(yè)務(wù)歸屬分別重新寫入到對(duì)應(yīng)的集群。


集群恢復(fù)步驟:


1)為防止數(shù)據(jù)丟失,備份集群1、集群2、集群3的數(shù)據(jù)(snapshot和log)。


2)提取集群2的數(shù)據(jù),并依據(jù)業(yè)務(wù)類型將數(shù)據(jù)分類,并準(zhǔn)備重新寫入。


3)關(guān)停集群2節(jié)點(diǎn)4(192.176.238.219:2181)實(shí)例,集群2剩余2個(gè)節(jié)點(diǎn),不滿足半數(shù)要求,集群重新進(jìn)行選舉,由于集群2的1、2兩個(gè)節(jié)點(diǎn)的通訊、選舉端口和集群3配置一致,并且集群3已經(jīng)選舉了節(jié)點(diǎn)5為leader,那么集群2的節(jié)點(diǎn)1、2將加入到集群3成為follower,形成5節(jié)點(diǎn)的集群。


4)修改集群2節(jié)點(diǎn)4(192.176.238.219:2181)的內(nèi)部通訊端口:選舉端口為2889:3889


5)啟動(dòng)192.176.238.219:2181實(shí)例,由于該實(shí)例的通訊、選舉端口和集群1配置一致,并且集群1已經(jīng)選舉了節(jié)點(diǎn)5為leader, 該實(shí)例將加入集群1成為follower,形成5節(jié)點(diǎn)的集群。


6)分別將原集群2的數(shù)據(jù)分類后重新寫入到集群1和集群3。


7)檢查集群狀態(tài),檢查集群數(shù)據(jù)信息,并進(jìn)行業(yè)務(wù)測(cè)試。


恢復(fù)后的集群信息如下:


運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因


通過(guò)以上操作步驟后,集群恢復(fù)正常,丟失數(shù)據(jù)重新寫入,所有業(yè)務(wù)驗(yàn)證正常。


六、小結(jié)


該問(wèn)題根因很簡(jiǎn)單,只是一個(gè)配置的小問(wèn)題,但是處理卻很容易出錯(cuò)。因?yàn)檫@是一個(gè)已經(jīng)在線運(yùn)行了很久的系統(tǒng),往往不會(huì)懷疑是配置的問(wèn)題,在處理該問(wèn)題時(shí),如果沒(méi)有理清楚問(wèn)題根因,只是簡(jiǎn)單將問(wèn)題集群重啟,表面上問(wèn)題已經(jīng)解決,但是大量數(shù)據(jù)將會(huì)丟失會(huì)嚴(yán)重影響到業(yè)務(wù),并且根因沒(méi)有找到,問(wèn)題依舊存在,隨時(shí)可能復(fù)發(fā)…


說(shuō)了這么多,你還認(rèn)為運(yùn)維只是簡(jiǎn)單的重啟就能解決問(wèn)題嗎?那什么是運(yùn)維呢?


其實(shí)啊,運(yùn)維是個(gè)灶臺(tái),上面背著個(gè)黑鍋,下面還有個(gè)大坑…



特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:

運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因

長(zhǎng)按訂閱更多精彩▼

運(yùn)維老鳥告訴你這個(gè)經(jīng)典Zookeeper問(wèn)題的根因

如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉