Docker Engine 1.12引入了swarm模式,使您可以创建一个或多个Docker Engine集群,称为swarm。一个群集由一个或多个节点组成:以群集模式运行Docker Engine 1.12或更高版本的物理机或虚拟机。
有两种类型的节点:管理者和 工人。
管理者节点
管理器节点处理集群管理任务:
- 维持集群状态
- 调度服务
- 服务群模式HTTP API端点
使用Raft实施,管理人员可以维护整个群集及其上运行的所有服务的一致内部状态。出于测试目的,可以由一个管理器运行一个集群。如果单管理器群中的管理器发生故障,那么您的服务将继续运行,但是您需要创建一个新的集群以进行恢复。
为了利用群体模式的容错功能,Docker建议您根据组织的高可用性要求实现奇数个节点。如果拥有多个管理器,则可以从管理器节点的故障中恢复,而无需停机。
- 一个由三名经理组成的群体最多可以容忍一名经理的损失。
- 五个管理器群最多可以同时丢失两个管理器节点。
- 一个N管理器群集最多可以容忍管理器的丢失 (N-1)/2。
- Docker建议最多为七个管理器节点。
工作节点
工作程序节点也是Docker Engine的实例,其唯一目的是执行容器。工作程序节点不参与Raft分布式状态,不制定调度决策或服务于群体模式HTTP API。
您可以创建一个由一个管理器节点组成的集群,但是如果没有至少一个管理器节点就不能有一个工作器节点。默认情况下,所有经理也是工人。在单个管理器节点集群中,您可以运行诸如之类docker service create的命令,而调度程序会将所有任务放置在本地引擎上。
为了防止调度程序将任务放置在多节点集群中的管理器节点上,请将管理器节点的可用性设置为Drain。调度程序会以Drain模式正常停止节点上的任务,并调度Active节点上的任务 。调度程序不会将新任务分配给具有Drain 可用性的节点。