我正在测试全新版本的 Docker Swarm 1.2.0,尤其是重新调度功能。
所以,我有一个安装了集群管理器的 EC2 虚拟机和 2 个集群代理(在另外 2 个 EC2 虚拟机上)。我有一个通过 swarm 部署的 HTTP Rest 服务,如下所示:
docker -H :4000 run -d -p :81 -e reschedule:on-node-failure myTestService
此命令行工作正常,并将我的测试服务部署在一个节点(node-1)上。如果我运行 docker ps 我会看到我的容器部署在节点一上:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23ce231b5737 myTestService "/nodejs/bin/npm star" 3 minutes ago Up 3 minutes 0.0.0.0:32768->81/tcp distracted_sinoussi
查看端口映射:0.0.0.0:32768->81/tcp 我让 docker 引擎选择主机上的可用端口(32768)。
现在,如果我关闭 node-1,swarm 应该重新调度我的容器。如果我查看 swarm 日志,我有这个:
time="2016-04-19T13:56:31Z" level=info msg="Initializing discovery without TLS"
time="2016-04-19T13:56:31Z" level=info msg="Listening for HTTP" addr=":4000" proto=tcp
time="2016-04-19T13:56:38Z" level=info msg="Registered Engine ip-node-1 at ip.node.1:2375"
time="2016-04-19T13:56:45Z" level=info msg="Registered Engine ip-node -2 at ip.node.2:2375"
time="2016-04-19T13:58:24Z" level=error msg="Flagging engine as unhealthy. Connect failed 3 times" id="ZSWT:XLYS:D2HA:K5J3:O32D:AFVT:HUNR:ENKI:MBTC:2PVA:JIC2:X74L" name= ip-node-1
time="2016-04-19T13:58:24Z" level=error msg="Error monitoring events: unexpected EOF." id="ZSWT:XLYS:D2HA:K5J3:O32D:AFVT:HUNR:ENKI:MBTC:2PVA:JIC2:X74L" name= ip-node-1
time="2016-04-19T13:58:24Z" level=error msg="Restart event monitoring." id="ZSWT:XLYS:D2HA:K5J3:O32D:AFVT:HUNR:ENKI:MBTC:2PVA:JIC2:X74L" name= ip-node-1
time="2016-04-19T13:58:24Z" level=error msg="Error monitoring events: Get http://ip.node.1:2375/v1.15/events: dial tcp ip.node.1:2375: getsockopt: connection refused." id="ZSWT:XLYS:D2HA:K5J3:O32D:AFVT:HUNR:ENKI:MBTC:2PVA:JIC2:X74L" name=ip-node-1
time="2016-04-19T13:58:24Z" level=info msg="Rescheduled container 23ce231b57375a386909175f3dcd730720429eb4ed41d4366d5add17a30d210e from ip-node-1 to ip-node-2 as c7fe68332bc61f0f4c498848e59d3e34b58821468ce65bd4ebc92055156d5b8c"
在最后一行,我们可以看到容器已经在 node-2 上重新调度。好的,让我们在 node-2 上执行一点 docker ps 命令:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7fe68332bc6 myTestService nodejs/bin/npm star" 27 seconds ago Created sleepy_hopper
所以,容器在那里但没有运行(只是“创建”)并且端口映射是空的。
那么这里出了什么问题?
谢谢