节点如何工作

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 将工作节点提升为管理器。例如,当你为了维护而使管理器节点离线时,你可能需要提升一个工作节点。请参阅 node promote

你还可以将管理器节点降级为工作节点。请参阅 node demote

了解更多

  • 阅读关于 Swarm 模式服务如何工作。
  • 了解 PKI 在 Swarm 模式下如何工作。
页面选项