ヘルスチェックの必要性⚓︎
目的・背景⚓︎
ヘルスチェックの目的は、ロードバランサー(以降 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 で統一します。
-
レスポンスボディ
レスポンスボディの内容は、頻繁な状態監視による通信量の増加に対応するため、簡潔な形に固定する必要があります。 従って、サーバーの動作状態を表す内容のみをレスポンスボディとします。