节点如何工作
Swarm 模式允许您创建一个由一个或多个 Docker Engine 组成的集群,称为 swarm。swarm 由一个或多个节点组成:运行 Docker Engine 的物理或虚拟机。

如果尚未阅读,请先查阅 Swarm 模式概述 和 核心概念。
管理节点
管理节点处理集群管理任务:
- 维护集群状态
- 调度服务
- 支持 Swarm 模式 HTTP API 端点
使用 Raft 实现,管理者(managers)维护整个集群及其上运行的所有服务的一致内部状态。出于测试目的,可以运行仅包含单个管理者的集群。如果单管理者集群中的管理者发生故障,您的服务将继续运行,但您需要创建一个新的集群来恢复。
要利用 Swarm 模式的容错功能,我们建议您根据组织的高可用性要求配置奇数个节点。当您拥有多个管理节点时,即使某个管理节点发生故障,系统也能在零停机时间下实现恢复。
一个包含三个管理节点的 Swarm 集群最多可容忍一个管理节点丢失。
一个包含五个管理节点的 Swarm 集群最多可容忍同时失去两个管理节点。
集群中奇数个
N个管理节点最多可容忍丢失(N-1)/2个管理节点。 Docker 建议 Swarm 中的管理节点数量最多为七个。重要
添加更多管理器并不意味着可扩展性或性能的提高。通常,情况恰恰相反。
工作节点
工作节点也是 Docker Engine 的实例,其唯一目的是 执行容器。工作节点不参与 Raft 分布式 状态,不进行调度决策,也不提供 swarm 模式 HTTP API。
您可以创建一个仅包含一个管理节点的集群,但如果没有至少一个管理节点,则无法拥有工作节点。默认情况下,所有管理节点同时也是工作节点。
在单管理节点集群中,您可以运行诸如 docker service create 之类的命令,并且调度器会将所有任务安排在本地引擎上执行。
为防止调度程序在多节点
swarm 中的管理节点上放置任务,请将管理节点的可用性设置为 Drain。调度程序会优雅地停止处于 Drain 模式的节点上的任务,并将这些任务调度到处于 Active 状态的节点上。调度程序不会向可用性为 Drain 的节点分配新任务。
参考
docker node update
命令行参考,了解如何更改节点可用性。
更改角色
您可以通过运行 docker node promote 将工作节点提升为管理节点。
例如,当您希望将一个管理节点离线进行维护时,您可能需要提升一个工作节点。请参见
您也可以将管理节点降级为工作节点。请参见 节点降级。