节点如何工作

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

有两种类型的节点: 管理者工作者

Swarm mode cluster

如果尚未阅读,请先查阅 Swarm 模式概述核心概念

管理节点

管理节点处理集群管理任务:

使用 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 将工作节点提升为管理节点。 例如,当您希望将一个管理节点离线进行维护时,您可能需要提升一个工作节点。请参见

您也可以将管理节点降级为工作节点。请参见 节点降级

了解更多

  • 阅读有关 Swarm 模式 服务 如何工作的内容。
  • Learn how PKI works in Swarm mode.