我有一个问题,我正在尝试将网络流量路由到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 )
我无法弄清楚导致这个特定容器无法从其他服务访问的原因。
如果我重新启动问题容器,它将在此之后工作。
有什么想法吗?
答案 0 :(得分:1)
我实际上已经知道这里的问题是我们通过api创建了一个带有错误规范的服务。可能还有另一个错误,但是如果你创建了一个服务而没有指定EndpointSpec.Mode
属性,那么当重启docker守护进程时,我们得到的服务会获得重复的ip地址。