Swarm の再スケジュール・ポリシー¶
Docker Swarm で再スケジュール・ポリシーを設定できます。再スケジュール・ポリシーとは、コンテナを実行中のノードが落ちた時、再起動するかどうかを決めます。
再スケジュール・ポリシー¶
コンテナ起動時に再スケジュール・ポリシー(reschedule policy)を設定できます。設定をするには reschedule
環境変数を指定するか、 com.docker.swarm.reschedule-policy
ラベルを指定します。ポリシーを指定しなければ、再スケジュール・ポリシーは off
になります。つまり、ノードで障害が発生しても Swarm はコンテナを再スケジュールしません(再起動しません)。
on-node-failure
ポリシーを環境変数 reschedule
で設定するには、
$ docker run -d -e reschedule:on-node-failure redis
com.docker.swarm.reschedule-policy
ラベルで同じポリシーを設定するには、
$ docker run -d -l 'com.docker.swarm.reschedule-policy=["on-node-failure"]' redis
再スケジュール・ログの確認¶
docker logs
コマンドを使って再スケジュールしたコンテナの動作を確認できます。確認するには、次の構文を使います。
docker logs SWARMマネージャのコンテナID
コンテナの再スケジュールに成功したら、次のようなメッセージを表示します。
Rescheduled container 2536adb23 from node-1 to node-2 as 2362901cb213da321
Container 2536adb23 was running, starting container 2362901cb213da321
同様に、新しいノード上で新しいコンテナの起動に失敗したら、ログには次のように表示します。
Failed to start rescheduled container 2362901cb213da321
関連情報¶
- /engine/userguide/labels-custom-metadata
- ENV(環境変数)
参考
- Swarm Rescheduling
- https://docs.docker.com/swarm/scheduler/rescheduling/