アプリケーションを SAE にデプロイした後、ヘルスチェック機能を使用してアプリケーションが正常に動作していることを確認し、例外が発生した際に問題を特定できます。SAE は、アプリケーションの作成時およびデプロイ時のヘルスチェック設定に対応しています。このトピックでは、SAE コンソールでヘルスチェックを設定する方法について説明します。
背景情報
ヘルスチェックの仕組み
ヘルスチェックは、Liveness プローブ、Readiness プローブ、または Startup プローブを使用してアプリケーションインスタンスを定期的にチェックし、その結果を SAE コンソールに報告します。これにより、クラスター環境におけるサービス全体の正常性を把握し、問題を特定できます。
SAE は Kubernetes 上に構築されており、以下のタイプのヘルスチェックを提供します。
-
Liveness プローブ:アプリケーションインスタンスが実行中であるかどうかを判断します。
-
プローブが成功した場合:アプリケーションインスタンスは正常です。SAE は何もアクションを実行しません。
-
プローブが失敗した場合:アプリケーションインスタンスは異常です。SAE はインスタンスを再起動します。
-
-
Readiness プローブ:アプリケーションインスタンスが受信トラフィックを処理する準備ができているかどうかを判断します。
-
プローブが成功した場合:アプリケーションインスタンスは準備完了です。SAE はインスタンスにトラフィックを割り当てます。
-
プローブが失敗した場合:アプリケーションインスタンスは準備未完了です。SAE はインスタンスに例外を報告し、トラフィックを割り当てません。
-
-
Startup プローブ:アプリケーションインスタンスが正常に起動したかどうかを判断します。
-
プローブが成功した場合:アプリケーションインスタンスは正常に起動しました。Liveness プローブと Readiness プローブが設定されている場合、Startup プローブが成功した後にのみ開始されます。
-
プローブが失敗した場合:アプリケーションインスタンスの起動に失敗しました。SAE は例外を報告し、インスタンスを自動的に再起動します。
-
成功および失敗の判定基準
-
成功:連続して成功したチェックの回数が指定された 正常のしきい値 に達すると、プローブは成功と見なされます。
-
失敗:1 回のヘルスチェックが失敗した場合、SAE は設定された間隔でチェックを継続します。連続して失敗した回数が指定された 異常しきい値 に達すると、SAE はアクションを実行します。Liveness プローブが失敗した場合、SAE はアプリケーションインスタンスを再起動します。Readiness プローブが失敗した場合、SAE はインスタンスをサービスエンドポイントから削除し、トラフィックを受信しないようにします。
ヘルスチェックパラメータ
SAE は、以下のパラメータを使用してアプリケーションおよびアプリケーションインスタンスのステータスをチェックします。
-
初期遅延
アプリケーションの起動後、最初のプローブが開始されるまでの遅延時間 (秒単位) です。この値は、デプロイ中のプローブ失敗およびその後の再起動を防ぐために、アプリケーションの起動時間より大きく設定する必要があります。
-
タイムアウト
1 回のプローブのタイムアウト時間 (秒単位) です。デフォルト値は 1 です。たとえば、この値を 10 に設定した場合、10 秒以内に応答がなければプローブは失敗します。このパラメータを 0 に設定するか空欄のままにすると、デフォルトのタイムアウト 1 秒が使用されます。
-
間隔
ヘルスチェック間の間隔 (秒単位) です。デフォルト値は 30 です。たとえば、この値を 5 に設定した場合、5 秒ごとにチェックが実行されます。起動を高速化するため、SAE はインスタンスの起動直後に、設定された間隔よりも頻繁に Readiness プローブを実行し、より早くトラフィックを受信できるようにする場合があります。
手順
-
アプリケーションの作成
SAE アプリケーションリスト で、上部の対象リージョンと名前空間を選択し、[Create Application] をクリックします。 [basic information] ページで設定を完了したら、[Next: advanced settings] をクリックします。
実行中のアプリケーションの変更
警告アプリケーションを再デプロイすると、アプリケーションが再起動されます。サービスの中断やその他の予期しないエラーを回避するため、オフピーク時にデプロイ操作を実行してください。
SAE アプリケーションリスト で、上部の対象リージョンと名前空間を選択し、アプリケーションの [Application ID] をクリックして詳細ページに移動します。 左側のナビゲーションペインで [basic information] をクリックし、右上の [deploy application] をクリックします。
停止中のアプリケーションの変更
SAE アプリケーションリスト で、上部の対象リージョンと名前空間を選択し、アプリケーションの [Application ID] をクリックして詳細ページに移動します。 [basic information] をクリックし、[Modify Application Configuration] をクリックします。
-
[Application health check settings] セクションを展開し、必要に応じてパラメータを設定します。
設定
-
必要に応じて、[Enable application instance liveness check (Liveness configuration)]、[Enable application readiness probe (Readiness configuration)]、または [Enable startup probe configuration] を有効にします。3 つのプローブタイプすべてで設定パラメータは同じです。
説明-
Liveness プローブ、Readiness プローブ、Startup プローブは、個別に設定することも、任意の組み合わせで設定することもできます。3 つすべてを設定することを推奨します。
-
3 つのヘルスチェックをすべて設定した場合、Startup プローブが最初に実行されます。Liveness プローブと Readiness プローブは、Startup プローブが成功した後にのみ開始され、それぞれ設定された初期遅延が適用されます。
-
-
[Check method] を選択し、そのパラメータを設定します。
-
HTTP リクエストチェック:HTTP リクエストを送信してインスタンスの正常性をチェックします。ステータスコードが 200 から 399 の間であればインスタンスは正常、それ以外は異常と判定されます。
-
TCP ポートチェック:TCP ソケット接続を確立してインスタンスの正常性をチェックします。接続が成功すればインスタンスは正常、それ以外は異常と判定されます。
-
コマンド実行チェック:インスタンス内でコマンドを実行して正常性をチェックします。コマンドの終了コードが 0 であればインスタンスは正常、それ以外は異常と判定されます。
HTTP リクエスト
パラメータ
説明
パス
HTTP サーバー上でアクセスするパスです。
ポート
HTTP サーバー上でアクセスするポートです。
詳細設定
[詳細設定] を展開すると、レスポンスボディに指定されたキーワードが含まれているかどうかを検証するオプションのチェックを設定できます。
プロトコル
[HTTP] または [HTTPS] を選択します。
初期遅延 (秒)
アプリケーションの起動後、最初のプローブが開始されるまでの遅延時間 (秒単位) です。この値は、デプロイ中のプローブ失敗およびその後の再起動を防ぐために、アプリケーションの起動時間より大きく設定する必要があります。
タイムアウト (秒)
1 回のプローブのタイムアウト時間 (秒単位) です。デフォルト値は 1 です。たとえば、この値を 10 に設定した場合、10 秒以内に応答がなければプローブは失敗します。このパラメータを 0 に設定するか空欄のままにすると、デフォルトのタイムアウト 1 秒が使用されます。
間隔 (秒)
ヘルスチェック間の間隔 (秒単位) です。デフォルト値は 30 です。たとえば、この値を 5 に設定した場合、5 秒ごとにチェックが実行されます。起動を高速化するため、SAE はインスタンスの起動直後に、設定された間隔よりも頻繁に Readiness プローブを実行し、より早くトラフィックを受信できるようにする場合があります。
正常のしきい値 (回数)
プローブが失敗した後、成功と見なされるために必要な連続成功の最小回数です。Liveness プローブの場合、この値は 1 にする必要があります。
異常しきい値 (回数)
プローブが失敗したと見なされるために必要な連続失敗の回数です。
TCP ポート
パラメータ
説明
TCP ポート
ヘルスチェックのためにアクセスする TCP ポートです。
初期遅延 (秒)
アプリケーションの起動後、最初のプローブが開始されるまでの遅延時間 (秒単位) です。この値は、デプロイ中のプローブ失敗およびその後の再起動を防ぐために、アプリケーションの起動時間より大きく設定する必要があります。
タイムアウト (秒)
1 回のプローブのタイムアウト時間 (秒単位) です。デフォルト値は 1 です。たとえば、この値を 10 に設定した場合、10 秒以内に応答がなければプローブは失敗します。このパラメータを 0 に設定するか空欄のままにすると、デフォルトのタイムアウト 1 秒が使用されます。
間隔 (秒)
ヘルスチェック間の間隔 (秒単位) です。デフォルト値は 30 です。たとえば、この値を 5 に設定した場合、5 秒ごとにチェックが実行されます。起動を高速化するため、SAE はインスタンスの起動直後に、設定された間隔よりも頻繁に Readiness プローブを実行し、より早くトラフィックを受信できるようにする場合があります。
正常のしきい値 (回数)
プローブが失敗した後、成功と見なされるために必要な連続成功の最小回数です。Liveness プローブの場合、この値は 1 にする必要があります。
異常しきい値 (回数)
プローブが失敗したと見なされるために必要な連続失敗の回数です。
コマンド実行
パラメータ
説明
初期遅延 (秒)
アプリケーションの起動後、最初のプローブが開始されるまでの遅延時間 (秒単位) です。この値は、デプロイ中のプローブ失敗およびその後の再起動を防ぐために、アプリケーションの起動時間より大きく設定する必要があります。
タイムアウト (秒)
1 回のプローブのタイムアウト時間 (秒単位) です。デフォルト値は 1 です。たとえば、この値を 10 に設定した場合、10 秒以内に応答がなければプローブは失敗します。このパラメータを 0 に設定するか空欄のままにすると、デフォルトのタイムアウト 1 秒が使用されます。
間隔 (秒)
ヘルスチェック間の間隔 (秒単位) です。デフォルト値は 30 です。たとえば、この値を 5 に設定した場合、5 秒ごとにチェックが実行されます。起動を高速化するため、SAE はインスタンスの起動直後に、設定された間隔よりも頻繁に Readiness プローブを実行し、より早くトラフィックを受信できるようにする場合があります。
正常のしきい値 (回数)
プローブが失敗した後、成功と見なされるために必要な連続成功の最小回数です。Liveness プローブの場合、この値は 1 にする必要があります。
異常しきい値 (回数)
プローブが失敗したと見なされるために必要な連続失敗の回数です。
コマンド
インスタンス内で実行するコマンドです。プローブコマンドの詳細については、Kubernetes ドキュメントの「Configure Probes」をご参照ください。
説明SAE は 2 つのシェルインタプリタを提供します:
-
>_ /bin/sh
-
>_ /bin/bash
例:コマンド
cat /tmp/healthyは、/tmp/healthyファイルの存在を定期的にチェックします。ファイルが存在する場合、チェックは成功します (0 を返します) 。 -
結果の確認
ヘルスチェックの設定後、アプリケーションの [basic information] ページに移動し、[Instances] タブをクリックします。[Default Group] エリアで、各インスタンスの実行ステータスを確認できます。ステータスアイコンにカーソルを合わせると、ヘルスチェック設定の詳細が表示されます。
|
実行ステータス |
説明 |
|
インスタンスにヘルスチェックが設定されていないことを示します。 説明
|
|
Liveness および Readiness ヘルスチェック失敗 インスタンスステータスは [Running] ですが、赤色の [Health check failed] メッセージが表示されます。 |
ヘルスチェックが失敗し、インスタンスが異常であることを示します。 説明
インスタンスステータスにカーソルを合わせると、失敗の理由が表示されます。解決手順については、[Troubleshooting Guide] をクリックしてください。 |
|
ヘルスチェック合格 インスタンスステータスは緑色の [Running] で、警告メッセージは表示されません。 |
ヘルスチェックが合格し、インスタンスが正常であることを示します。 |
ヘルスチェック失敗の一般的な原因
-
初期遅延が短すぎるため、アプリケーションの初期化が完了する前にヘルスチェックが開始されます。遅延時間を増やして再試行してください。
-
ヘルスチェックの設定が正しくありません。ポートとパスを確認してください。
-
サービスが過剰な負荷を受けています。アプリケーションの監視データを確認してください。これが原因の場合、インスタンス数を増やす、より大きなインスタンスタイプを使用する、または JVM ヒープサイズを減らしてください。
-
アプリケーションの起動に失敗しています。ヘルスチェックを無効にして問題を診断してください。それでもアプリケーションが起動しない場合は、コードの最適化が必要な場合があります。