Move to the Next Level of Load Balancing on AWS
Are you still using the Classic Load Balancer - formerly known as Elastic Load Balancer - for distributing incoming requests among a fleet of EC2 Instances? AWS announced the Application Load Balancer, as a new alternative to the Classic Load Balancer in November 2016. It’s about time to benefit from the next-generation load balancer!
The Classic Load Balancer, as well as the Application Load Balancer, are managed services provided by AWS offering high availability and scalability out-of-the-box.
But what are the differences between the Classic Load Balancer and the Application Load Balancer?
|Classic Load Balancer||Application Load Balancer|
|Load Balancing Type||Layer 4 or Basic Layer 7||Advanced Layer 7|
|Supported Protocols||TCP, SSL (secure TCP), HTTP, HTTPS||HTTP, HTTPS, HTTP/2, WebSockets|
|Path- and Host-Based Routing||❌ n/a||✅ out-of-the-box|
|EC2 Container Service support||❌ n/a||✅ out-of-the-box|
|Web Application Firewall||❌ n/a||✅ out-of-the-box|
Let’s dive into the details of two of these differences.
Are you operating load balancers (e.g. HAProxy) on top of EC2 Instances yourself to provide path- or host-based routing? The chances are high that you can simplify your infrastructure by using an Application Load Balancer.
Routing incoming requests based on path or host headers, as shown in the following figure, is possible with the Application Load Balancer by default.
The following steps are needed to configure an Application Load Balancer:
Please support our work!
We have published 327 articles, 41 podcast episodes, and 15 videos. It's all free and means a lot of work in our spare time.
Thanks to Alan Leech, Alex DeBrie, e9e4e5f0faef, Goran Opacic, jhoadley, Shawn Tolidano, Thorsten Hoeger, Todd Valentine, Vince Fulco, and all anonymous supporters for your help! We also want to thank all supporters who purchased a cloudonaut t-shirt. It gives us great pleasure to send our t-shirts all over the world.
With your help, we can continue to produce independent & high-quality content focused on AWS. Please support us!Support us
- Add a Listener to your Application Load Balancer by specifying a port and protocol.
- Create a Target Group.
- Register a Target, consisting of an EC2 Instance ID and port, at your Target Group.
- Define a
Listener Rulemapping incoming requests based on path or host with your
The EC2 Container Service (ECS) provides a container management service. ECS is distributing your containers across a fleet of EC2 Instances. To be able to send requests to one of the containers providing a particular service a client needs to know where to send its requests. But as ECS needs to launch containers dynamically based on load, during deployments or because of a failure within the cluster it is not an option to use static ports and IP addresses.
As shown in the following figure ECS is integrated with the Application Load Balancer. Whenever ECS launches a new container, a dynamic port is assigned and registered as a target at a Target Group.
A client sends its request to the Application Load Balancer. The Application Load Balancer is forwarding the request to a dynamic port mapped to a container running on one of the EC2 Instances that are forming the ECS cluster.
The Application Load Balancer provides powerful features as path- and host-based routing, integration with ECS, as well as HTTP/2 and WAF support.
It’s about time to use the Application Load Balancer for new infrastructures and migrate from Classic Load Balancers to Applications Load Balancers within existing infrastructures as well.
Want to learn more about the Application Load Balancer? In our A Cloud Guru online course Deep Dive into Application Load Balancer, we’ll introduce you to the Application Load Balance in AWS, and show you how to take advantage of its powerful features. Nine hands-on labs and console walkthroughs will increase your skills and enable you to gain practical experience with the Application Load Balancer (ALB).