2016-04-19 12 views
0

Docker Swarm 1.2.0の新バージョンをテストし、特に再スケジュール機能をテストします。docker swarm 1.2.0ポートマッピングを使用した再スケジュール

私はswarm managerがインストールされた1台のEC2VMと2台のswarmエージェントを持っています(他の2台のEC2VM上にあります)。

docker -H :4000 run -d -p :81 -e reschedule:on-node-failure myTestService 

このコマンドラインは正常に動作し、一つのノード(ノード1)に私のテストサービスを展開:私は、私はこのような群れを通じて展開HTTP RESTサービスを持っています。 私は私のコンテナが1つのノードに配備見るドッキングウィンドウの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私は、ドッキングウィンドウエンジンがホスト上で使用可能なポートを選択してみましょう(32768)。

ここでnode-1をシャットダウンすると、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" 

、我々はコンテナがノード2に再スケジュールされていることを確認することができます:私は群れのログを見ると、私はこれを持っています。

CONTAINER ID  IMAGE       COMMAND     CREATED    STATUS    PORTS    NAMES 
c7fe68332bc6  myTestService    nodejs/bin/npm star"  27 seconds ago   Created         sleepy_hopper 

ので、コンテナがなく(単に「作成」)が実行されていると、ポートマッピングが空である:ファイン、ノード-2に少しドッキングウィンドウのpsコマンドを行うことができます。

ここで何が問題になりますか?

ありがとうございました

答えて

0

これは予想される動作です。 shutdown -h nowのようなもので安全にノードをシャットダウンすると、そのノードで動作するドッカーデーモンも安全に停止します。これは、スウォームマネージャーに最後に知られている状態は、実際にはコンテナが停止していることを意味します。そのため、新しいノードでは開始できません。

ノード上のドッカーデーモンをkill -9で終了させて​​ください(本当に障害が発生した場合など)。コンテナは再スケジューリングされ、他のノードで開始されます。メンテナンスチームが上で実行されているすべてのコンテナはしません、サーバー上で介入し、それを再起動する必要がある場合、私は、あなたの言うことを理解していれば、[OK]を群れで1.2.1

+0

をテストされた...しかし

再スケジュール後に別の場所で再起動してください。あまりにも悪くないですか? –

+0

はい、同意しますが、現在の実装は次のようなものです - [watchdog.go](https://github.com/docker/swarm/blob/master/cluster/watchdog.go#L86)再スケジュールポリシーのために、またはコンテナが最初に起動した場合にコンテナを起動する必要があります。--restart = always –

関連する問題