5.4. Node.js のヘルスチェックの例
以下の例は、実稼働環境での実行を目的としていません。
アプリケーションをデプロイする場合は、アプリケーションが利用可能かどうかを確認し、受信した要求の処理を開始することが重要です。ヘルスチェック パターンを実装すると、アプリケーションが利用できるかどうかや要求に対応できるかどうかなど、アプリケーションの健全性を監視できます。
ヘルスチェックの用語に慣れていない場合は、最初に 「ヘルスチェックの概念」 セクションを参照してください。
このユースケースの目的は、プローブを使用してヘルスチェックパターンを実証することです。プロービングは、アプリケーションの liveness および readiness を報告するために使用されます。このユースケースでは、HTTP health エンドポイントを公開して HTTP 要求を発行するアプリケーションを設定します。コンテナーが動作している場合は、HTTP エンドポイント health の Liveness プローブによると、管理プラットフォームは 200 を戻りコードとして受け取り、それ以上のアクションは必要ありません。HTTP エンドポイント health が応答を返さない場合 (たとえば、スレッドがブロックされている場合)、アプリケーションは liveness プローブにより有効とみなされません。この場合、プラットフォームはそのアプリケーションに対応する Pod を強制終了し、アプリケーションを再起動するために新規 Pod を再作成します。
このユースケースでは、readiness プローブを実証し、使用することもできます。アプリケーションが実行していても要求を処理できない場合 (再起動中にアプリケーションが HTTP 503 応答コードを返す場合など)、このアプリケーションは readiness プローブにより準備ができていないと見なされます。readiness プローブによってアプリケーションが準備状態にあるとみなされない場合、要求は readiness プローブにより準備状態にあるとみなされるまで、要求はそのアプリケーションにルーティングされません。
5.4.1. ヘルスチェックの概念 リンクのコピーリンクがクリップボードにコピーされました!
ヘルスチェックパターンを理解するには、まず以下の概念を理解する必要があります。
- Liveness
- liveness は、アプリケーションが実行しているかどうかを定義します。実行中のアプリケーションが応答しない状態または停止状態に移行する可能性があるため、再起動する必要があります。liveness の確認は、アプリケーションを再起動する必要があるかどうかを判断するのに役立ちます。
- Readines
- readiness は、実行中のアプリケーションが要求を処理できるかどうかを定義します。実行中のアプリケーションがエラーまたは破損状態に切り替わり、要求にサービスを提供することができません。readiness を確認すると、要求が引き続きそのアプリケーションにルーティングされるべきかどうかが判断されます。
- フェイルオーバー
- フェイルオーバーにより、サービス要求の失敗が適切に処理されるようになります。アプリケーションが要求のサービスに失敗した場合、その要求と今後の要求は フェイルオーバー したり、別のアプリケーションにルーティングしたりすることができます。通常、同じアプリケーションの冗長コピーになります。
- 耐障害性および安定性
- 耐障害性および安定性により、要求サービスの失敗を適切に処理できます。接続の損失によりアプリケーションが要求を処理できない場合、耐障害性のあるシステムでは、接続が再確立された後に要求を再試行できます。
- プローブ
- プローブは実行中のコンテナーで定期的に実行する Kubernetes の動作です。