为什么根本要为docker swarm集群中的节点选择充当工作者的角色?

Cra*_*vid 5 docker docker-swarm docker-engine docker-swarm-mode

假设我们有一个包含10个节点,4个管理人员和6个工作人员的测试设置。

当领导者经理失败时,其他3名经理将选择另一名经理作为领导者。

如果这位领导者也失败了,我们将只剩下2名经理。4名其他经理然后说

来自守护程序的错误响应:rpc错误:代码=未知desc =集群没有领导者。在线上的管理人员可能太少。确保一半以上的经理在线。

由于剩下的管理人员超过一半,因此尽管剩下集群中的2名管理人员,他们将无法选择新的领导者。

我的问题是

  1. 之所以具有这种规则的意义,是因为该集群没有领导者,并且只要没有其他管理器添加到集群中就不再可以管理,尽管有2个管理器可用。
  2. 为什么我应该为所有节点选择角色工作者?将节点作为工作人员有什么优势?默认情况下,管理器还充当工作程序,其缺点是当管理器节点发生故障时它们无法接管。

Vam*_*msi 4

  1. Docker 建议使用具有奇数个管理节点的系统。因此,您初始设置的 4 个管理器与拥有 3 个管理器节点一样好。建议您从 5 个节点开始,因为您会失去 2 个节点。另外,您使用的方式是否有任何严重的问题需要解决?(失去这么多节点并不是一个好兆头)

如果 swarm 失去了管理者的法定人数,则 swarm 无法执行管理任务。如果您的群体有多个管理者,则始终有两个以上。为了维持法定人数,大多数经理必须有空。建议使用奇数数量的管理器,因为下一个偶数数量不会使法定人数更容易保持。例如,无论您有 3 名还是 4 名经理,您仍然只能失去 1 名经理并维持法定人数。如果你有 5 或 6 名经理,你仍然只能失去两名。

  1. 拥有专用的工作节点可确保它们不会参与 Raft 分布式状态、做出调度决策或提供集群模式 HTTP API。因此,这些节点的全部计算能力专门用于运行容器。

由于管理节点使用 Raft 共识算法以一致的方式复制数据,因此对资源匮乏很敏感

引用内容取自docker官方文档链接