サービスプローブは、お客様の個々のビジネスニーズに基づいて構成する必要があります。 以下の概要は、サービスプローブの動作の基本を説明するものであり、お客様自身の環境での設定について、より適切な判断ができるようにするためのものです。
プローブの使用と設定の詳細については、 Self-Healing のドキュメントをご覧ください。
概要
サービスプローブは、 Kubernetes Probes で、以下の機能を果たします:
- プライベートIPからお客様のサービスにPingを送信します。
- インスタンスに直接リクエストしてください。
- プローブ構成に基づいて、インスタンスが合格か不合格かを判断します。
一般的な構成
- 各サービスのLCP.jsonで、プローブごとに以下の設定を行うことができます:
- 使用する
httpGet
- をパスにして、pingを打つ。
- あるいは(あまり一般的ではありませんが)、
exec
。- を実行するためのスクリプトで
- 閾値を設定する:
- 遅延
- タイムアウト
- 失敗数
- 成功した試行回数
- 使用する
- LCP.json による設定 の例を参照してください。
準備プローブ
- Liveness Probeは、LCP.jsonで設定されたパスにpingを打ち、サービスを再起動すべきかどうかを判断します。
デフォルトのコンフィギュレーション
- 用途
httpGet
. デフォルトのパスは以下の通りです:-
バックアップ:
/
- ルートパスにpingが通ればステータスOK -
CI:
/login
- ログインページで200レスポンスが得られればステータスOK -
データベース:
/instance/healthy
-
Liferay:
/c/portal/layout
-
検索:
/_cluster/health
-
ウェブサーバー:
/nginx_status
-
バックアップ:
デフォルトの説明
- Livenessプローブは、デフォルトパスからのリダイレクトに従います。
- このため、liveness probeが Liferay サービスの
/c/portal/layout
にpingを打つと、300レスポンスを読んでlivenessを検証するのではなく、/c/portal/layout
を辿ってランディングページ(例:/web/guest/home
)に行き、そのページから200レスポンスを読もうということになるでしょう。 - それを踏まえて、プローブを設定する際には、ランディングページの読み込み時間を意識してください。 ホームページの読み込みに、ライブネスプローブのタイムアウト以上の時間がかかると、ライブネスが失敗します。
- このため、liveness probeが Liferay サービスの
-
Search サービスにおいて、
/_cluster/health
は、クラスタの状態(緑、黄、赤)にかかわらず、ほとんど常に 200 応答を返します。- このため、サーバーがダウンしているときに、検索サービスがライブネスプローブをパスしてしまうことがあります。
- Backup, Database, Webserver サービスのデフォルトパスはカスタムエンドポイントです。
チームのための構成上の考慮点
- Liveness」の意味を定義する。
- サービスが生きているとみなすためのチームの最小要件に基づいて、プローブを構成します。
- Liveness Probeを設定する際には、どのような種類の障害が発生した場合に再起動を行うべきかを検討します。
- 再起動しても解決しない障害もあります。 例えば、スタートアップの失敗時に再起動すると、スタートアップのループが発生する可能性があるため、Liveness Probeはスタートアップ中の再起動をトリガーするように設定するべきではありません。
- サードパーティーのサービスが停止した場合や、再起動によって設定を変更する必要がある場合など、その他の種類の障害は再起動によって解決されることがあります。
- サービスの再起動が必要なタイミングは、プロジェクトの許容範囲によって定義する必要があります。
- Liveness Probeを設定する際には、どのような種類の障害が発生した場合に再起動を行うべきかを検討します。
- サービスが生きているとみなすためのチームの最小要件に基づいて、プローブを構成します。
- お客様のプロジェクトの許容レベルは、環境ごとに異なる場合があります。
- 例えば、PRODよりもDEVの方がより多くのダウンタイムが許容されるかもしれません。
- サービスが生きているかどうかの条件を満たすカスタムエンドポイントを開発する必要があるかもしれません。
- カスタム開発 は、プローブがお客様のプロジェクトの許容レベルに合致していることを確認します。
準備プローブ
- Readiness Probeは、ノードがネットワークトラフィックを受信できるかどうかをチェックする。
デフォルトのコンフィギュレーション
-
- 用途
httpGet
. デフォルトのパスは以下の通りです:-
バックアップ:
/
-
CI:
/login
-
データベース:
/instance/healthy
-
Liferay:
/c/portal/layout
-
検索:
/
-
ウェブサーバー:
/nginx_status
-
バックアップ:
-
publishNotReadyAddressesForCluster
- Liferay = false
- 検索 = true
- 用途
コンフィギュレーションの説明
-
publishNotReadyAddressesForCluster
プロパティは、ノードがトラフィックを受信する準備ができる前に、IPをクラスタルートに追加します。- すべてのサービスのデフォルトのクラスタエンドポイントは、
[service]--cluster
です。 -
Search サービスでは、サーチノードは準備が整う前に立ち上がってトラフィックを受け取る必要があるため、この設定は
true
に設定されています。 -
Liferay サービスのために
false
に設定されています。これは liferay がトラフィックを受け取る前に完全に準備ができている必要があるためです。
- すべてのサービスのデフォルトのクラスタエンドポイントは、