當(dāng) Docker Engine 以 swarm 模式運(yùn)行時(shí),管理器節(jié)點(diǎn)實(shí)現(xiàn) Raft 共識(shí)算法來管理全局集群狀態(tài)。
為什么原因Docker群模式是使用一個(gè)共識(shí)算法,以確保那些負(fù)責(zé)在集群中的管理和調(diào)度任務(wù)的所有經(jīng)理節(jié)點(diǎn),都存儲(chǔ)相同一致的狀態(tài)。
在整個(gè)集群中具有相同的一致狀態(tài)意味著在發(fā)生故障時(shí),任何 Manager 節(jié)點(diǎn)都可以接收任務(wù)并將服務(wù)恢復(fù)到穩(wěn)定狀態(tài)例如,如果集群中負(fù)責(zé)調(diào)度任務(wù)的Leader Manager意外終止,任何其他 Manager 都可以接手調(diào)度的任務(wù)并重新平衡任務(wù)以匹配所需的狀態(tài)
使用共識(shí)算法在分布式系統(tǒng)中復(fù)制日志的系統(tǒng)確實(shí)需要特別小心它們通過要求大多數(shù)節(jié)點(diǎn)就值達(dá)成一致來確保集群狀態(tài)在出現(xiàn)故障時(shí)保持一致
Raft 最多可以容忍/2失敗,并且需要大多數(shù)或法定人數(shù)的 +1成員就提議給集群的值達(dá)成一致這意味著在運(yùn)行 Raft 的 5 個(gè) Manager 的集群中,如果 3 個(gè)節(jié)點(diǎn)不可用,系統(tǒng)將無法處理更多請(qǐng)求以安排額外的任務(wù)現(xiàn)有任務(wù)繼續(xù)運(yùn)行,但如果管理器集不健康,則調(diào)度程序無法重新平衡任務(wù)以應(yīng)對(duì)故障
群體模式下共識(shí)算法的實(shí)現(xiàn)意味著它具有分布式系統(tǒng)固有的特性:
1.容錯(cuò)系統(tǒng)中的值達(dá)成一致。
2.通過領(lǐng)導(dǎo)人選舉過程相互排斥
3.集群成員管理
4.全局一致的對(duì)象排序和 CAS原語
鄭重聲明:此文內(nèi)容為本網(wǎng)站轉(zhuǎn)載企業(yè)宣傳資訊,目的在于傳播更多信息,與本站立場(chǎng)無關(guān)。僅供讀者參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。
|