如何为弹性负载均衡器配置自动超时



如果在规定的时间内没有从上游收到HTTP响应,有人知道让亚马逊的弹性负载均衡器超时的方法吗?

偶尔,亚马逊的Elastic Beanstalk会在更新失败,对指定资源的任何请求(如果有任何用途,则运行Nginx+Node)都会在资源尝试加载时挂起任何请求页面。

我希望将请求超时时间保持在2s以下,如果上游服务器到那时没有响应,则自动故障切换到默认的503响应。

ELB有可能做到这一点吗?

干杯

您可以为弹性负载平衡配置健康检查设置来实现这一点:

弹性负载平衡会根据您指定的配置定期检查每个注册的Amazon EC2实例的运行状况。如果弹性负载平衡发现一个不正常的实例,它会停止向该实例发送流量,并将流量重新路由到正常的实例。有关配置运行状况检查的更多信息,请参阅运行状况检查。

例如,您只需要为HTTP运行状况检查指定一个适当的Ping路径,2秒的响应超时和1的1不正常阈值来近似您的规范。

  • 看看我对亚马逊ELB自动健康检查的回答,它能做什么?有关ELB健康检查系统如何工作的更多详细信息

TLDR-在Nginx中设置超时。

让我们看看我们是否能解决这些问题。

问题:应该迅速向客户介绍一些东西。如果是500页也没关系。然而,ELB目前等待60秒,直到放弃(https://forums.aws.amazon.com/thread.jspa?messageID=382182)这意味着在向用户显示任何内容之前需要一分钟的时间。

解决方案:

  1. 更改ELB的超时看来AWS支持将有助于增加超时(https://forums.aws.amazon.com/thread.jspa?messageID=382182)所以我想你可以要求相反的结果。因此,我们可以看到,它不是用户/api可调的,需要您与支持交互。这需要一些准备时间,更重要的是,当未来从事该项目的开发人员会对如此短的超时时间感到惊讶时,这似乎是一个奇怪的调整。

  2. 更改nginx服务器的超时这似乎是正确的变革水平。您可以使用proxy_read_timeout(http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout)去做你想做的事。将其调到较小的位置(特别是,如果你愿意,你可以将其设置为特定的位置)。

  3. 更改请求发生的方式。更改客户端代码的工作方式可能是有益的。你可以想象一个非常简单的html/js页面。ping以查看作业是否完成,以及2。让用户了解最新进展。这比仅仅抛出500页需要更多的工作。

最近,AWS添加了一种为ELB配置超时的方法。查看此博客文章:

http://aws.amazon.com/blogs/aws/elb-idle-timeout-control/

相关内容

  • 没有找到相关文章

最新更新