Docker SWARM容器的循环行为不适用于多个主机
如果群集服务部署在2节点群集(1manager + 1worker)中。 假设副本设置为3,则会启动容器:一个节点中有2个,另一个节点中有1个容器。
当IP地址pipe理器或工作者命中curl命令时 – 驻留在同一主机上的容器以RR方式被服务。 这个请求不会从另一个节点获得服务,因此这个configuration对于我来说不能实现故障转移或HA(跨越多个节点)的目的。
让我分享一下我所做的详细步骤: https : //privatedock.wordpress.com/2017/04/09/docker-swarm/
请让我知道如果我错过了什么。 提前致谢。
我看到您正在部署AWS并使用Public IP for Swarm广告IP。 你确定你要这么做吗? AWSnetworking收费基于通过公共IP传输的数据。 你是否打开了你的公共接口的防火墙规则?
Port 7946 TCP/UDP for container network discovery. Port 4789 UDP for the container overlay network.
如果您在VPC中使用私有IP地址,则可以排除防火墙。 而且你不会为带宽收费。
您的服务也是使用VIP进行负载平衡创build的。 如果您想要DNS RR,则需要将--endpoint-mode dnsrr
添加到您的--endpoint-mode dnsrr
docker service create
命令中。
如果在容器中运行以下python脚本,则可以validationDNS RR正在工作。 将SERVICE_NAMEreplace为您想要解决的服务。
python -c "import socket; print socket.gethostbyname_ex('SERVICE_NAME')[2]"