WEB集羣與負載均衡

忘記了出處。

一、基本概念 

負載均衡的作用是在多個節點之間按照一定的策略(算法)分發網絡或計算處理負載。負載均衡可以採用軟件和硬件來實現。一般的框架結構可以參考下圖。

   

後臺的多個Web節點上面有相同的Web應用,用戶的訪問請求首先進入負載均衡分配節點(可能是軟件或者硬件),由它根據負載均衡策略(算法)合理地分配給 某個Web應用節點。每個Web節點相同的內容做起來不難,所以選擇負載均衡策略(算法)是個關鍵問題。下面會專門介紹均衡算法。

web負載均衡的作用就是把請求均勻的分配給各個節點,它是一種動態均衡,通過一些工具實時地分析數據包,掌握網絡中的數據流量狀況,把請求理分配出去。對於不同的應用環境(如電子商務網站,它的計算負荷大;再如網絡數據庫應用,讀寫頻繁,服務器的存儲子系統系統面臨很大壓力;再如視頻服務應用,數據傳輸量大,網絡接口負擔重壓。),使用的均衡策略 (算法)是不同的。 所以均衡策略(算法)也就有了多種多樣的形式,廣義上的負載均衡既可以設置專門的網關、負載均衡器,也可以通過一些專用軟件與協議來實現。在OSI七層協 議模型中的第二(數據鏈路層)、第三(網絡層)、第四(傳輸層)、第七層(應用層)都有相應的負載均衡策略(算法),在數據鏈路層上實現負載均衡的原理是根據數據包的目的MAC地址選擇不同的路徑;在網絡層上可利用基於IP地址的分配方式將數據流疏通到多個節點;而傳輸層和應用層的交換(Switch), 本身便是一種基於訪問流量的控制方式,能夠實現負載均衡。

二、算法

目前,基於負載均衡的算法主要有三種:輪循(Round-Robin)、最小連接數(Least Connections First),和快速響應優先(FasterResponse Precedence)。

Ø  輪循算法,就是將來自網絡的請求依次分配給集羣中的節點進行處理。

Ø  最小連接數算法,就是爲集羣中的每臺服務器設置一個記數器,記錄每個服務器當前的連接數,負載均衡系統總是選擇當前連接數最少的服務器分配任務。 這要比"輪循算法"好很多,因爲在有些場合中,簡單的輪循不能判斷哪個節點的負載更低。

Ø  快速響應優先算法,是根據羣集中的節點的狀態(CPU、內存等主要處理部分)來分配任務。 這一點很難做到,事實上到目前爲止,採用這個算法的負載均衡系統還很少。尤其對於硬件負載均衡設備來說,只能在TCP/IP協議方面做工作,幾乎不可能深入到服務器的處理系統中進行監測。但是它是未來發展的方向。

三、使用方式

上面是負載均衡常用的算法,基於以上負載均衡算法的使用方式上,又分爲如下幾種:

3.1 DNS輪詢

最早的負載均衡技術是通過DNS來實現的,在DNS中爲多個地址配置同一個名字,因而查詢這個名字的客戶機將得到其中一個地址,從而使得不同的客戶訪問不同的服務器,達到負載均衡的目的。 

DNS負載均衡是一種簡單而有效的方法,但是它不能區分服務器的差異,也不能反映服務器的當前運行狀態。當使用DNS負載均衡的時候,必須儘量保證不同的客戶計算機能均勻獲得不同的地址。由於DNS數據具備刷新時間標誌,一旦超過這個時間限制,其他DNS服務器就需要和這個服務器交互,以重新獲得地址數據,就有可能獲得不同IP地址。因此爲了使地址能隨機分配,就應使刷新時間儘量短,不同地方的DNS服務器能更新對應的地址,達到隨機獲得地址,然而將過期時間設置得過短,將使DNS流量大增,而造成額外的網絡問題。DNS負載均衡的另一個問題是,一旦某個服務器出現故障,即使及時修改了DNS設置,還是要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客戶計算機將不能正常訪問服務器。

3.2 反向代理服務器

使用代理服務器,可以將請求轉發給內部的服務器,使用這種加速模式顯然可以提升靜態網頁的訪問速度。然而,也可以考慮這樣一種技術,使用代理服務器將請求均勻轉發給多臺服務器,從而達到負載均衡的目的。 

這種代理方式與普通的代理方式有所不同,標準代理方式是客戶使用代理訪問多個外部服務器,而這種代理方式是代理多個客戶訪問內部服務器,因此也被稱爲反向代理模式。雖然實現這個任務並不算是特別複雜,然而由於要求特別高的效率,實現起來並不簡單。

使用反向代理的好處是,可以將負載均衡和代理服務器的高速緩存技術結合在一起,提供有益的性能。然而它本身也存在一些問題,首先就是必須爲每一種服務都專門開發一個反向代理服務器,這就不是一個輕鬆的任務。 

代理服務器本身雖然可以達到很高效率,但是針對每一次代理,代理服務器就必須維護兩個連接,一個對外的連接,一個對內的連接,因此對於特別高的連接請求, 代理服務器的負載也就非常之大。反向代理方式下能應用優化的負載均衡策略,每次訪問最空閒的內部服務器來提供服務。但是隨着併發連接數量的增加,代理服務器本身的負載也變得非常大,最後反向代理服務器本身會成爲服務的瓶頸。 

3.3 地址轉換網關

支持負載均衡的地址轉換網關,可以將一個外部IP地址映射爲多個內部IP地址,對每次TCP連接請求動態使用其中一個內部地址,達到負載均衡的目的。很多硬件廠商將這種技術集成在他們的交換機中,作爲他們第四層交換的一種功能來實現,一般採用隨機選擇、根據服務器的連接數量或者響應時間進行選擇的負載均衡策略來分配負載。由於地址轉換相對來講比較接近網絡的低層,因此就有可能將它集成在硬件設備中,通常這樣的硬件設備是局域網交換機。

 

發佈了59 篇原創文章 · 獲贊 8 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章