猜測 AWS ELB 內的架構…
AWS Elastic Load Balancing (ELB) 是 AWS 在雲端上推出的 Load balancer。
在非雲端的架構上會使用 Layer 4 Switch (像是 F5、 Alteon),或是使用 open source 的 HAProxy。
從實驗猜測 ELB 是這樣做的:
- ELB 是 Amazon 自己開發的「軟體」,而非硬體。可能就是跑在 EC2 上,也可能為了 billing 的需求是跑在另外一個 cluster 上。
- 在每一個有 instance 需要服務的 availability zone 上都會開一台 ELB instance 起來。
- 每一個 ELB instance 會有一個 public IP 對外,在 ELB domain 解出來的 IP 可以查出來。
所以 ELB 的文件上會警告「每一個 AZ 的運算能力要盡可能接近」:
By default, the load balancer node routes traffic to back-end instances within the same Availability Zone.
To ensure that your back-end instances are able to handle the request load in each Availability Zone, it is important to have approximately equivalent numbers of instances in each zone.
這是因為不同 AZ 的平衡是靠 DNS round robin 處理,所以下面的例子就有建議儘量打平:
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 that 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.
而量大到一個 ELB instance 撐不住的時候,AWS 就會自動開出第二台:(目前都只放在同一個 zone 上)
;; ANSWER SECTION: lb-guesschocolate-1791292202.ap-northeast-1.elb.amazonaws.com. 60 IN A 54.249.68.121 lb-guesschocolate-1791292202.ap-northeast-1.elb.amazonaws.com. 60 IN A 54.238.240.61
以這樣的架構,當量夠大的時候,AWS 應該要有能力生出足夠多的 ELB instance 打散?之後再來觀察看看好了… 還有很多煩惱要處理 ~_~