節點的工作原理

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

節點有兩種型別:管理節點工作節點

Swarm mode cluster

如果您還沒有閱讀,請先閱讀 Swarm 模式概述關鍵概念

管理節點

管理節點處理叢集管理任務

透過使用 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 將工作節點提升為管理節點。例如,當您將一個管理節點下線進行維護時,可能需要提升一個工作節點。請參閱節點提升

您也可以將管理節點降級為工作節點。請參閱節點降級

瞭解更多

  • 閱讀有關 Swarm 模式服務如何工作的內容。
  • 瞭解 PKI 在 Swarm 模式中如何工作。