Docker Swarm 可以在最少一台机器上部署,但机器出现问题后整个集群都不再可用,那如何规划集群中的节点更加合理呢?
Docker Swarm 中的节点角色
Docker Swarm
集群中的主机称为节点,节点有两种角色,Manager
管理节点和 Worker
工作节点。
管理节点负责了以下工作:
- 维护集群状态
- 调度服务
- 提供 Swarm 相关的 HTTP API
Manager 节点维护整个 swarm 及其上运行的所有服务内部状态的一致性。如果只是为了测试,可以使用单个管理节点运行 swarm。在单管理节点群中,管理节点出现故障时服务并不会停止,但需要创建一个新集群才能恢复。
Worker 节点也是运行 Docker 的主机,它唯一的作用是执行容器。工作节点不参与集群状态管理,也不做出调度决策。集群可以只由一个 Manager 节点组成,但只有一个 Worker 节点是不行的。
Swarm 模式本身具有一定的容错性,Docker 官方建议在构建集群时部署奇数个节点。当一个集群中有多个管理节点时,它可以在不停机的情况下从故障中恢复。
- 有 3 个管理节点的群体最多可以容忍 1 个管理节点丢失
- 有 5 个管理节点群最大可以容忍同时丢失 2 个管理节点节点
- 有
N
个管理节点集群最多可以容忍(N-1)/2
的管理节点丢失