成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分布式實(shí)現(xiàn):如何檢測(cè)一臺(tái)機(jī)器是否宕機(jī)?

運(yùn)維 系統(tǒng)運(yùn)維 Linux 分布式
檢測(cè)一臺(tái)機(jī)器是否宕機(jī)必須是可靠的。在大規(guī)模集群中,機(jī)器可能出現(xiàn)各種異常,比如停電,磁盤故障,過于繁忙導(dǎo)致假死等。對(duì)于機(jī)器假死,如果總控節(jié)點(diǎn)認(rèn)為機(jī)器宕機(jī)并將服務(wù)遷移到其它節(jié)點(diǎn),假死的機(jī)器又認(rèn)為自己還可以提供服務(wù),則會(huì)出現(xiàn)多個(gè)節(jié)點(diǎn)服務(wù)同一份數(shù)據(jù)而導(dǎo)致數(shù)據(jù)不一致的情況。

編輯導(dǎo)讀:本文轉(zhuǎn)載自淘寶核心系統(tǒng)運(yùn)維團(tuán)隊(duì)博客,文中描述的宕機(jī)檢測(cè)方式適用于大規(guī)模集群環(huán)境,但原理仍是基于雙節(jié)點(diǎn),有需求的朋友們可以借鑒。

檢測(cè)一臺(tái)機(jī)器是否宕機(jī)的應(yīng)用場(chǎng)景如下:

1, 工作機(jī)器宕機(jī),總控節(jié)點(diǎn)需要能夠檢測(cè)到并且將原有服務(wù)遷移到集群中的其它節(jié)點(diǎn)。

2, 總控節(jié)點(diǎn)宕機(jī),總控節(jié)點(diǎn)的備份節(jié)點(diǎn)(一般稱為Slave)需要能夠檢測(cè)到并替換成主節(jié)點(diǎn)繼續(xù)對(duì)外服務(wù)。

檢測(cè)一臺(tái)機(jī)器是否宕機(jī)必須是可靠的。在大規(guī)模集群中,機(jī)器可能出現(xiàn)各種異常,比如停電,磁盤故障,過于繁忙導(dǎo)致假死等。對(duì)于機(jī)器假死,如果總控節(jié)點(diǎn)認(rèn)為機(jī)器宕機(jī)并將服務(wù)遷移到其它節(jié)點(diǎn),假死的機(jī)器又認(rèn)為自己還可以提供服務(wù),則會(huì)出現(xiàn)多個(gè)節(jié)點(diǎn)服務(wù)同一份數(shù)據(jù)而導(dǎo)致數(shù)據(jù)不一致的情況。
 

首先必須明確,理論上檢測(cè)另外一臺(tái)機(jī)器是否宕機(jī)是無法做到的,有興趣的同學(xué)可以參考Fischer的論文。可以簡(jiǎn)單理解如下:A機(jī)器往B機(jī)器發(fā)送心跳包,如果B機(jī)器不發(fā)送響應(yīng),A無法確定B機(jī)器是宕機(jī)了還是過于繁忙,由于A和B兩臺(tái)機(jī)器的時(shí)鐘可能不同步,B機(jī)器也無法確定多久沒有收到A機(jī)器的心跳包可以認(rèn)為必須停止服務(wù)。因此,A機(jī)器沒有辦法確定B機(jī)器已經(jīng)宕機(jī)或者采取措施強(qiáng)制B機(jī)器停止服務(wù)。

當(dāng)然,工程實(shí)踐中,由于機(jī)器之間會(huì)進(jìn)行時(shí)鐘同步,我們總是假設(shè)A和B兩臺(tái)機(jī)器的本地時(shí)鐘相差不大,比如相差不超過0.5秒。這樣,我們可以通過Lease機(jī)制進(jìn)行宕機(jī)檢測(cè)。Lease機(jī)制就是帶有超時(shí)時(shí)間的一種授權(quán)。假設(shè)總控節(jié)點(diǎn)需要檢測(cè)工作節(jié)點(diǎn)是否宕機(jī),總控節(jié)點(diǎn)可以給工作節(jié)點(diǎn)發(fā)放Lease授權(quán),工作節(jié)點(diǎn)持有有效期內(nèi)的Lease才允許提供服務(wù),否則主動(dòng)下線停止服務(wù)。工作節(jié)點(diǎn)的Lease快要到期的時(shí)候向總控節(jié)點(diǎn)重新申請(qǐng)Lease(一般稱為renewLease),總控節(jié)點(diǎn)定時(shí)檢測(cè)所有工作機(jī)的Lease授權(quán)是否合法,如果發(fā)現(xiàn)某臺(tái)工作機(jī)Lease失效,可以將工作機(jī)上的服務(wù)遷移到集群中的其它機(jī)器,這時(shí)因?yàn)楣ぷ鳈C(jī)發(fā)現(xiàn)自己Lease失效會(huì)主動(dòng)停止服務(wù)。當(dāng)然,這里需要注意,由于總控節(jié)點(diǎn)和工作機(jī)的時(shí)鐘可能不一致且有網(wǎng)絡(luò)延遲,總控節(jié)點(diǎn)上的Lease超時(shí)時(shí)間要長(zhǎng),也就是說,如果工作節(jié)點(diǎn)的Lease超時(shí)時(shí)間是12秒,總控節(jié)點(diǎn)可能需要13秒后才能確認(rèn)工作節(jié)點(diǎn)已經(jīng)停止了服務(wù),從而避免數(shù)據(jù)不一致問題。

同構(gòu)節(jié)點(diǎn)之間的選主也有一個(gè)宕機(jī)檢測(cè)問題。比如總控節(jié)點(diǎn)宕機(jī),備份節(jié)點(diǎn)需要能夠檢測(cè)并升級(jí)為主節(jié)點(diǎn)繼續(xù)對(duì)外服務(wù)。Mysql數(shù)據(jù)庫(kù)經(jīng)常采用Heartbeat + DRBD (Distributed Replicated Block Device) + Mysql的高可用性方案,據(jù)說能夠達(dá)到3個(gè)9的高可用性,主節(jié)點(diǎn)和備節(jié)點(diǎn)維持Heartbeat心跳,當(dāng)提供服務(wù)的主節(jié)點(diǎn)出現(xiàn)故障時(shí),備節(jié)點(diǎn)的Heartbeat檢測(cè)到主節(jié)點(diǎn)沒有心跳(例如,Ping不通主節(jié)點(diǎn)),備節(jié)點(diǎn)自動(dòng)接管虛擬IP,升級(jí)為主節(jié)點(diǎn)提供Mysql讀寫服務(wù)。由于Heartbeat檢測(cè)機(jī)器主節(jié)點(diǎn)宕機(jī)不可靠,這個(gè)方案存在眾所周知的腦裂問題,即集群中可能同時(shí)存在多個(gè)主節(jié)點(diǎn)同時(shí)提供服務(wù)。解決這個(gè)問題本質(zhì)上還是需要引入仲裁節(jié)點(diǎn),比如Heartbeat + DRBD方案中引入Fence節(jié)點(diǎn)使出現(xiàn)問題的節(jié)點(diǎn)從集群中脫離,或者引入分布式鎖服務(wù),比如Chubby的開源實(shí)現(xiàn)Zookeeper服務(wù)。分布式鎖服務(wù)實(shí)現(xiàn)主節(jié)點(diǎn)選舉大致如下:主節(jié)點(diǎn)和備節(jié)點(diǎn)到Chubby中搶鎖,搶到鎖的節(jié)點(diǎn)在鎖的有效期(Lease期)內(nèi)提供服務(wù),當(dāng)主節(jié)點(diǎn)鎖的Lease快要到期時(shí),主節(jié)點(diǎn)申請(qǐng)延長(zhǎng)鎖的超時(shí)時(shí)間,正常情況下分布式鎖服務(wù)總是優(yōu)先滿足主節(jié)點(diǎn)的請(qǐng)求,當(dāng)主節(jié)點(diǎn)出現(xiàn)故障時(shí),備節(jié)點(diǎn)能夠搶到鎖切換為主節(jié)點(diǎn)提供服務(wù)。

***還有一個(gè)問題,假設(shè)總控節(jié)點(diǎn)通過Lease機(jī)制檢測(cè)工作節(jié)點(diǎn)是否宕機(jī),這種方案是可靠的,不過當(dāng)總控節(jié)點(diǎn)宕機(jī)時(shí),如果不采取任何措施,集群中的所有工作節(jié)點(diǎn)都將因?yàn)闊o法重新申請(qǐng)Lease而停止服務(wù),這就是帶有總控節(jié)點(diǎn)的設(shè)計(jì)固有的脆弱性,某個(gè)設(shè)計(jì)或者編碼的錯(cuò)誤都有可能造成嚴(yán)重的影響。解決這個(gè)問題一般會(huì)有一個(gè)叫做Grace Period的機(jī)制,工作節(jié)點(diǎn)Lease超時(shí)時(shí)將停止服務(wù),但是工作節(jié)點(diǎn)并不一開始就重啟或者下線,而是處于一種危險(xiǎn)狀態(tài)(稱為Jeopardy),這種狀態(tài)持續(xù)一個(gè)Grace Period,比如45秒。如果在Grace Period 內(nèi)總控節(jié)點(diǎn)重啟,工作節(jié)點(diǎn)和總控節(jié)點(diǎn)重新聯(lián)系上從而可以切換為正常狀態(tài)繼續(xù)提供服務(wù)。

如果需要較好地理解宕機(jī)及選舉相關(guān)的問題,可以閱讀并思考Paxos相關(guān)的論文,比如Paxos made simple, The Part-time Parliament, Paxos made live, Paxos made practical, Chubby等。有任何問題,歡迎討論。

【編輯推薦】

  1. 互聯(lián)網(wǎng)40年:千里之行始于“宕機(jī)”
  2. 國(guó)外十大流行的服務(wù)器監(jiān)控工具(外篇)
  3. 10款免費(fèi)的企業(yè)級(jí)安全監(jiān)控工具
責(zé)任編輯:yangsai 來源: rdc.taobao.com
相關(guān)推薦

2018-09-27 10:47:45

機(jī)房計(jì)算機(jī)DNS

2011-05-16 10:58:06

MySQL服務(wù)器

2009-09-22 18:26:14

運(yùn)行多個(gè)JBoss

2023-08-21 19:10:34

Redis分布式

2023-09-04 08:45:07

分布式配置中心Zookeeper

2022-11-02 07:27:06

Java版本管理

2024-04-01 05:10:00

Redis數(shù)據(jù)庫(kù)分布式鎖

2024-01-02 13:15:00

分布式鎖RedissonRedis

2021-09-09 15:45:17

機(jī)器學(xué)習(xí)人工智能Ray

2024-10-07 10:07:31

2024-03-19 11:41:12

2021-11-01 12:25:56

Redis分布式

2022-06-27 08:21:05

Seata分布式事務(wù)微服務(wù)

2024-07-15 08:25:07

2010-08-31 10:13:25

DB2安裝Linux

2020-06-29 12:36:04

RPA應(yīng)用UiPath

2023-09-14 15:38:55

云原生分布式架構(gòu)

2020-07-30 09:35:09

Redis分布式鎖數(shù)據(jù)庫(kù)

2017-12-05 14:55:56

2019-12-27 16:00:56

分布式事務(wù)框架Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产免费一区二区三区免费视频 | 久久亚洲国产 | 欧美一区二区久久 | 亚洲一区二区精品视频在线观看 | 欧美日韩在线一区二区 | 亚洲 精品 综合 精品 自拍 | 亚洲手机视频在线 | 国产精品美女久久久久久免费 | 妖精视频一区二区三区 | 成年无码av片在线 | 欧美 日韩 中文 | 亚洲欧美一区二区三区国产精品 | 午夜爱爱网 | 欧美亚洲另类在线 | 国产成人一区 | 7777奇米影视 | 国产大片一区 | 中文字幕亚洲区一区二 | 久久精品中文字幕 | 欧美激情久久久 | 九色网址 | 2020天天操| 欧美激情综合 | 91看片在线 | 正在播放国产精品 | 一区二区三区在线免费看 | 日韩在线免费 | 亚洲欧美在线视频 | 日韩毛片在线观看 | 久久成人久久 | 亚洲国产精品视频 | 天天操夜夜爽 | 国产激情视频在线免费观看 | 超碰在线影院 | 久久国产欧美日韩精品 | 在线观看中文字幕视频 | 日韩在线免费播放 | 精精国产xxxx视频在线播放 | 一区二区中文 | 婷婷免费在线 | 国产精品一区网站 |