2016-04-19 10 views
0

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

Antwort

0

Ich denke, das ist das erwartete Verhalten. Wenn Sie den Knoten beispielsweise mit shutdown -h now sicher herunterfahren, wird auch der auf diesem Knoten ausgeführte Docker-Daemon sicher beendet. Dies bedeutet, dass der letzte bekannte Status des Schwarm-Managers tatsächlich darin besteht, dass Ihre Container gestoppt sind und deshalb werden sie nicht auf einem neuen Knoten gestartet.

Versuchen Sie, den Docker-Daemon auf dem Knoten mit einer kill -9 (wie es tatsächlich bei einem echten Fehler passieren würde) zu töten. Die Container werden neu geplant und auf einem anderen Knoten gestartet.

mit Schwarm getestet 1.2.1

+0

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? –

+0

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 –