由于網絡的數據流量多集中在中心服務器一端,所以現在所說的負載均衡,多指的是對訪問服務器的負載進行均衡(或者說分擔)措施。負載均衡,從結構上分為本地負載均衡和地域負載均衡(全局負載均衡),前一種是指對本地的服務器集群做負載均衡,后一種是指對分別放置在不同的地理位置、在不同的網絡及服務器群集之間作負載均衡。
每個主機運行一個所需服務器程序的獨立拷貝,諸如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端口進行虛擬連接的交換,直接將數據包發送到目的計算機的相應端口。通過交換機就能將來自外部的初始連接請求,分別與內部的多個地址相聯系,此后就能對這些已經建立的虛擬連接進行交換。因此,一些具備第四層交換能力的局域網交換機,就能作為一個硬件負載均衡器,完成服務器的負載均衡。
由于第四層交換基于硬件芯片,因此其性能非常優秀,尤其是對于網絡傳輸速度和交換速度遠遠超過普通的數據包轉發。然而,正因為它是使用硬件實現的,因此也不夠靈活,僅僅能夠處理幾種最標準的應用協議的負載均衡,如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內容交換技術性能的重要問題。
但它依賴于特定協議,因此使用范圍有限。根據現有的這些負載均衡技術,并應用優化的均衡策略,來實現后端服務器負載分擔的最優狀態。
相關解決方案
RadWare全面負載均衡方案
RadWare公司是一家提供Internet流量管理解決方案的供應商,提供完整的IP負載均衡解決方案。
高可用性、兼容性、安全性以及對帶寬的管理,是RadWare公司的ITM負載均衡方案和普通的、具備負載均衡功能的第四層交換的主要區別。具體比較而言,ITM方案可以深入地了解和監控服務器;作為一個開放的結構,擁有較好的兼容性,可以和業界所有的產品兼容;在帶寬管理方面,ITM方案能根據訪問優先級和策略的要求,讓特定用戶訪問特定的網站和信息。ITM方案能優化資源的利用,提供更好、更多的算法,以求在服務器之間達到最好的負載均衡。更為重要的是,作為因特網流量管理的產品,它能方便地部署到網絡中,而對于提供負載均衡的第四層交換,在部署時會改變原有的網絡結構。
目前,RadWare提供的全套ITM解決方案,包括如下四大方面產品:服務器群的負載均衡、高速緩存服務器的負載平衡、防火墻的負載均衡以及鏈路的負載均衡。在服務器群的負載均衡和管理方面,主要提供Web Server Director,它可以監視所有的用戶請求,并在可用的服務器群之間進行智能化的負荷分配,從而可以提供容錯、冗余、優化和可擴展性能。在高速緩存服務器的管理方面,RadWare提供了Cache Server Director,它可以提供優化的Internet訪問和存儲資源使用率,同時,也使整個服務器群的性能得以最大程度的發揮。防火墻的負載均衡也許是一個廠家比較少涉及的領域,RadWare提供的FireProof是一種動態負載平衡系統,可有效地管理多個防火墻和其他安全設備上的流量。它使用的算法能夠監視客戶的數量和每個防火墻上的負載,并在各單元之間動態地平均分配流量,同時還可兼顧呼入和呼出的流量。針對目前越來越多的公司采用多條鏈路來保持“永遠在線”,RadWare還推出了LinkProof,它是一種全面的、易于使用的內容交通管理解決方案,適用于具有多個鏈接的網絡。


