【发布时间】:2021-06-13 01:28:31
【问题描述】:
SpringBoot 应用程序在 AWS Fargate 集群的 ECS 服务中作为 ECS 任务运行。 ECS 服务是负载平衡的,因此由服务生成的任务会自动注册到目标组。
我可以通过API Gateway => VPC Link => Network ELB => Application ELB => ECS Task调用Health端点,如下图:
但是,HealthChecks 似乎失败了,因此,任务被不断取消注册,导致设置完全无法使用。
我已确保将目标组的 HealthCheck 指向正确的端点 URL,如下所示:
我还确保 Fargate 任务所属的安全组允许来自 Application Load Balancer 的流量,如下所示:
但不知何故,HealthChecks 一直失败,任务被取消注册,我很困惑!
非常感谢您的帮助!
【问题讨论】:
-
也许您的应用程序不返回 200 代码,而是重定向代码(301 或 302)。也许它使用不同的端口?您的问题缺少很多信息。
-
@Marcin 根据我的邮递员的说法,端点确实返回了 200 代码!而且我已经确保一切都在端口 80 上运行。
-
最后一个SG是给fargete的?如果是这样,由于 ALB 和 Fargate 之间的动态端口映射,它应该允许所有传入端口,而不仅仅是 80。
-
@Marcin,我试过了;还是不行!奇怪的是,同一个安全组中的其他 ECS 服务在几个小时内处于相同的情况,他们通过了健康检查,现在处于稳定状态。
标签: amazon-web-services spring-boot containers aws-api-gateway aws-fargate