クラスタの停止
クラスタ構成のシステム全体を停止させる場合の手順を示します。
注意事項
システム全体を停止する手順を実行すると以下のような影響があります。
- 実行中のジョブフローはすべて異常終了になります。自動再起動が有効なプロセスについては、システム全体を再開させた時に自動的に再起動します。
補足: 実行中のジョブフロープロセスに自動再起動が有効と設定されている場合、そのプロセスを実行中の kengine が動作しているノードを停止すると、別の動作中のノードで同じジョブフローを自動的に再起動するという動きをとります。そのため、システム全体を停止する手順としてノードを順番に停止させていく過程で、1台の停止ごとに時間があくと、ジョブフロープロセスの強制終了と自動再起動が短時間に繰り返される場合があることに注意してください。そうした振る舞いが好ましくない場合は、クラスタを停止させる前に、当該ジョブフロープロセスを手動で中止しておいてください。手動で中止したプロセスは自動再起動の対象外となります。ただし、システム全体を再開させた場合の自動的な再起動も行われませんので、必要に応じて手動で起動するようにしてください。
- 停止期間中に実行予定となっていたスケジュールは(再起動後も)実行されません。
3台構成のクラスタでは2台目のノードを停止した時点で、クラスタ構成メンバーが過半数を割るため、システムとしては正常に動作しなくなりはじめます(なお、過半数ノード停止状態でのシステム正常動作はサポート範囲外です)。ブラウザでアクセスしても「502 Bad Gateway」などのエラーになったり、docker コマンドでノード一覧を確認しようとしても以下のようにエラーになります。
$ docker node ls
Error response from daemon: rpc error: code = Unknown desc = The swarm does not have a leader.
It's possible that too few managers are online. Make sure more than half of the managers are online.
こうしたエラーは想定通りとなりますので、残ったノードについても続けて停止してください。
クラスタ停止手順
クラスタを構成するノードを順番に停止させてください。
基本的に停止させるノードの順番は問いませんが、クラスタを再開するときは「ノードを停止させた逆順に開始する」ことが望ましいため、停止させたノードの順番は記録しておいてください。
各ノードを、例えば ke2-server3, ke2-server2, ke2-server1 の順で停止させた場合、クラスタを再開するときは ke2-server1, ke2-server2, ke2-server3 の順で起動することを推奨します。
各ノードの停止
クラスタを構成するホストサーバを順番にシャットダウンしてください。
$ sudo poweroff
※ poweroff コマンドが存在しないホストサーバの場合、shutdown -h now など代替のコマンドを利用してください。
または、対象ホストサーバ上で docker.socket を停止させることで、ホストサーバを停止させずにノード停止と同様の状態にすることができます。 (docker.service を停止させても、docker.socket を停止させていないと自動的に再起動することに注意してください)
$ sudo systemctl stop docker.socket
注意事項に記載のとおり、あるノードを停止したあとに過半数のノードが残っていない場合、例えば3台構成で1台になった時点で、docker node コマンドによる構成ノードの確認や、docker service ps コマンドによるコンテナの状態確認などは行えなくなりますので、ご注意ください。
必須ではありませんが、あるノードを停止したあとに、2台以上のノードが残っている段階では、停止したノードが docker node ls コマンドで STATUS が "Down" になったのを確認してから、次のノードの停止手順に進むことを推奨します。通常であればサーバをシャットダウンして数十秒程度以内に Down 状態になります。
以下の例ではノード ke2-server3 が Down 状態になっていることが分かります。
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
l96i39jjjq8ntkzu2p2vvejvf ke2-server1 Ready Active Reachable 26.1.4
sw6kopnwous6gfz0zg1qcp1ho * ke2-server2 Ready Active Leader 26.1.4
0i62egrvpwj0lpittkx9dw9na ke2-server3 Down Active Unreachable 26.1.4