CDP:Deep Health Checkパターン

From AWS-CloudDesignPattern
Jump to: navigation, search
Architect

システムのヘルスチェック

Contents

解決したい課題

ロードバランサを使用し、その下にWebサーバを複数台立てることで、Webサーバが不調な場合や障害が発生した場合に、ロードバランサのヘルスチェック機能を使用することで、そのWebサーバを切り離すことが出来る。

ロードバランサとWebサーバだけで構成されるシステムであればこのチェックで十分だが、より階層が深いシステム、例えばアプリケーションサーバやプロキシサーバ、DBサーバなどが必要になると、Webサーバが動作していても、そのバックエンドが障害が起こった場合に検知することができない。

クラウドでの解決/パターンの説明

クラウドのロードバランサが持つヘルスチェック機能を利用して、バックエンドの障害が起こった際に検知するシステムである。ヘルスチェック先をPHPやJavaServletなどの動的なページに設定する。通信を受けたプログラム内で、そのアプリケーションが動作するのに必要なシステムのチェックを行い、その結果をロードバランサに返す。このパターンは、ヘルスチェック時にバックエンドのサーバを含めてチェックすることで、システム全体の健全性をチェックするパターンである。

実装

ELBでのヘルスチェックは、指定URLへのHTTP(S)アクセスの成否により、ステータス確認を行う事ができる。これを利用して、ヘルスチェック先を動的なページに設定する。ロードバランサ、Webサーバ、内部プロキシサーバ、アプリケーションサーバ、DBサーバから構成されるシステムを実装例に挙げる。

  • ELBを起動し、ヘルスチェックのURLを指定する。このURLは、アプリケーションサーバへ到達するURLとする
  • アプリケーションサーバに、DBへのアクセスを伴うアプリケーションを配備する
  • ヘルスチェックURLへのリクエストに対して、このアプリケーションが動作するよう、アプリケーションサーバに設定を行う。
  • ELBからのヘルスチェックを実施する。

構造

6wNg0ISJczU5Pz1m-D1A0E.png

利点

  • システム動作に必要なサーバをすべてチェックすることが可能
  • ヘルスチェックに応答するプログラムの作りによっては、閉局処理を行ったり、障害内容によってカスタマイズされたエラー情報を出力することが可能。

注意点

  • サーバ数が多い場合にヘルスチェック自体が負荷になる場合があるため、ヘルスチェック間隔について考慮が必要。
  • DBサーバがSPOFになっている場合、そのDBサーバが落ちると、Deep Health Checkが過剰反応して全てのWebサーバを落としてしまうケースがあることに注意する。

注意点

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox