【问题标题】:How can I configure an automatic timeout for an Elastic Load Balancer?如何为 Elastic Load Balancer 配置自动超时?
【发布时间】:2014-04-04 16:19:22
【问题描述】:

如果在设定的时间范围内未从上游收到 HTTP 响应,是否有人知道如何让 Amazon 的弹性负载均衡器超时?

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

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

ELB 可以做到吗?

干杯

【问题讨论】:

  • 您使用的是 Express 还是 Geddy?
  • 我现在在这里使用 Express。

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


【解决方案1】:

您可以通过Configure Health Check SettingsElastic Load Balancing 实现此目的:

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

例如,您只需为 HTTP 健康检查指定适当的 Ping 路径、2 秒的 响应超时UnhealthyThreshold 1 以接近您的规格。

【讨论】:

    【解决方案2】:

    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 页面,该页面 1. ping 以查看工作是否完成,以及 2. 让用户了解进度。这比仅仅抛出 500 页面需要更多的工作。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-04
        • 2012-11-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 2021-05-25
        • 2017-05-10
        • 2016-02-05
        相关资源
        最近更新 更多