クラウド形成テンプレートを使用してインフラストラクチャ(ECSファーゲートクラスター)を構築しています。テンプレートが正常に実行され、スタックが正常に作成されました。ただし、タスクは次のエラーで失敗しました:
Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:eu-central-1:890543041640:targetgroup/prc-service-devTargetGroup/97e3566c8b307abf)
問題をトラブルシューティングするために、これをどこで、どこで探すべきかわかりません。ファーゲートクラスタであるため、コンテナにログインしてヘルスチェッククエリを実行してさらにデバッグする方法がわかりません。
誰かがこれについてさらに案内して私を助けるのを助けてくれますか?このエラーが原因で、自分のWebアプリにアクセスできません。 ALB
は、トラフィックが正常でない場合、トラフィックをルーティングしません。
私がしたこと
いくつかグーグルした後、私はこの投稿を見つけました: https://aws.Amazon.com/premiumsupport/knowledge-center/troubleshoot-unhealthy-checks-ecs/
ただし、これはfargateのEC2互換性に関連していると思います。しかし、私の場合、EC2はありません。
必要に応じて、テンプレート全体を貼り付けることもできます。
助けてください
ECSサービスとロードバランサーターゲットグループの間のセキュリティグループがHTTPおよびHTTPSトラフィックのみを許可していたため、このエラーメッセージが表示されました。
どうやらヘルスチェックは、セキュリティグループを更新してすべてのポートですべてのトラフィックを許可するときに、他のいくつかのポートまたはプロトコルで行われます( https://docs.aws.Amazon.com/AmazonECS/latest/userguide/ create-application-load-balancer.html )がヘルスチェックを機能させました。
上記のtschumannで述べたように、ECSクラスターの周りのセキュリティグループを確認します。 Terraformを使用している場合は、以下のようなものを使用して、すべてのDocker一時ポートへの進入を許可します。
resource "aws_security_group" "ecs_sg" {
name = "ecs_security_group"
vpc_id = "${data.aws_vpc.vpc.id}"
}
resource "aws_security_group_rule" "ingress_docker_ports" {
type = "ingress"
from_port = 32768
to_port = 61000
protocol = "-1"
cidr_blocks = ["${data.aws_vpc.vpc.cidr_block}"]
security_group_id = "${aws_security_group.ecs_sg.id}"
}
私はこれとまったく同じ問題を抱えていました。私は問題を回避することができました:
この問題には、開いているポートだけでなく、さまざまな考えられる理由がかなりあります。
したがって、AWSはこのエラーの可能性に対処するために独自のウェブサイトを作成しました。
編集:私の場合、私のアプリケーションのヘルスチェックコードが異なっていました。デフォルトは200ですが、200〜499などの範囲を追加することもできます。