記事概要
AWS Auto Scalingでは、インスタンスのヘルスチェックを設定する際にEC2とELB(Elastic Load Balancer)の2種類の健康状態チェック方法があります。
本記事では、EC2ヘルスチェックのみが有効で、ELBヘルスチェックが無効の場合に発生する可能性のある挙動やリスク、そして推奨される設定について解説します。
ヘルスチェックの種類
EC2ヘルスチェックとは
EC2インスタンスのインスタンスステータスチェックをもとに健康状態を判断します。具体的には以下の2つのステータスを確認します:
- システムステータスチェック:EC2のハードウェアやネットワーク関連の問題を検出
- インスタンスステータスチェック:インスタンスのオペレーティングシステムレベルでの問題を検出
ELBヘルスチェックとは
ELBはアプリケーションの稼働状況を確認するため、指定されたポートとパスに対してリクエストを送信し、アプリケーション層の健康状態をチェックします。インスタンスが正常にリクエストに応答できるかどうかで健康状態を判断します。
EC2のみ有効でELBが無効の場合に発生する可能性のある挙動
1. アプリケーション層の異常を検知できない
EC2ヘルスチェックはインスタンスのOSやネットワーク状態を確認するだけで、アプリケーションの状態は監視しません。そのため、以下のようなケースでは問題が検知されず、異常なインスタンスが引き続きトラフィックを受け取る可能性があります。
- アプリケーションサーバーがクラッシュしている
- 必要なポートが閉じている
- アプリケーションの応答が著しく遅い
2. 不健康なインスタンスが負荷分散対象に残り続ける
ELBヘルスチェックが無効な場合、ELBはアプリケーション層で不健康なインスタンスを認識できません。その結果、不健康なインスタンスが引き続き負荷分散の対象になり、ユーザーのリクエストが失敗するリスクは高まります。
3. インスタンスの置き換えが遅延する
EC2ヘルスチェックで不健康と判断されるまでには一定の時間がかかる場合があります。その間、異常なインスタンスがトラフィックを処理しようとし、サービスのパフォーマンスが低下する可能性があります。
推奨される設定
EC2とELBのヘルスチェックを併用する
アプリケーションの可用性を確保するために、EC2とELBの両方のヘルスチェックを有効化することを推奨します。これにより、インフラ層とアプリケーション層の両方でインスタンスの状態を正確に監視できます。
ヘルスチェックの設定手順
- AWSコンソールにログインし、Auto Scalingグループを選択します
- ヘルスチェックの設定でEC2とELBの両方を有効にします
- ELBのヘルスチェック条件(パスや応答タイムアウト時間など)を適切に設定します
- 設定を保存し、適用します
おわりに
Auto Scalingのヘルスチェック設定は、サービスの可用性とパフォーマンスに直接影響を与えます。EC2のみのヘルスチェックではアプリケーション層の問題を検知できないため、ELBヘルスチェックの併用が重要です。
本記事がAuto Scalingの設定見直しの参考になれば幸いです。ぜひ皆さんも適切なヘルスチェックを設定し、より安定したAWS環境を構築してください。
参考リンク
著者について
AWS初心者からエンジニア向けに、Auto Scalingやクラウド技術についての情報を共有しています。興味がある方はぜひフォローしてください!一緒に勉強しましょう!