节点工作原理

Swarm模式允许您创建一个或多个称为Swarm的Docker Engine集群。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模式服务如何工作的信息。
  • 了解Swarm模式中PKI如何工作。