ALBのヘルスチェック結果に伴うルーティング動作を確認する

本当だった
ターゲットグループに含まれる他のターゲットの状態によって、挙動が変わる。
例えば、登録済みターゲットが4つあり、3つが「unhealthy」、1つが「healthy」の場合は、「healthy」のターゲットのみにリクエストがルーティングされる
また、ターゲットグループに含まれるすべてのターゲットが「unhealthy」の場合、ALBは4つすべての「unhealthy」のターゲットに対してリクエストをルーティングする

ターゲットグループに正常でない登録済みターゲットのみが含まれている場合、ロードバランサーは、ヘルスステータスに関係なく、それらのターゲットすべてにリクエストをルーティングします。
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html
ここの記載がホンマか?と思ったので確認する

デフォルトのALBでapatchだけ立てたインスタンスを2台紐づけたターゲットグループをデフォルト転送設定で登録

ラウンドロビンにリクエストが飛ぶ(ブラウザ画像略)
インスタンスA
10.0.0.99 - - [02/Jul/2025:05:42:16 +0000] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
10.0.0.99 - - [02/Jul/2025:05:42:21 +0000] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
インスタンスB
10.0.0.99 - - [02/Jul/2025:05:42:15 +0000] "GET / HTTP/1.1" 200 17 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
10.0.0.99 - - [02/Jul/2025:05:42:20 +0000] "GET / HTTP/1.1" 200 17 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"

EC2を両方停止する
ヘルスステータスはUnusedに

リクエストすると、「503 Service Temporarily Unavailable」が返ってくる

一旦TGのヘルスチェック間隔を30s→300sに伸ばしてEC2を両方起動

起動してすぐに(30秒前後で?直後は未確認)Healthyになり、ヘルスチェックがすぐ送られて停止前と同じようにアクセス出来るようになった
インスタンスA
10.0.1.31 - - [02/Jul/2025:05:52:22 +0000] "GET / HTTP/1.1" 200 20 "-" "ELB-HealthChecker/2.0"
10.0.0.99 - - [02/Jul/2025:06:19:27 +0000] "GET / HTTP/1.1" 200 20 "-" "ELB-HealthChecker/2.0"
10.0.1.31 - - [02/Jul/2025:06:19:27 +0000] "GET / HTTP/1.1" 200 20 "-" "ELB-HealthChecker/2.0"
インスタンスB
10.0.1.31 - - [02/Jul/2025:05:52:22 +0000] "GET / HTTP/1.1" 200 17 "-" "ELB-HealthChecker/2.0" "10.0.11.80"
10.0.1.31 - - [02/Jul/2025:06:19:34 +0000] "GET / HTTP/1.1" 200 17 "-" "ELB-HealthChecker/2.0" "10.0.11.80"
10.0.0.99 - - [02/Jul/2025:06:19:34 +0000] "GET / HTTP/1.1" 200 17 "-" "ELB-HealthChecker/2.0" "10.0.11.80"

ヘルスチェック間隔は戻し、リクエストしても404になるパスに変更

暫く待って、ステータスがUnhealthyに
インスタンスA
10.0.0.99 - - [02/Jul/2025:07:25:29 +0000] "GET /helthcheck HTTP/1.1" 404 196 "-" "ELB-HealthChecker/2.0"
10.0.1.31 - - [02/Jul/2025:07:25:29 +0000] "GET /helthcheck HTTP/1.1" 404 196 "-" "ELB-HealthChecker/2.0"
インスタンスB
10.0.0.99 - - [02/Jul/2025:07:25:06 +0000] "GET /helthcheck HTTP/1.1" 404 196 "-" "ELB-HealthChecker/2.0" "10.0.11.80"
10.0.1.31 - - [02/Jul/2025:07:25:06 +0000] "GET /helthcheck HTTP/1.1" 404 196 "-" "ELB-HealthChecker/2.0" "10.0.11.80"

TGに登録済みのターゲットのステータスが全てUnhealthyの状態でアクセスすると、ターゲットに対してラウンドロビンにリクエストが飛び、特に問題無くアクセスできた(ブラウザ画像略)
インスタンスA
10.0.1.31 - - [02/Jul/2025:07:25:44 +0000] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
10.0.1.31 - - [02/Jul/2025:07:25:51 +0000] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
インスタンスB
10.0.1.31 - - [02/Jul/2025:07:25:44 +0000] "GET / HTTP/1.1" 200 17 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
10.0.1.31 - - [02/Jul/2025:07:25:50 +0000] "GET / HTTP/1.1" 200 17 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"