Swarm集群Consul设置

我目前正在尝试按照以下方式设置Docker集群:

  • NodeA:SwarmManager1 + Consul1
  • NodeB:SwarmManager2 + Consul2
  • NodeC:SwamNode1(通告给Consul1)+ Consul3
  • NodeD:SwarmNode2(广告给Consul2)

我做了一些HAtesting,发现了以下的行为:

我在监视docker集群信息的同时重新启动了NodeB,并且我注意到在重启时,SwarmNode2与集群断开连接。 我的解释是,因为Consul2closures,并且Node2被configuration为连接到同一个Consul,它在集群透视图上变得不可用。

为了避免这个问题,为Swarm容器设置发现服务的正确方法是什么?

我build议创build一个领事集群,最好独立在不同的节点上。 一旦创build集群,只要维持法定人数,所有领事客户应继续正常运行。

我也build议用-join标志给多个consul服务器地址,以确保代理将能够重新join,以防一些领事服务器closures时重新启动。