Move to the Next Level of Load Balancing on AWS

Andreas Wittig – 08 Jul 2017

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.

Path- and Host-Based Routing

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.

ALB Routing

The following steps are needed to configure an Application Load Balancer:

Andreas and Michael Wittig

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
  1. Add a Listener to your Application Load Balancer by specifying a port and protocol.
  2. Create a Target Group.
  3. Register a Target, consisting of an EC2 Instance ID and port, at your Target Group.
  4. Define a Listener Rule mapping incoming requests based on path or host with your Target Group.

Works with ECS

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).

Tags: aws elb alb
Andreas Wittig

Andreas Wittig

I launched in 2015 with my brother Michael. Since then, we have published hundreds of articles, podcast episodes, and videos. It’s all free and means a lot of work in our spare time. We enjoy sharing our AWS knowledge with you.
Have you learned something new by reading, listening, or watching our content? If so, we kindly ask you to support us in producing high-quality & independent AWS content. We look forward to sharing our AWS knowledge with you.

Support us

Feedback? Questions? You can reach me via Email, Twitter, or LinkedIn.