繁体   English   中英

AWS Elastic Beanstalk运行状况检查问题

[英]AWS Elastic Beanstalk health check issue

我的Web应用程序是Django,Web服务器使用Nginx,使用Docker镜像和Elastic Beanstalk进行部署。

通常没有问题,但随着负载均衡器扩展EC2,我的Web服务器变为502 Bad Gateway。

我检查了Elastic Beanstalk应用程序日志,大约16%的请求返回了5xx错误,此时负载均衡器扩展了EC2,导致Web服务器转换到502 Bad Gateway状态,Elastic Beanstalk应用程序转换为Degraded状态。

当负载均衡器执行运行状况检查时,这是一个常见问题吗? 如果没有,如何关闭健康检查?

我附上了一张拍摄的图像供参考。

在此输入图像描述

据我所知,只有通过手动检查您网站上的主要链接以及是否可以通过简单的GET请求访问它们,才能减轻502 Bad Gateway错误。

在我的网站的情况下,我在登录页面和一个关于页面时遇到了一些问题(并且它遗漏了我网站的大约33%)这就是为什么在上传到EC2后我在健康检查上得到了5xx错误。 我通过简单地使链接在服务器上运行来解决问题(有一些功能只在localhost上运行而不在AWS上运行所以我修复了它并在运行状况检查中获得了OK状态)

我认为删除健康检查没有意义,因为它提供了有关您网站的重要信息,并且您可能不希望您的网站有无法访问的网页。

跟踪日志以缩小问题范围。

我希望你找到解决方案。

在部署代码时,您将获得502,因为EC2实例未通过运行状况检查调用。 您需要调整负载平衡运行状况检查默认设置,以便有足够的时间完成部署。 如果在每次部署后也重新启动服务器,请为部署留出更多时间。

AWS负载均衡器使用您指定的路径每N秒向每个已注册的实例发送运行状况检查请求。 默认间隔秒为30秒。 如果运行的任何实例的运行状况检查失败N次(默认值为2),则运行状况将更改为Degraded或Severe,具体取决于未响应的实例百分比。

  1. 发送应返回200响应代码的请求。 默认为'/index.html'
  2. 超时前等待N秒(默认为5秒)
  3. N间隔秒后再次尝试(默认为30秒)
  4. 如果N个连续呼叫失败,请将运行状况更改为警告或严重(默认不健康阈值为2)
  5. 连续N次成功呼叫后,将健康状态恢复为OK(默认值为10)。

使用默认设置,如果任何Web服务器实例关闭超过一分钟(每次尝试2次,则为2次),则会将其视为中断。 需要5分钟(每30秒10次尝试)才能恢复到Ok状态。

有关详细说明和配置选项,请查看AWS文档: 配置Elastic Load Balancing的运行状况检查

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM