为什么要在docker swarm集群中为节点选择角色?

时间:2018-04-04 08:45:23

标签: docker docker-swarm docker-swarm-mode docker-engine

假设我们有10个节点,4个经理和6个工人的测试设置。

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

当这位领导人失败时,我们只剩下4名经理。其他经理随后说

  

来自守护程序的错误响应:rpc错误:code = Unknown desc = swarm没有领导者。在线经理可能太少。确保超过一半的经理在线。

因为我们有不超过超过一半的经理人,他们将无法选择新的领导者,尽管留下了2位经理人。

我的问题是

  1. 这条规则的意义,因为只要没有额外的经理被添加到集群中,集群就没有领导者而且不再可管理,尽管有2个经理可用。
  2. 我为什么要为节点选择角色工作者?将节点作为工人有什么优势?管理员默认情况下也充当工作人员,但缺点是当管理员节点发生故障时他们无法接管。

1 个答案:

答案 0 :(得分:2)

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

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

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

      因为管理器节点使用Raft一致性算法以一致的方式复制数据,所以它们对资源饥饿很敏感

      引用来自码头官方文档link