docker swarm英文文檔學習-12-在集羣模式中的Raft共識

Raft consensus in swarm mode 在集羣模式中的Raft共識

當Docker引擎在集羣模式下運行時,manager節點實現Raft 共識算法來管理全局集羣狀態。
Docker swarm模式使用共識算法的緣由是爲了確保集羣中負責管理和調度任務的全部manager節點都存儲相同的一致性狀態。
跨集羣具備相同的一致狀態意味着在出現故障時,任何管理器節點均可以接收任務並將服務恢復到穩定狀態。例如,若是集羣中負責調度任務的Leader Manager意外死亡,那麼任何其餘Manager均可以繼續調度任務並從新平衡任務,以匹配所需的狀態。算法

使用共識算法在分佈式系統中複製日誌的系統確實須要特別注意。它們要求大多數節點對值達成一致,從而確保集羣狀態在出現故障時保持一致。

Raft能夠容忍(N-1)/2次失敗,而且須要多數或(N/2)+1個成員仲裁來就建議給集羣的值達成一致。這意味着在一個由5個管理器組成的運行Raft的集羣中,若是3個節點不可用,系統將沒法處理更多請求來調度其餘任務。現有任務繼續運行,但若是管理器集不健康,調度器沒法從新平衡任務以處理失敗。

共識算法在羣體模式下的實現意味着它具備分佈式系統固有的特性:分佈式

  • 在容錯系統中的值的一致。(參考FLP不可能定理(FLP impossibility theorem)和Raft Consensus算法論文(Raft Consensus Algorithm paper))
  • 經過領導人選舉程序相互排斥
  • 集羣成員管理
  • 全局一致的對象排序和CAS(比較和交換)原語
相關文章
相關標籤/搜索