コンテンツにスキップ

ヘルスチェックの必要性⚓︎

目的・背景⚓︎

ヘルスチェックの目的は、ロードバランサー(以降 LB )がシステムの稼働状況を監視することです。 ヘルスチェック機能の実装により以下を期待できます。

  • 負荷分散

    各サーバーがリクエスト受付可能かどうかを確認の上、リクエストを複数のサーバーに割り振ることで負荷分散を行います。 これによりレスポンスの低下を防ぎ、サービスを継続的かつ効率的に運用できます。

  • 可用性向上

    ヘルスチェック機能によりサーバーやアプリケーションの稼働状況を監視することで、異常を検知できます。 サーバーの異常を検知した際、正常なサーバーに自動的に動作を引き継ぐことで、システムの運用停止を防ぎます。

基本方針⚓︎

LB が行うヘルスチェックは、使用するプロトコルレイヤーの違いによって、以下のように分類できます。

プロトコルレイヤー 詳細
Layer 3 ネットワーク層で動作を監視します。ICMP echo リクエストを送信し、 echo リプライが帰ってくるかどうかを確認します。
Layer 4 トランスポート層で動作を監視します。TCP のハンドシェイクを行い、サーバーの動作を確認します。
Layer 7 アプリケーション層で動作を監視します。 HTTP リクエストを送信し、サーバーの HTTP レスポンスの確認により動作を確認します。

Layer 3 や Layer 4 で行うヘルスチェックは、作成した Web アプリケーションの稼働状況まで確認できません。 AlesInfiny Maris OSS Edition では、監視対象のサーバーやアプリケーション、関連するデータベースなどのサービスを包含し、システムとしての正常性を Layer 7 で監視する方針とします。

レスポンス形式⚓︎

ヘルスチェックを確認する HTTP レスポンスとして、サーバーの正常値と異常値を表すステータスコードとレスポンスボディを定義します。

  • ステータスコード

    AlesInfiny Maris OSS Edition では正常値を 200 、異常値を 503 で統一します。

  • レスポンスボディ

    レスポンスボディの内容は、頻繁な状態監視による通信量の増加に対応するため、簡潔な形に固定する必要があります。 従って、サーバーの動作状態を表す内容のみをレスポンスボディとします。