Does AWS support weighted load balancing?
If you are using AWS Route 53 as DNS service, you can configure the weight-age on DNS record.
DNS weight-age refer 2.2
Amazon Route 53 support Weighted Round Robin. Weighted Round Robin allows you to assign weights to resource record sets in order to specify the frequency with which different responses are served. You may want to use this capability to do A/B testing, sending a small portion of traffic to a server on which you’ve made a software change. For instance, suppose you have two record sets associated with one DNS name—one with weight 3 and one with weight 1. In this case, 75% of the time Route 53 will return the record set with weight 3 and 25% of the time Route 53 will return the record set with weight 1. Weights can be any number between 0 and 255.
The How Elastic Load Balancing Works documentation page states:
With a Classic Load Balancer, the load balancer node that receives the request selects a registered instance using the round robin routing algorithm for TCP listeners and the least outstanding requests routing algorithm for HTTP and HTTPS listeners.
With an Application Load Balancer, the load balancer node that receives the request evaluates the listener rules in priority order to determine which rule to apply, and then selects a target from the target group for the rule action using the round robin routing algorithm. Routing is performed independently for each target group, even when a target is registered with multiple target groups.
The Elastic Load balancing service does not support weighted round-robin (where you specify the weights).
You could use Amazon Route 53 with a Weighted Routing Policy. From the Choosing a Routing Policy documentation page:
Use the weighted routing policy when you have multiple resources that perform the same function (for example, web servers that serve the same website) and you want Amazon Route 53 to route traffic to those resources in proportions that you specify (for example, one quarter to one server and three quarters to the other).
UPDATE BASED ON NEW FEATURES FROM AWS
Originally, you were not able to do weighted routing on a LoadBalancer. However, that has recently changed
If you are using an Application Load Balancer, it is possible to set a ListenerRule which will use a weighted policy.
Steps:
- Create your Load Balancer
- Add a Listener onto your Load Balancer
- Add a Listener Rule onto your Listener
- Add a policy that forwards traffic based on whatever IF statement you need
- You now have the option to add multiple target groups, add these and assign a weighted amount to each.
You can see the AWS blog post that highlights this here: https://aws.amazon.com/blogs/aws/new-application-load-balancer-simplifies-deployment-with-weighted-target-groups/
You could use Route53 weight routing directly to your servers or to multiple ELBs