ELB
Elastic Load Balancer
Overview
Distribute traffic across AZs.
AWS has 4 kinds of load balancers:
3 popular ELB are:
- | ALB (L7) | NLB (L4) | CLB (old) |
---|---|---|---|
protocol | HTTP, HTTPS, Websocket, gRPC | TCP, TLS (secure TCP), UDP | HTTP, HTTPS, TCP, SSL |
DNS Name | Yes | Yes | Yes |
Static IP | No | Yes | No |
Benefit | route traffic to different Target group based on URL Path, Hostname, HTTP headers, and Query Strings. |
| |
Target group |
| ||
Health check | Support HTTP, HTTPS, TCP | ||
Note |
| has 1 static IP /AZ -> can attach Elastic IP |
Gateway Load Balancer (L3 - Network layer)
Use cases
Adding elasticity to your application. (+ with Route53 Weighted Routing policy).
Features
ELB Sticky Session
Ensures traffic for the same client is always redirected to the same target (e.g., EC2 instance). This helps that the client does not lose his session data. To use sticky sessions, the client must support cookies.
Sticky sessions are enabled at the target group level.
ALB use the
Expires
attribute in the cookie header instead of theMax-Age
attribute.Sticky sessions rely on a cookie that is not going to be consistent across devices.
Sticky sessions are not supported if cross-zone load balancing is disabled.
With cross-origin resource sharing (CORS) requests, some browsers require SameSite=None; Secure
to enable stickiness.
ELB Health Checks
When you enable
ELB Health Checks
, your ELB won't send traffic to unhealthy (crashed) EC2 instances.When an EC2 instance fails the ALB Health Checks, it is marked unhealthy and will be terminated while the ASG launches a new EC2 instance.
Cross Zone Load Balancing
When Cross-Zone Load Balancing is enabled, ELB distributes traffic evenly across all registered EC2 instances in all AZs.
ALB | NLB | CLB |
---|---|---|
enabled by default | disabled by default | disabled by default |
free | $ for inter-AZ | free |
SSL certificate
Manage certificates using ACM (AWS Certificate Manager)
Server Name Indication
Allow you load multi SSL certificates on one listener.
Trivia
Only NLB provides both static DNS name and static IP. While, ALB & CLB provide a static DNS name but it does NOT provide a static IP.
When using an ALB to distribute traffic to your EC2 instances, the IP address you'll receive requests from will be the ALB's private IP addresses. To get the client's IP address, ALB adds an additional header called
X-Forwarded-For
contains the client's IP address.ELB waits 300 seconds before the completion of the deregistration process, which can help in-flight requests to the target become complete. To change the amount of time that Elastic Load Balancing waits, update the deregistration delay value.
Only ALB support gRPC.
Concepts
gRPC (Remote Procedure Call): a protocol, a way that different parts of a computer program can talk to each other, even if they are on different computers or in different places.
Last updated