节点如何工作

预计阅读时间:2分钟

Docker Engine 1.12引入了swarm模式,使您可以创建一个或多个Docker Engine集群,称为swarm。一个群集由一个或多个节点组成:以群集模式运行Docker Engine 1.12或更高版本的物理机或虚拟机。

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

群体模式集群

如果尚未阅读群模式概述关键概念,请仔细阅读 。

管理者节点

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

使用Raft实施,管理人员可以维护整个群集及其上运行的所有服务的一致内部状态。出于测试目的,可以由一个管理器运行一个集群。如果单管理器群中的管理器发生故障,那么您的服务将继续运行,但是您需要创建一个新的集群以进行恢复。

为了利用群体模式的容错功能,Docker建议您根据组织的高可用性要求实现奇数个节点。如果有多个管理器,则可以从管理器节点的故障中恢复,而无需停机。

  • 一个由三名经理组成的群体最多可以容忍一名经理的损失。
  • 五个管理器群最多可以同时丢失两个管理器节点。
  • 一个N管理器群集最多可以容忍管理器的丢失 (N-1)/2
  • Docker建议最多为七个管理器节点。

    重要说明:添加更多管理器并不意味着增加可伸缩性或更高性能。通常,情况恰恰相反。

工作节点

工作程序节点也是Docker Engine的实例,其唯一目的是执行容器。工作程序节点不参与Raft分布式状态,不制定调度决策或服务于群体模式HTTP API。

您可以创建一个由一个管理器节点组成的集群,但是如果没有至少一个管理器节点就不能有一个工作器节点。默认情况下,所有经理也是工人。在单个管理器节点集群中,您可以运行诸如之类docker service create的命令,而调度程序会将所有任务放置在本地引擎上。

为了防止调度程序将任务放置在多节点集群中的管理器节点上,请将管理器节点的可用性设置为Drain。调度程序会以Drain模式正常停止节点上的任务,并调度Active节点上的任务 。调度程序不会将新任务分配给具有Drain 可用性的节点。

请参考docker node update 命令行参考,以了解如何更改节点可用性。

换角色

您可以通过运行将工作程序节点提升为管理员docker node promote。例如,当您使管理器节点脱机进行维护时,您可能想提升工作器节点。请参阅节点提升

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

学到更多

  • 了解群体模式服务的工作方式。
  • 了解PKI如何在群体模式下工作。
码头工人集装箱集群群模式节点