【发布时间】:2020-02-20 06:12:03
【问题描述】:
(注意:我已经修改了原来的帖子,因为我现在收集了更多数据。)
在几周没有问题之后,今天才开始发生一些事情,我想不出我所做的任何改变会导致这种情况。
我有一个 Spring Boot 应用程序位于 NGINX 代理(全部 Docker 化)后面,所有这些都位于 AWS ECS Fargate 集群中。
部署后,我注意到——随机(例如,有时这不会发生)——对 Spring Boot 提供的服务的调用将 503(在 NGINX 代理之后)。它似乎在每秒部署一次时执行此操作,随后的部署解决了这个问题,即对服务器的调用将成功一段时间(可能是几秒钟;可能是几分钟),然后停止。
我查看了“HealthyHostCount”,并注意到当我收到 503 并且我的主要目标群体说它在任何一个 AZ 中都没有注册/健康的主机时。我不确定什么会导致 TG 取消注册目标,尤其是因为后续部署似乎“修复”了该问题。
任何见解/帮助将不胜感激。
提前致谢。
更新 看起来好像它似乎发生在我从 CodeDeploy 的蓝/绿部署中“终止原始任务集”之后。我想知道这是否是 AZ 问题,即我没有指定足够的任务来同时运行它们。
【问题讨论】:
-
你有多少个 docker 容器?也许是一个子集导致了问题
-
在这个集群/服务中,有三个容器。不过,我看不出它们会如何影响事物,特别是因为 Spring Boot 容器响应执行器端点,但同一容器中没有其他端点。
-
如果有帮助的话,还有一个 Spring Boot 容器、一个 NGINX 容器和一个 Datadog 代理容器。
-
您是否为您的 Fargate 服务配置了负载平衡规则入站侦听器?
-
@QuỳnhNguyễn 我很确定我做到了,因为它一直到今天都完美无缺。我想不出有什么改变会影响到这一点。事实上,Spring Boot 应用程序中唯一的代码更改是检查两个装箱的 Long 对象的相等性(但我已经更改了更多并且相同的行为仍在继续)。
标签: amazon-web-services docker amazon-ecs amazon-elb http-status-code-503