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