我有一个问题,我正在尝试将网络流量路由到phpfpm实例。定期,当我重新启动我的aws ec2实例时,我得到502'坏网关'错误,因为phpfpm容器没有响应来自Web服务容器。
我可以跳进php容器没问题,一切看起来都不错,但不知怎的,我不能做telnet phpcontainer 9000
- 它说连接无法建立。它似乎是将服务名称的ip解析为服务网关ok。 php服务只有1个副本,但Web服务有2个副本(全局复制)。
然后我开始检查服务和容器的所有IP地址。
我注意到2个服务具有相同的cidr(问题的服务):
docker service inspect webservice | grep Addr
"Addr": "10.255.0.4/16"
"Addr": "172.20.0.2/16"
docker service inspect phpservice23 | grep Addr
"Addr": "172.20.0.2/16"
这是正常的吗?
所有的IP地址都是独一无二的(注意上面我说的是服务cidrs)
我只是无法弄清楚是什么导致这个特定容器可以从另一个服务访问。
如果我重新启动问题容器,它将在那之后工作。
有任何想法吗?
我实际上已经知道这里的问题是我们通过api创建了一个带有错误规范的服务。可能还有另一个错误,但是如果你创建了一个服务而没有指定EndpointSpec.Mode
属性,那么当重启docker守护进程时,我们得到的服务会获得重复的ip地址。