1. 程式人生 > >負載均衡的基礎技術種類

負載均衡的基礎技術種類

完成 計算 dns div strong 種類 web服務器 text 網絡層

技術分享 通過負載均衡實現應用服務器伸縮性 1、 HTTP重定向負載均衡
利用HTTP重定向協議實現負載均衡。如下圖所示: 技術分享 HTTP重定向負載均衡原理

HTTP重定向服務器是一臺普通的應用服務器,其唯一的功能就是根據用戶的HTTP請求計算一臺真實的Web服務器地址,並將該Web服務器地址寫入HTTP重定向響應中(響應狀態碼302)返回給用戶瀏覽器。

缺點:

1、瀏覽器需要兩次請求服務器才能完成一次訪問,性能較差

2、重定向服務器自身的處理能力有可能成為瓶頸,整個集群的伸縮性規模有限

3、使用HTTP302響應碼重定向,有可能使搜索引擎判斷為SEO作弊,降低搜索排名

2、DNS域名解析負載均衡

這是利用DNS處理域名解析請求的同時進行負載均衡處理的一種方案,如下圖所示:

技術分享

DNS域名解析負載均衡原理

在DNS服務器中配置多個A記錄,如:

www.mysite.com IN A 114.100.80.1

www.mysite.com IN A 114.100.80.2

www.mysite.com IN A 114.100.80.3

每次域名解析請求都會根據負載均衡算法計算一個不同的IP地址返回,這樣A記錄中配置的多個服務器就構成一個集群,並可以實現負載均衡。上圖中的瀏覽器請求解析域名www.mysite.com,DNS根據A記錄和負載均衡算法計算得到一個IP地址114.100.80.3,並返回給瀏覽器;瀏覽器根據該IP地址,訪問真是物理服務器114.100.80.3。

優點:將負載均衡的工作轉交給DNS,省掉了網站管理維護負載均衡服務器的麻煩,同時許多DNS還支持基於地理位置的域名解析,即會將域名解析成距離用戶地理位置最近的一個服務器地址,這樣可加快用戶訪問速度,改善性能。

缺點:目前的DNS是多級解析,每一級DNS都可能緩存A記錄,當下線某臺服務器後,即使修改了DNS的A記錄,要使其生效也需要較長的時間,這段時間,DNS依然會將域名解析到已經下線的服務器,導致用戶訪問失敗;而且DNS負載均衡的控制權在域名服務商那裏,網站無法對其做更多改善和更強大的管理

大型網站總是部分使用DNS域名解析,利用域名解析作為第一級負載均衡手段,即域名解析得到的一組服務器並不是實際提供Web服務的物理服務器,而是同樣提供負載均衡的內部服務器,這組內部負載均衡服務器再進行負載均衡,將請求分發到真實的Web服務器上。

3、反向代理負載均衡(由於反向代理服務器轉發請求在HTTP協議層面,因此也叫應用層負載均衡)

利用反向代理服務器進行負載均衡,如下圖:

技術分享

反向代理負載均衡原理

前面我們提到利用反向代理緩存資源,以改善網站的性能。實際上,在部署位置上,反向代理服務器處於Web服務器前面(這樣才可能緩存Web響應,加速訪問),這個位置正好是負載均衡服務器的位置,所以大多數反向代理服務器同時提供負載均衡的功能,管理一組Web服務器,將請求根據負載均衡算法轉發到不同的Web服務器上。Web服務器處理完成的響應也需要通過反向代理服務器返回給用戶。由於Web服務器不直接對外提供訪問,因此Web服務器不需要使用外部 IP地址,而反向代理服務器則需要配置雙網卡和內部外部兩套IP地址。

上圖中,瀏覽器訪問清酒的地址是反省代理服務器的地址114.100.80.10,反向代理服務器收到請求後,根據負載均衡算法計算得到一臺真實物理服務器的地址10.0.0.3,並將請求轉發給服務器。10.0.0.3處理完請求後將響應返回給反向代理服務器,反向代理服務器再將該響應返回給用戶。

優點:和反向代理服務器功能集成在一起,部署簡單

缺點:反向代理服務器是所有請求和響應的中轉站,其性能可能會成為瓶頸

4、IP負載均衡

在網絡層通過修改請求目標地址進行負載均衡,如下圖所示:

技術分享

IP負載均衡原理

真實物理Web服務器響應數據包返回給 負載均衡服務器方案:

1:負載均衡服務器在修改目的的IP地址的同時修改源地址,將數據源地址設為自身IP,即源地址轉換(SNAT),這樣Web服務器的響應會再回到負載均衡服務器

2:將負載均衡服務器同時作為物理服務器集群的網關服務器,這樣所有響應數據都會到達負載均衡服務器

IP負載均衡在內核進程完成數據分發,較反向代理 負載均衡(在應用程序中分發數據)有更好的處理能力。但是由於所有請求響應都需要經過負載均衡服務器,集群的最大響應數據吞吐量不得不受制於負載均衡服務器 網卡帶寬。對於提供下載服務或者視頻服務等需要傳輸大量 數據的網站而言,難以滿足需求。

5、數據鏈路層負載均衡

顧名思義,數據鏈路層負載均衡是指在通信協議的數據 鏈路層修改mac地址進行負載均衡,如下圖所示:

技術分享

6、負載均衡算法

負載均衡服務器的實現可以分為兩個部分:

1:根據負載均衡算法和Web服務器列表計算得到集群中一臺Web服務器的地址

2:將請求數據發送到該地址對應的Web服務器

前面描述了如何將請求數據發送到Web服務器,二具體的負載均衡算法通常有以下幾種

輪詢(Round Robin,RR)

所有請求被一次分發到每臺應用服務器上,即每臺服務器需要處理的請求數目都相同,適合於素有服務器硬件都相同的場景。

加權輪詢(Weighted Round Robin,WRR)

根據應用服務器硬件性能的 情況,在 輪詢的基礎上,按照配置的權重將請求分發到每個服務器,高性能的服務器能分配更多請求。

隨機(Random)

請求被隨機分配到各個應用服務器,在 許多場合下,這種方案都很簡單實用,因為好的隨機數本身就很均衡。即使應用服務器硬件配置不同,也可以使用加權隨機算法。

最少連接(Least Connections)

記錄每個應用服務器正在處理額連接數(請求數),將新到的請求分發到最少連接的服務器上,應該說,這是最符合負載均衡定義的算法。同樣,最少連接算法也可以實現加權最少連接。

源地址散列(Source hashing)

根據請求來源的IP地址進行Hash計算,得到應用服務器,這樣來自同一個IP地址的請求總在同一個服務器上處理,該請求的上下文信息可以存儲在這臺服務器上,在一個會話周期內重復使用,從而實現會話黏滯。

負載均衡的基礎技術種類