負載均衡技術介紹

tonywi888發表於2007-03-28
由於網路的資料流量多集中在中心伺服器一端,所以現在所說的負載均衡,多指的是對訪問伺服器的負載進行均衡(或者說分擔)措施。負載均衡,從結構上分為本地負載均衡和地域負載均衡(全域性負載均衡),前一種是指對本地的伺服器叢集做負載均衡,後一種是指對分別放置在不同的地理位置、在不同的網路及伺服器群集之間作負載均衡。

   每個主機執行一個所需伺服器程式的獨立複製,諸如Web、FTP、Telnet或e-mail伺服器程式。對於某些服務(如執行在Web伺服器上的那些服務)而言,程式的一個複製執行在群集內所有的主機上,而網路負載均衡則將工作負載在這些主機間進行分配。對於其他服務(例如e-mail),只有一臺主機處理工作負載,針對這些服務,網路負載均衡允許網路通訊量流到一個主機上,並在該主機發生故障時將通訊量移至其他主機。

   ■DNS

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

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

   儘管存在多種問題,但它還是一種非常有效的做法,包括Yahoo在內的很多大型網站都使用DNS。

   ■代理伺服器

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

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

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

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

   ■地址轉換閘道器

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

   當前區域網交換機所謂的第四層交換技術,就是按照IP地址和TCP埠進行虛擬連線的交換,直接將資料包傳送到目的計算機的相應埠。透過交換機就能將來自外部的初始連線請求,分別與內部的多個地址相聯絡,此後就芏哉廡┮丫??⒌男檳飭?詠?薪換弧R虼耍?恍┚弒傅謁牟憬換荒芰Φ木鐘蟯?換換??湍蘢魑?桓鯰布?涸鼐?餛鰨?瓿煞?衿韉母涸鼐?狻?

   由於第四層交換基於硬體晶片,因此其效能非常優秀,尤其是對於網路傳輸速度和交換速度遠遠超過普通的資料包轉發。然而,正因為它是使用硬體實現的,因此也不夠靈活,僅僅能夠處理幾種最標準的應用協議的負載均衡,如HTTP 。當前負載均衡主要用於解決伺服器的處理能力不足的問題,因此並不能充分發揮交換機帶來的高網路頻寬的優點。

   ■協議內部支援

   除了這三種負載均衡方式之外,有的協議內部支援與負載均衡相關的功能,例如HTTP協議中的重定向能力等,HTTP執行於TCP連線的最高層。客戶端透過埠號80的TCP服務直接連線到伺服器,然後透過TCP連線向伺服器端傳送一個HTTP請求。在伺服器分清客戶端所需的網頁和資源之前,至少要進行四次TCP的資料包交換請求。由於負載平衡裝置要把進入的請求分配給多個伺服器,因此,它只能在TCP連線時建立,且HTTP請求透過後才能確定如何進行負載的平衡。當一個網站的點選率達到每秒上百甚至上千次時,TCP連線、HTTP報頭資訊以及程式的時延已經變得很重要了。在HTTP請求和報頭中有很多對負載平衡有用的資訊。首先,也是最重要的一點是,我們可以從這些資訊中獲知客戶端所請求的URL和網頁,利用這個資訊,負載平衡裝置就可以將所有的影像請求引導到一個影像伺服器,或者根據URL的資料庫查詢內容呼叫CGI程式,將請求引導到一個專用的高效能資料庫伺服器。惟一能侷限這些資訊獲取的因素是負載平衡裝置本身的靈活程度。事實上,如果網路管理員熟悉Web內容交換技術,他可以僅僅根據HTTP報頭的cookie欄位來使用Web內容交換技術改善對特定客戶的服務,如果能從HTTP請求中找到一些規律,還可以充分利用它作出各種決策。除了TCP連線表的問題外,如何查詢合適的HTTP報頭資訊以及作出負載平衡決策的過程,是影響Web內容交換技術效能的重要問題。

   但它依賴於特定協議,因此使用範圍有限。根據現有的這些負載均衡技術,並應用最佳化的均衡策略,來實現後端伺服器負載分擔的最優狀態。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-907315/,如需轉載,請註明出處,否則將追究法律責任。

相關文章