節點的工作原理
Swarm 模式允許您建立一個或多個 Docker Engine 組成的叢集,稱為 swarm。一個 swarm 由一個或多個節點組成:執行 Docker Engine 的物理機或虛擬機器。


如果您還沒有閱讀,請先閱讀 Swarm 模式概述和關鍵概念。
管理節點
管理節點處理叢集管理任務
- 維護叢集狀態
- 排程服務
- 提供 Swarm 模式的 HTTP API 端點
透過使用 Raft 實現,管理節點維護整個 swarm 及其上執行的所有服務的一致內部狀態。出於測試目的,可以執行只有一個管理節點的 swarm。如果單管理節點 swarm 中的管理節點發生故障,您的服務會繼續執行,但您需要建立一個新叢集才能恢復。
為了利用 Swarm 模式的容錯特性,我們建議您根據組織的高可用性要求,部署奇數個節點。當您有多個管理節點時,您可以在管理節點發生故障時恢復而無需停機。
一個三管理節點的 swarm 最多可以容忍一個管理節點的丟失。
一個五管理節點的 swarm 最多可以容忍同時丟失兩個管理節點。
叢集中奇數個
N
管理節點最多可以容忍(N-1)/2
個管理節點的丟失。Docker 建議一個 swarm 最多有七個管理節點。重要提示增加更多管理節點並不意味著可伸縮性或效能的提升。通常情況下,情況恰恰相反。
工作節點
工作節點也是 Docker Engine 的例項,其唯一目的是執行容器。工作節點不參與 Raft 分散式狀態,不做出排程決策,也不提供 swarm 模式的 HTTP API。
您可以建立一個單管理節點的 swarm,但不能在沒有至少一個管理節點的情況下擁有工作節點。預設情況下,所有管理節點也都是工作節點。在單管理節點叢集中,您可以執行像 docker service create
這樣的命令,排程器會將所有任務放在本地引擎上。
要防止排程器在多節點 swarm 中將任務放在管理節點上,請將該管理節點的可用性設定為 Drain
。排程器會平穩地停止處於 Drain
模式的節點上的任務,並將這些任務排程到 Active
節點上。排程器不會將新任務分配給可用性為 Drain
的節點。
請參閱 docker node update
命令列參考,瞭解如何更改節點可用性。
更改角色
您可以透過執行 docker node promote
將工作節點提升為管理節點。例如,當您將一個管理節點下線進行維護時,可能需要提升一個工作節點。請參閱節點提升。
您也可以將管理節點降級為工作節點。請參閱節點降級。