AWS ELB - will it query if node fails?

I have an ELB and 3 nodes behind it.

Can someone please explain to me what ELB will do in these scenarios:

  • Client request -> ELB -> Node1 error in the middle of the request (ELB timeout)
  • Client request β†’ ELB β†’ Node1 timeouts (Server timeout and health check have not been deleted yet)

In particular, I am wondering if the ELB will repeat the request to another node?

I did a test and it doesn’t look like it, but maybe there is a setting that I missed.

Thanks,

+4
source share
2 answers

AWS Elastic Load Balancing uses health checks to determine if Amazon EC2 is healthy / unhealthy. If the instance is marked as unhealthy, then new traffic will not be sent to this server. Once it is identified as a Hit, traffic will again be sent to the instance.

If the request is sent to the instance and no response is received (due to the application not working or a timeout being started), the request will not be resent to another server . To send a request, send the request to the sender (for example, the user or application).

+4
source

Perhaps this was due to the passage of time, but these days ELBs do repeat requests that are interrupted:

  • Or because of a wait timeout (60 seconds by default);
  • Or because the instance was unhealthy due to health check failures when the connection was disconnected (enabled by default)

However, this is only done if you have not yet sent response bytes. If you send incomplete headers, you will receive a 408 request timeout . If you sent full headers (but did not send the body or did not receive half the body), the client will receive an incomplete response as is.

The experiments I performed were all with one HTTP connection request. If you use Keep-Alive connections, the behavior may be different.

+2
source

All Articles