Ich teste die brandneue Version von Docker Swarm 1.2.0 und vor allem die Umplanungsfunktionalität.docker swarm 1.2.0 neu planen mit port mapping
Also, ich habe eine EC2 VM mit Schwarm-Manager installiert und 2 Schwarm-Agenten (auf 2 anderen EC2 VM). Ich habe einen HTTP-Rast Service, den ich wie dies durch Schwarm bereitstellen:
docker -H :4000 run -d -p :81 -e reschedule:on-node-failure myTestService
Diese Befehlszeile funktioniert gut und mein Test-Service auf einem Knoten (node-1) bereitstellen. Wenn ich laufe ein Docker ps ich meinen Container auf dem Knoten ein Einsatz sehen:
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
Blick auf die Port-Mapping: 0.0.0.0:32768->81/tcp lasse ich Docker Motor einen verfügbaren Port auf dem Host wählen (32768).
Nun, wenn ich Knoten-1 herunterfahren, sollte Schwarm meinen Container neu planen. Wenn ich im Schwarm log aussehen Ich habe dies:
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"
In der letzten Zeile, können wir sehen, dass der Behälter auf node-2 neu geplant wurde. Fein, lässt ein wenig Docker ps Befehl auf node-2 tun:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7fe68332bc6 myTestService nodejs/bin/npm star" 27 seconds ago Created sleepy_hopper
Also, der Behälter ist es aber nicht aktiv (nur „erstellt“) und die Port-Mapping ist leer.
Also was läuft hier falsch?
Vielen Dank
Ok ... aber, wenn ich verstehe, was Sie sagen, wenn das Wartungsteam auf dem Server zu intervenieren, und starten Sie es, alle Container, die auf ihm ausgeführt wird nicht nach dem Umplanen an anderer Stelle neu gestartet werden. Ist es nicht so schlimm? –
Ja, ich stimme zu, aber die aktuelle Implementierung ist so - [watchdog.go] (https://github.com/docker/swarm/blob/master/cluster/watchdog.go#L86) Wahrscheinlich braucht es ein weiteres Label für die Umschaltrichtlinie oder den Container sollte gestartet werden, wenn es anfänglich mit docker gestartet wurde - restart = always –