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

spa*_*ovv 6 amazon-web-services amazon-elb

我有一个ELB和3个节点.

有人可以解释一下ELB在这些场景中会做什么:

  1. 客户端请求 - > ELB - > Node1在请求中间失败(ELB超时)
  2. 客户端请求 - > ELB - > Node1超时(服务器超时和运行状况检查尚未启动)

特别是我想知道ELB是否重试了另一个节点的请求?

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

谢谢,

Joh*_*ein 6

AWS Elastic Load Balancing服务使用运行状况检查来识别运行状况良好/不正常的Amazon EC2实例。如果实例标记为不正常,则不会有新流量发送到该服务器。一旦将其标识为Heathy,流量将再次发送到该实例。

如果将请求发送到实例并且没有收到响应(因为应用程序失败或触发了超时),则该请求将不会重新发送,也不会发送到另一台服务器。重新发送请求取决于发起者(例如,用户或应用)。


rix*_*rrr 5

这可能是时间的问题,但是如今,ELB 确实重试了中止的请求:

  • 可能是由于空闲超时(默认为60秒)所致;
  • 或者由于实例由于运行状况检查失败而运行不正常,因此禁用了“连接排空”(已启用默认值)

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

我执行的实验都是对每个连接使用单个HTTP请求。如果您使用保持活动连接,则行为可能会有所不同。

  • 我正在尝试查找 AWS 文档的链接,以确认 ELB 是否重试因空闲超时而失败的请求。你能提供这个来源吗@rix0rrr (3认同)