回答
Application Load Balancer (ALB) は、ターゲットグループ内の全てのターゲットが Unhealthy と判定された場合、フェールオープン (Fail Open) 動作となります。
フェールオープン時は、ヘルスステータスに関係なく、登録されている全てのターゲットに対してトラフィックをルーティングします。
そのため、ターゲットグループ上では全てのターゲットが Unhealthy と表示されていても、実際の通信は継続できる場合があります。
具体例
例えば、ヘルスチェックパスを /health に設定している環境で、誤って /health を削除した場合を考えます。
設定例
- ヘルスチェックパス:
/health - 実際のアクセス先:
/
この状態では、ALB のヘルスチェック要求に対して /health が正常応答を返せないため、ターゲットは Unhealthy と判定されます。
一方で、実際の利用者がアクセスする / は正常に応答できるため、フェールオープン動作により通信が継続される場合があります。
公式ドキュメント
参考
ターゲットグループに異常な登録済みターゲットのみが含まれている場合、そのヘルスステータスにかかわらず、ロードバランサーはそれらすべてのターゲットにリクエストをルーティングします。つまり、有効なすべてのアベイラビリティーゾーン内で、すべてのターゲットが同時にヘルスチェックに失敗すると、ロードバランサーはオープンに失敗します。フェールオープンの効果は、ヘルスステータスにかかわらず、ロードバランシングのアルゴリズムに基づいて、有効なすべてのアベイラビリティーゾーン内のすべてのターゲットへのトラフィックを許可することです。