Docker Swarm --advertise-addr更改

时间:2018-01-19 03:54:45

标签: docker ip cluster-computing load-balancing docker-swarm

我有一个3节点群。每个都有一个静态IP地址。我在ip 192.168.2.100上有一个领导节点-0,在192.1682.101上有一个备份管理器节点-1,在192.168.2.102上有一个工作节点-2。 node-0是初始化swarm的领导者,因此--advertise-addr192.168.2.100。我可以部署可以在任何节点上运行的服务,而node-0可以处理负载均衡。因此,如果我在node-2(192.168.2.102:3306)上有一个数据库,它仍然可以从node-0 192.168.2.100:3306访问,即使该服务没有直接在node-0上运行。

enter image description here

但是,当我重新启动node-0(让我们说它失去电源)时,下一个管理员会假设领导角色(node-1) - 正如预期的那样。

但是,现在如果我想访问一个服务,让我们说一个客户端(一个不在swarm中的计算机)的API或数据库,我必须使用192.168.2.101:3306作为我的入口点ip,因为节点-1正在处理负载平衡。因此,基本上来自外部世界(网络上的其他计算机),群的IP地址已经改变,这是不可接受的,也是不切实际的。

有没有办法解决这个问题,以至于给定的经理优先于另一位经理?否则,这种问题是如何解决的,以至于群体的入口点ip不依赖于代理领导者?

1 个答案:

答案 0 :(得分:-1)

制作所有三个节点管理器并使用某种负载平衡DNS指向所有三个管理器节点。如果其中一个管理器出现故障,您的DNS将路由到其他两个管理器中的一个(根据您的DNS路由/运行状况检查/故障转移设置的复杂程度,无缝地或略微无缝地)。当您使用更多节点扩展时,节点4,5,6等都可以是工作节点,但您将受益于拥有三个管理器而不是一个。