亞馬遜的負載均衡(Amazon Load Balancing)


公司最近要將架構遷到雲上,存儲用S3,服務器用EC2。為了將我們的架構變的具有橫向的伸縮性,我們使用AWS的Load balancing來做負載均衡。簡單來說負載均衡就是講大量的客戶端訪問分發到不同的后端amazon ec2 instances中。

Amazon的Load balancing配置起來也非常簡單,就是將已存在的ec2 instance添加到load balancing中。之后你可以配置端口轉發,即將客戶訪問的端口轉發到合適的后台服務。當然也有些需要注意的地方:

1,從哪里找到Load Balancing的配置頁面

就在你的EC2的Dashboard中就可以找到Load Balancing配置頁面。

aws-load-balancing

2,Port轉發的配置

在使用Load Balancing之前要設置端口的轉發,就在Listeners那個tab中。如果你使用HTTP協議,你就可以選擇HTTP協議。如果你是TCP應用請選擇TCP,看論壇上說可以使用的TCP端口在是從1024起步的。如果你是選了HTTP,有個可能對應用來說比較有用的選項Stickiness,其實就是Load Balancer在HTTP協議上加了一個Cookie,借此來實現Session的功能。

 

3,Health Check

Load Balancing的另一個功能,或者說Feature就是Load Balancer維護一個ec2 instances pool。通過Health Check的instance會被添加到instances pool中等待load balancer分發過來的connections。如果某個instance通不過health check,那么他會從instances pool刪除,load balancer不會再分發connections到這個instance。但是刪除的instance會繼續做health check當他的再次通過health check的時候會被再次添加到instances pool中。

Health Check分為兩種類型:

1,HTTP應用,那么Health Check就是訪問一個固定位置的URL,如果返回HTTP Status Code為200。那么load balancer就認為通過health check。可以根據你的業務在URL的服務端代碼中做一些服務器的狀態檢查,但是不要太耗時。

2,TCP應用,那么Health Check就是發起一個TCP connections,如果連接成功,那么就認為通過了health check。

image

這里的Timeout就是訪問URL或TCP連接的最大超時時間,如果在這個時間內(上圖是10s)還是沒有返回,那么就就認為unhealthy。

Interval是多久訪問一次這個URL或發起一個TCP連接。上圖是300s(5min),這也是容許的最大值。

Unhealthy Threshold是指連續(consecutive)多少次訪問失敗,才把這個instance從instances pool中移除。

Healthy Threshold是指連續多少次成功訪問,才再次把這個instance添加到instances pool中。

 

4,其他的問題

目前對我們的應用來說比較大的問題是,如何將每個instance生成的文件,正確的上傳到S3的特定位置。這就引申到一個load balancing的本質:在后端是由多台服務器來提供服務。對於某些應用來說這沒有問題,只要后端數據有個統一的訪問接口,這都不是問題。但是對於一些應用還是需要在架構上做些調整來實現load balancing的透明化。切記,透明化才能讓橫向擴展變得容易,這也是用load balancing的初衷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM