AWS Fargate - 应用程序负载均衡器 (ELB) 显示运行状况不佳的目标,并显示错误"Health checks failed with these codes: [502]"



我的应用程序在端口3000上运行,web上下文是/app,所以"http://host:3000/app/index.html"成功返回本地运行应用程序的index.html页面。

负载均衡器(公共(在端口80上侦听,并将流量转发到端口3000上的目标。

AWS Fargate-任务定义将主机和容器端口映射到端口3000。-任务显示为RUNNING,状态为HEALTHY,但最终由于ELB健康而停止检查失败。我可以在云监控中看到我的应用程序启动日志(任务->日志(。-群集服务的安全组正在自定义tcp端口3000上接收入站流量。

我尝试更新TargetGroup健康检查以使用路径"/"、"/app"one_answers"/app/index.html",但这也不起作用。

首先验证:

  • 您的应用程序在容器中出现错误时启动
  • 您的安全配置允许ECS和ELB之间的通信
  • 你的健康检查指向了正确的道路

现在是查看ELB日志的时候了,您可以按照本教程启用它们。

通过ECS服务日志、ECS任务日志和ELB日志,您可以确定应用程序启动需要多长时间;运行时,一旦您知道了,请将ECS服务宽限期配置为该值。

一旦您的宽限期足够长,可以实现之前解释的情况,您的申请将通过健康检查。

例如,在我们的案例中,一个Spring Boot应用程序在EC2实例中启动大约需要20秒,在ECS Fargate服务上可能需要3分钟以上才能访问,因此我们将宽限期设置为240秒,这就解决了问题

您需要将TargetGroup健康检查配置为使用3000端口,因为在您的应用程序中正在侦听3000端口,并且ALB将请求发送到在该端口中运行的任务,您可以转到TargetGroup健康检查选项卡并在"端口"选项中选择覆盖。如果您创建了ECS服务,请验证健康检查宽限期,在某些情况下,任务可能需要大量时间才能正确启动。

相关内容

  • 没有找到相关文章

最新更新