AWS ELB - 如果节点失败,它会重试请求吗?

时间:2015-08-04 20:55:41

标签: amazon-web-services amazon-elb

我有一个ELB和3个节点。

有人可以解释一下ELB在这些情况下会做什么:

  1. 客户请求 - > ELB - > Node1在请求中间失败(ELB超时)
  2. 客户请求 - > ELB - > Node1超时(服务器超时和运行状况检查尚未启动)
  3. 特别是我想知道ELB是否会将请求重试到另一个节点?

    我做了一个测试而且似乎没有,但也许有一个我错过的设置。

    谢谢,

2 个答案:

答案 0 :(得分:4)

AWS Elastic Load Balancing服务使用运行状况检查来识别健康/不健康的Amazon EC2实例。如果实例标记为“运行状况不佳”,则不会向该服务器发送新流量。一旦被识别为Heathy,流量将再次被发送到实例。

如果请求被发送到实例并且没有收到响应(因为应用程序失败或触发了超时),请求将不会重新发送,也不会发送到其他服务器。由发起者(例如用户或应用程序)重新发送请求。

答案 1 :(得分:4)

这可能是时间流逝的问题,但是现在ELB 重试中止的请求:

  • 由于空闲超时(默认为60秒);
  • 或者因为健康状况检查失败导致实例运行不正常,禁用连接暂停(默认启用)

但是,仅当您尚未发送任何响应字节时,此操作才会成立。如果您发送了不完整的标题,则会收到 408请求超时。如果您已发送完整标题(但未发送正文或半身通过正文),则客户端将按原样获得未完成的响应。

  

我执行的实验都是每个连接都有一个HTTP请求。如果使用Keep-Alive连接,则行为可能不同。