Elastic Load Balancer, provided as part of the AWS platform, automatically distributes incoming traffic across multiple targets - like Amazon EC2 instances, containers, IP addresses, and Lambda functions - either in a single availability zone, or in multiple availability zones.
Elastic Load Balancer provides the following key features and benefits.
1. High Availability - Elastic Load Balancer ensures high availability of applications and targets by automatically distributing the load across these applications and targets.
2. Health checks - Elastic Load Balancer detects unhealthy applications and targets, stops send traffic to these applications and targets, and distributes the load among the remaining healthy applications and targets.
3. Security - Elastic Load balancer can be associated to security groups that are created and managed in a Virtual Private Cloud (VPC) - which provides additional security options.
4. Layer 4 or Layer 7 load balancing - Elastic Load Balancer has the capabality of load balancing Http/Https requests (Layer 7) as well as TCP/UDP requsts (Layer 4)
5. Monitoring - Elastic Load Balancer can integrate with Amazon CloudWatch to monotor performance of applications and to gather operationsl metrics.
6. TLS Termination - Elastic Load Balancer provides capabilities SSL/TSL decryption, so that you can offload this CPU intensive task away from your applications.
There are three different kinds of Elastic Load Balancers.
1. Application Load Balancer (ALB) - Load balances Http/Https traffic, at request level (Layer 7), across applications including microservices and containers, within Amazon Virtual Private Cloud (VPC).
2. Network Load Balancer (NLB) - Load balances TCP/UDP/TLS traffic, at connection level (Layer 4), across targets within Amazon Virtual Private Cloud (VPC).
3. Classic Load Balancer (CLB) - Load balances both Http/Https and TCP/SSL/TLS traffic, at request level and connection level, intended for applications built within the EC2-classic network.
If you have to load balance Http/Https requests then you can use Application Load Balancer. If you have to load balance TCP/UDP traffic, for low latency and extremely performant applications then you can use Network Load Balancer. If you load balance applications build on the classic EC2 network then you can use Classis Load Balancer.