AWS ELB - 如果节点失败,它会重试请求吗?
AWS ELB - will it retry request if node fails?
我有一个 ELB 和它后面的 3 个节点。
谁能解释一下 ELB 在这些情况下会做什么:
- 客户端请求 -> ELB -> Node1 在请求中途失败(ELB 超时)
- 客户端请求 -> ELB -> Node1 超时(服务器超时和健康检查尚未启动)
特别想知道 ELB 是否会重试对另一个节点的请求?
我做了一个测试,但似乎没有,但也许我错过了一个设置。
谢谢,
AWS Elastic Load Balancing 服务使用健康检查来识别 healthy/unhealthy Amazon EC2 实例。如果实例被标记为不健康,则不会向该服务器发送新流量。一旦被识别为 Heathy,流量将再次发送到该实例。
如果向实例发送请求但未收到响应(因为应用程序失败或触发超时),则请求不会重新发送也不会发送到另一台服务器.重新发送请求将取决于发起者(例如用户或应用程序)。
这可能是时间流逝的问题,但是现在 ELB do 重试中止的请求:
- 要么是因为空闲超时(默认为 60 秒);
- 或者因为实例由于健康检查失败而变得不健康,连接耗尽被禁用(默认启用)
但是,这仅在您尚未发送 任何 响应字节时才成立。如果您发送的 headers 不完整,您将收到 408 请求超时 。如果您发送了完整的 headers(但没有发送 body 或发送到一半 body),客户端将收到不完整的响应 as-is.
The experiments I've performed were all with a single HTTP request per connection. If you use Keep-Alive connections, the behavior might be different.
我有一个 ELB 和它后面的 3 个节点。
谁能解释一下 ELB 在这些情况下会做什么:
- 客户端请求 -> ELB -> Node1 在请求中途失败(ELB 超时)
- 客户端请求 -> ELB -> Node1 超时(服务器超时和健康检查尚未启动)
特别想知道 ELB 是否会重试对另一个节点的请求?
我做了一个测试,但似乎没有,但也许我错过了一个设置。
谢谢,
AWS Elastic Load Balancing 服务使用健康检查来识别 healthy/unhealthy Amazon EC2 实例。如果实例被标记为不健康,则不会向该服务器发送新流量。一旦被识别为 Heathy,流量将再次发送到该实例。
如果向实例发送请求但未收到响应(因为应用程序失败或触发超时),则请求不会重新发送也不会发送到另一台服务器.重新发送请求将取决于发起者(例如用户或应用程序)。
这可能是时间流逝的问题,但是现在 ELB do 重试中止的请求:
- 要么是因为空闲超时(默认为 60 秒);
- 或者因为实例由于健康检查失败而变得不健康,连接耗尽被禁用(默认启用)
但是,这仅在您尚未发送 任何 响应字节时才成立。如果您发送的 headers 不完整,您将收到 408 请求超时 。如果您发送了完整的 headers(但没有发送 body 或发送到一半 body),客户端将收到不完整的响应 as-is.
The experiments I've performed were all with a single HTTP request per connection. If you use Keep-Alive connections, the behavior might be different.