ALB のターゲットグループに登録されているインスタンスがすべて Unhealthy の状態でも、ALB へアクセスするとインスタンスへ接続できる挙動は仕様通りです。

ALB において、ターゲットグループに登録されているインスタンスがすべて Unhealthy でも、ALB のノードは Unhealthy となったターゲット間でリクエストをルーティングします。
2020.12.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

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 としてご紹介しています。