Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS Elastic Load Balancer and multiple availability zones

I want to understand how ELB load balances between multiple availability zones. For example, if I have 4 instances (a1, a2, a3, a4) in zone us-east-1a and a single instance d1 in us-east-1d behind an ELB, how is the traffic distributed between the two availability zones? i.e., would d1 get nearly 50% of all the traffic or 1/5th of the traffic?

like image 677
mbsheikh Avatar asked Jul 11 '12 01:07

mbsheikh


People also ask

Can ELB span multiple availability zones?

ELB load balancer serves as a single point of contact for clients and distributes incoming application traffic across multiple healthy registered targets, such as EC2 instances, in multiple Availability Zones.

What availability Zones support the Amazon Elastic load balancer?

There are two enabled Availability Zones, with two targets in Availability Zone A and eight targets in Availability Zone B. Clients send requests, and Amazon Route 53 responds to each request with the IP address of one of the load balancer nodes.

Can an ELB classic load balancer span across multiple regions?

A: Yes. Network Load Balancer currently supports 200 targets per Availability Zone. For example, if you are in two AZs, you can have up to 400 targets registered with Network Load Balancer.

Can elastic load balancing distribute traffic across regions?

Use Elastic Load Balancing to distribute traffic across the instances in your Auto Scaling group. Elastic Load Balancing automatically distributes your incoming application traffic across all the EC2 instances that you are running.


2 Answers

If you enable ELB Cross-Zone Load Balancing, d1 will get 20% of the traffic.

Here's what happen without enabling Cross-Zone Load Balancing: D1 would get nearly 50% of the traffic. This is why Amazon recommends adding the same amount of instances from each AZ to your ELB.

The following excerpt is extracted from Overview of Elastic Load Balancing:

Incoming traffic is load balanced equally across all Availability Zones enabled for your load balancer, so it is important to have approximately equivalent numbers of instances in each zone. For example, if you have ten instances in Availability Zone us-east-1a and two instances in us-east-1b, the traffic will still be equally distributed between the two Availability Zones. As a result, the two instances in us-east-1b will have to serve the same amount of traffic as the ten instances in us-east-1a. As a best practice, we recommend you keep an equivalent or nearly equivalent number of instances in each of your Availability Zones. So in the example, rather than having ten instances in us-east-1a and two in us-east-1b, you could distribute your instances so that you have six instances in each Availability Zone.

like image 173
Viccari Avatar answered Sep 28 '22 06:09

Viccari


The load balancing between different availability zones is done via DNS. When a DNS resolver on the client asks for the IP address of the ELB, it gets two addresses. And chooses to use one of them (usually the first). The DNS server usually responds with a random order, so the first IP is not used at all times but each IP is used only part of the time (half for 2, third of the time for 3, etc ...).

Then behind these IP addresses you have an ELB server in each availability zone that has your instances connected to it. This is the reason why a zone with just a single instance will get the same amount of traffic as all the instances in another zone.

When you get to the point that you have a very large number of instances, ELB can decide to create two such servers in a single availability zone, but in this case it will split your instances for it to have half (or some other equal division) of your instances.

like image 34
Evgeny Avatar answered Sep 28 '22 07:09

Evgeny