Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Routing based on request headers (using AWS Application Load Balancer)

A Layer 7 load balancer is more sophisticated and more powerful. It inspects packets, has access to HTTP and HTTPS headers, and (armed with more information) can do a more intelligent job of spreading the load out to the target.

https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/

I understand the AWS Application Load Balancer has access to the HTTP(S) request headers but I can only see how you can route via the path. Can someone explain how I can route based on the user-agent header. If it's not possible, please suggest an alternative AWS method.

like image 304
Simon Avatar asked Sep 07 '16 10:09

Simon


People also ask

How do I achieve path-based routing on an application load balancer?

Test path-based routing To test this routing, copy the DNS name of your Application Load Balancer in a web browser and add the URL path /svcA or /svcB. When the Application Load Balancer listener receives the request, the listener forwards that request to the appropriate target group based on the path condition.

Which load balancer from Amazon provides the feature for path-based routing?

Application Load Balancer. An Application Load Balancer makes routing decisions at the application layer (HTTP/HTTPS), supports path-based routing, and can route requests to one or more ports on each container instance in your cluster.

Which of the load balancers support path-based routing?

Path-based routing is one of the unique features offered by Application Load Balancer. Path-based routing is also referred to as URL-based routing. The Application load balancer will forward the requests to the specific targets based on the Rules configured in the load balancer.


1 Answers

Till 2017-05-26 ALB doesn't have header based routing. With a update on 2017-04-05 it has included Host based routing. Currently it supports only path and host based routing. You can visit here for latest AWS information.

If you want to route based on headers ,currently there are no options in ALB. You have to have an additional layer either like a proxy / nginx servers. Flow can be something like this below.

  1. Client calling https://example.com
  2. ALB's DNS is configured to example.com
  3. ALB has Target group attached to it which has nginx instances. Nginx instances routes to respective Load balancer with the header information. ( eg. if customerId is 123 route to ELB 1 else route to ELB 2 )
  4. Two ELB has different EC2 instances attached to it.

But heard AWS is working to ro

But heard AWS is working on routing request based on the headers.

like image 177
Harrish Avatar answered Oct 14 '22 03:10

Harrish