我的应用程序在端口3000上运行,并且Web上下文为/ app,因此“ http://host:3000/app/index.html”成功返回本地运行该应用程序的index.html页面。
负载均衡器(公共)在端口80上侦听并将流量转发到端口3000上的目标。
AWS Fargate-任务定义将主机和容器端口映射到端口3000。 -任务显示为“正在运行”和“状态为健康”,但由于ELB运行状况而最终停止 检查失败。而且我能够在Cloud Watch中看到我的应用程序启动日志(任务->日志)。 -群集服务的安全组正在自定义tcp端口3000上接收入站流量。
我已尝试通过更新TargetGroup运行状况检查以将路径用作“ /”,“ / app”和“ /app/index.html”,但这也不起作用。
答案 0 :(得分:2)
首先验证:
是时候看看ELB日志了,您可以按照tutorial启用它们。
使用ECS服务日志,ECS任务日志和ELB日志,您可以确定应用程序启动和运行所需的时间,一旦知道,就将ECS服务宽限期配置为该值。
一旦您的宽限期足够大以至于可以进行前面解释的操作,您的应用程序将通过运行状况检查。
例如,在我们的示例中,一个Spring Boot应用程序在EC2实例中启动大约需要20秒,因此在ECS Fargate服务上可能需要3分钟以上的时间才能到达,因此我们将宽限期设置为240秒就解决了问题。
答案 1 :(得分:0)
您需要将TargetGroup运行状况检查配置为使用3000端口,因为在您的应用程序中侦听3000端口并且ALB将请求发送到在该端口中运行的任务,您可以将其转到TargetGroup运行状况检查标签,然后在选项端口中选择替代。 如果您创建了ECS服务,请验证运行状况检查宽限期,在某些情况下,该任务可能需要大量时间才能正确启动。