ノードの停止
クラスタ構成において運用状態のまま一部のノードを停止させる手順を示します。
なお、ここでは一部のノードを停止する前は、全てのノード・全てのコンテナが正常に動作していることを前提としています。
制限事項
クラスタ構成においてシステムの運用を継続しつつ一部のノードを停止させたい場合、「停止させるノードは1台まで」 にしてください。
※ 5台以上の多ノード構成場合は2台まで停止できる可能性がありますが、現時点でサポート対象となるのは1台までの停止です。
注意事項
ノードを停止させると、実行中のジョブフローの動作などに影響を与える場合があります。 可能であればジョブフローが全て停止している状態で実施されることをお勧めします。
- 【重要】当該ノードで redis コンテナが動作していた場合、ノードを停止させると redis コンテナが別のノードに移動します。このとき一時的に redis がダウン状態になるため、以下のような影響があります。システム影響が大きいため redis コンテナが動作しているノードの停止は十分注意して実施してください。
- ブラウザアクセスや REST-API アクセスが一時的にエラーになる場合があります。
- 実行中のジョブフロープロセスが異常終了する場合があります。
- 当該ノードの kengine コンテナ上の Executor で実行中のジョブフローは強制終了されます。
- 当該のジョブフロープロセスに「自動再起動」フラグが設定されている場合は、別のノード上で同じジョブフローが同じパラメータで新たに再起動されます。
- 【要確認】当該ノードの kengine が leader として動作 (role="leader") していた場合、ノードを停止させると leader が別のノードに移動します。
ノードの停止手順
停止対象のホストサーバをシャットダウンしてください。
$ sudo poweroff
※ poweroff コマンドが存在しないホストサーバの場合、shutdown -h now など代替のコマンドを利用してください。
または、対象ホストサーバ上で docker.socket を停止させることで、ホストサーバを停止させずにノード停止と同様の状態にすることができます。 (docker.service を停止させても、docker.socket を停止させていないと自動的に再起動することに注意してください)
$ sudo systemctl stop docker.socket
確認手順
クラスタの過半数のノードが正常に動作している場合、システムとしては正常に動作します。 一部のノードを停止したあとに、残ったノードでシステムが正常に動作しているかを確認してください。
- ブラウザで /.status 画面を開いて全てのコンテナが正常を示している(赤い表示になっていない)ことを確認してください。
- ブラウザで Kompira にログインできることを確認してください。
- 自動再起動が有効に設定されたジョブフロープロセスが実行中であった場合、別のノードで同じジョブフローが新たに開始していることを確認してください。
注意事項にあるように redis コンテナが移動するケースなどで、一時的にエラーが発生することがありますが、通常であれば時間経過とともに安定します。
停止失敗時の対策
一部のノードを停止したあとにエラーが発生するようになり、5分以上経過してもシステムが正常な状況に回復しないような場合は、システムに何らかの異常をきたしている可能性があります。そのような場合、以下を参考に対策してみてください。