ALB のターゲットグループに登録されているインスタンスがすべて Unhealthy の状態でも、ALB へアクセスするとインスタンスへ接続できる挙動は仕様通りです。
困っていた内容
ALB のターゲットグループに登録されているインスタンスがすべて Unhealthy となりました。
しかし、ALB の FQDN へアクセスするとターゲットインスタンスに接続できます。
これは正しい挙動ですか?
どう対応すればいいの?
AWS ドキュメントに記載のある仕様通りの挙動となります。
ALB のターゲットグループに登録されているインスタンスがすべて Unhealthy となった場合、ALB のノードは Unhealthy となったターゲット間でリクエストをルーティングします。
そのため、ALB の FQDN へアクセスしてもターゲットインスタンスに接続できます。
しかしながら、想定しない予期せぬ挙動が発生する可能性があるため、基本的にはターゲットインスタンスのヘルスチェックは Healthy であることが望ましいです。
やってみた
EC2 に Apache をインストールし、以下の HTML を配置します。
index.html
This is test page.
前段に ALB を構築し、当該の EC2 をターゲットにします。
その後、ALB の FQDN へアクセスします。
$ curl test-alb-■■■■■■■■■■.ap-northeast-1.elb.amazonaws.com This is test page.
ターゲットのヘルスチェック設定を存在しないオブジェクト unhealthy に変更し、ターゲットのステータスを Unhealthy にします。
再度、ALB の FQDN へアクセスします。
$ curl test-alb-■■■■■■■■■■.ap-northeast-1.elb.amazonaws.com This is test page.
アクセスできました。
上記のことから、ターゲットがすべて Unhealthy であっても、リクエストはルーティングされることが分かります。
参考資料
ターゲットグループのヘルスチェック - Elastic Load Balancing
ターゲットグループに異常な登録済みターゲットのみが含まれている場合、ロードバランサーノードは異常なターゲット間でリクエストをルーティングします。
テクニカルサポートノートとは?
クラスメソッドのカルチャー(CLP) の「情報発信を通じて、全ての人々の創造活動に貢献し続ける」という考えから、クラスメソッド メンバーズをご利用のお客様よりいただいたお問い合わせより、他の AWS ユーザーにとっても 有益な情報を一般的な TIPS としてご紹介しています。