如何为Elastic Load Balancer配置自动超时?

时间:2014-03-03 14:50:15

标签: amazon-web-services timeout elastic-beanstalk amazon-elb

如果在设定的时间范围内没有从上游收到HTTP响应,有没有人知道如何让亚马逊的Elastic Load Balancers超时?

有时,Amazon的Elastic Beanstalk将无法更新,并且任何对指定资源的请求(如果有任何用途,运行Nginx + Node)将在资源尝试加载时挂起任何请求页面。

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

ELB可以实现吗?

干杯

3 个答案:

答案 0 :(得分:0)

Configure Health Check Settings Elastic Load Balancing可以实现此目的:

  

Elastic Load Balancing会根据您指定的配置定期检查每个已注册的Amazon EC2实例的运行状况。如果Elastic Load Balancing发现不健康的实例,它会停止向实例发送流量并将流量重新路由到正常的实例。有关配置运行状况检查的详细信息,请参阅Health Check

例如,您只需要为HTTP运行状况检查指定适当的 Ping路径响应超时为2秒,并且 UnhealthyThreshold 1表示您的规格。

答案 1 :(得分:0)

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_timeouthttp://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout)来执行您要查找的内容。将其调整为小的(特别是,如果您愿意,可以将其设置为特定位置)。

  3. 更改请求的发生方式。 更改客户端代码的工作方式可能会有所帮助。您可以想象发送一个非常简单的html / js页面,其中1. ping以查看作业是否完成,以及2.让用户更新进度。这需要更多的工作,然后扔掉500页。

答案 2 :(得分:0)

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

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

相关问题