ALB のヘルスチェックが “Target is in an Availability Zone that is not enabled for the load balancer” で失敗する原因と対処法を教えてください

ALB のヘルスチェックが失敗するときは、まずここを確認しましょう。
2022.06.02

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

困っていた内容

ALB(Application Load Balancer)を構築しましたが、ターゲットグループのヘルスチェックステータスが unused となり、詳細に "Target is in an Availability Zone that is not enabled for the load balancer" と表示されています。
これを解決するには、どの設定を確認すればよいでしょうか?

どう対応すればいいの?

上記のメッセージは、ターゲット EC2 が配置されたアベイラビリティゾーン(サブネット)が ALB 側に紐づいていないことを示しています。

まずは EC2 のコンソール画面で、ターゲット EC2 が配置されたサブネットを確認しましょう。

続いて、ALB 側に紐づけられたサブネットを確認しましょう。
先ほど確認した EC2 のサブネットは含まれていないはずです。

これを解決するにはターゲット EC2 を作成し直してサブネットを変更する方法もありますが、ALB 側にサブネットを追加する方がより簡単です。

[サブネットの編集] ボタンをクリックして EC2 が配置されたサブネットにチェックを入れ、保存しましょう。これで EC2 のサブネットが ALB に紐づけられます。

しばらく待てば、ターゲットグループのヘルスステータスは healthy になるはずです。

もし上記を解決しても unhealthy になる場合は他の要因(EC2 内部の問題)も考えられるため、下記のブログも参考にしてみてください。

【参考】ALB のヘルスチェックが “Health checks failed with thise codes:[XXX]” で失敗する原因と対処法を教えてください | DevelopersIO

参考資料

ターゲットグループのヘルスチェック - Elastic Load Balancing
Application Load Balancer のアベイラビリティーゾーン - Elastic Load Balancing