为什么ALB对健康目标的运行状况检查失败?



我花了相当多的时间来调试这个,所以我想我应该发布它,以防其他人有同样的问题。我试图调试Fargate的ALB健康检查问题。我可以手动连接,看到一切都通过了。我甚至可以连接到Fargate实例,查看健康检查是否通过并得到适当的响应。但是ALB一直报告运行状况检查失败。

在这个特定的情况下,我使用Tomcat作为服务器,Fargate作为目的地,具体的错误消息是"请求超时",但我认为其他设置(甚至其他错误消息)符合这种情况。

唯一的问题是,在我的服务中,我需要大大增加HealthCheckGracePeriodSeconds。这是负载均衡器在开始对您进行健康检查计数之前等待的时间。

事实证明,在负载均衡器所做的向您报告的之间存在相当多的延迟。当我收到"请求超时"的时候;错误,负载平衡器已经确定我的机器没有通过健康检查,但还没有将其从池中删除。因此,对我来说,它看起来运行正常,负载平衡器仍然在发送健康检查,即使它已经决定将机器从池中移除。只是在负载均衡器上做出的决定之间的延迟,当它实现这些决定时,以及当它报告这些决定时,在我这端造成了相当多的混乱。

因此,如果您在将目标添加到负载均衡器(在我的例子中,它是一个Tomcat服务器)时遇到问题,特别是在Fargate上,请务必检查HealthCheckGracePeriodSeconds,以确保您给了它足够的时间来启动所有的方式。你可以设置一个非常高的值来确保(我认为它可以持续到67年)。

相关内容

最新更新