?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
當(dāng)Docker引擎以群模式運行時,管理器節(jié)點實施Raft一致性算法來管理全局群集狀態(tài)。
為什么使用Docker swarm模式的原因是使用一個共識算法,以確保那些負(fù)責(zé)管理和調(diào)度任務(wù)集群中的所有節(jié)點的經(jīng)理,都存儲相同一致的狀態(tài)。
在整個集群中具有相同的一致性狀態(tài)意味著如果發(fā)生故障,任何Manager節(jié)點都可以提取任務(wù)并將服務(wù)恢復(fù)到穩(wěn)定狀態(tài)。例如,如果負(fù)責(zé)在集群中調(diào)度任務(wù)的負(fù)責(zé)人經(jīng)理意外死亡,則任何其他經(jīng)理都可以執(zhí)行調(diào)度任務(wù)并重新平衡任務(wù)以匹配期望的狀態(tài)。
使用共識算法在分布式系統(tǒng)中復(fù)制日志的系統(tǒng)需要特別小心。它們通過要求大多數(shù)節(jié)點同意值來確保集群狀態(tài)在出現(xiàn)故障時保持一致。
Raft允許(N-1)/2
失敗,并且要求大多數(shù)(N/2)+1
成員或法定成員的成員同意向群集提出的值。這意味著在一個由5個管理員組成的集群中,如果有3個節(jié)點不可用,系統(tǒng)將不會處理更多的請求來安排額外的任務(wù)。現(xiàn)有的任務(wù)將繼續(xù)運行,但如果管理器集合不健康,則調(diào)度程序?qū)o法重新平衡任務(wù)以應(yīng)對失敗。
集群模式中實現(xiàn)共識算法意味著它具有分布式系統(tǒng)固有的特性:
就容錯系統(tǒng)中的值達(dá)成一致。(參考FLP不可能性定理和Raft共識算法論文)
通過領(lǐng)導(dǎo)人選舉過程相互排斥
集群成員資格管理
全球一致的對象排序和CAS(比較和交換)基元
docker,容器,集群,swarm,raft
根據(jù)ApacheLicense,版本2.0獲得許可。
Docker,Inc.和其他各方也可以在這里使用的其他術(shù)語中擁有商標(biāo)權(quán)。