網路負載平衡

網路負載平衡

網路負載平衡技術保證即使是在負載很重的情況下它們也能作出快速響應。網路負載平衡對外只須提供一個IP地址(或域名)。如果網路負載平衡中的一台或幾台伺服器不可用時,服務不會中斷。

基本介紹


網路負載平衡允許你將傳入的請求傳播到最多達32台的伺服器上,即可以使用最多
32台伺服器共同分擔對外的網路請求服務。

主要應用


網路負載平衡自動檢測到伺服器不可用時,能夠迅速在剩餘的伺服器中重新指派客戶機通訊。此保護措施能夠幫助你為關鍵的業務程序提供不中斷的服務。可以根據網路訪問量的增多來增加網路負載平衡伺服器的數量。網路負載平衡可在普通的計算機上實現。在Windows Server 2003中,網路負載平衡的應用程序包括Internet信息服務(IIS)、ISA Server 2000防火牆與代理伺服器、VPN虛擬專用網、終端伺服器、Windows Media Services(Windows視頻點播、視頻廣播)等服務。同時,網路負載平衡有助於改善你的伺服器性能和可伸縮性,以滿足不斷增長的基於Internet客戶端的需求。
網路負載平衡可以讓客戶端用一個邏輯Internet名稱和虛擬IP地址(又稱群集IP地址)訪問群集,同時保留每台計算機各自的名稱。
正因為如此,網路負載均衡技術在最近得到了非常迅猛的發展。在接下來的文章內,編者就將向大家簡要介紹一下網路負載均衡的工作原理以及三種常見的工作方式。

歷史發展


網路負載均衡技術的誕生與網際網路的高速發展有很大的關係。
隨著網際網路用戶的急劇增長,獲取信息的速度快慢已經成為制約網際網路發展的重要因素。尤其隨著電子商務的迅速發展,企業的信息中心已經從側重計算與數據處理的計算中心和側重網路與數據通訊的網路中心發展成為一個將計算中心與網路中心功能平衡優化的集成一體的數據中心。作為企業電子商務網路的基礎核心,數據中心將彙集高性能計算、數據通訊、語音通訊等處理功能於一體,成為支持企業未來電子商務系統應用的必然平台。
但是,作為企業網的心臟,數據中心面臨著眾多的挑戰。擴展性、靈活性、高性能、可靠性、高密度和安全性無一不是數據中心不可或缺的要求,尤其是在數據流急劇增長的時候還要進行持續穩定的運行。很難想象用戶會在屢次遇到“Server Too Busy”后還能再次訪問這個網站;更難以想象正在進行信用卡支付時遇到掉線會有多麼嚴重的後果。那麼,如何解決這個瓶頸問題呢?如何才能切實提高網路的服務質量呢?
負載均衡技術
網際網路的快速增長已經使網路伺服器面對的訪問數量大大增加並且更加不可預知。如今,伺服器必須具備提供大量併發訪問服務的能力,其處理能力和I/O能力已經成為提供服務的瓶頸。如果客戶的增多導致通信量超出了伺服器能承受的範圍,那麼其結果必然是――宕機。
顯然,單台伺服器有限的性能不可能解決這個問題,一台普通伺服器的處理能力只能達到每秒幾萬個到幾十萬個請求,無法在一秒鐘內處理上百萬個甚至更多的請求。但若能將10台這樣的伺服器組成一個系統,並通過軟體技術將所有請求平均分配給所有伺服器,那麼這個系統就完全擁有每秒鐘處理幾百萬個甚至更多請求的能力。這就是負載均衡最初的基本設計思想。
這種負載均衡的基本設計思想只能算是負載均衡技術的最初應用。現代負載均衡技術除了可以做到合理、平均、實時地均衡系統負載外,還能夠確保系統正常運行的高可用性和高可靠性。負載均衡服務能夠平衡伺服器群中所有的伺服器和應用之間的通信負載,根據實時響應時間進行判斷,將任務交由負載最輕的伺服器來處理,以實現真正的智能通信管理和最佳的伺服器群性能。
如圖一所示,假設每個伺服器能響應的請求為每秒10萬個。如果不採用負載均衡,那麼該系統就只能達到每秒10萬個的響應,即使採用三台伺服器,也有可能在不到每秒30萬個響應的時候就會出現某台伺服器由於訪問量過大而宕機;如果某台伺服器出現故障,則可能導致數萬個請求不能得到正確的響應。但如果採用負載均衡,不僅當伺服器出現故障時可以自動將指向該伺服器上的響應分擔到其他伺服器,還可以在數據量不太大時也將任務分配到各個伺服器中,避免出現有些伺服器數據量很小而有的已因數據量接近極限導致性能急劇下降的現象。如果數據量超出了伺服器的響應能力,只需增加伺服器數目就可以平滑升級。也就是說,負載均衡技術不僅可以維持網路系統中負載的均衡分配,還能夠維護網路系統的高可用性運行,因而是保證網路系統高性能的重要技術。
現代負載均衡技術通常操作於網路的第四層或第七層。負載均衡器可以根據實際的響應時間制定優先順序交付決策,從而實現高性能、智能化流量管理,達到最佳的伺服器群性能。採用第七層應用控制還可以減少通信高峰期的錯誤訊息,因為差錯控制和流量管理技術可以偵測到一些錯誤信息並透明地將會話重定向到另一個伺服器,使用戶順利地進行使用。例如,圖一中伺服器A不可用或者資料庫出現錯誤,錯誤信息將會返回到負載均衡器上,然後會將客戶的訪問指向伺服器B或者將消息重放到其他資料庫中去,整個過程對用戶是透明的。
由於採用了負載均衡技術,自動故障恢復得以實現,服務的時間可以延長,24×7可靠性和持續運行成為可能。另外,負載均衡器一般也支持路徑外返回模式,即繞過流量分配器,為那些焦急等待大量數據文件請求響應的客戶提供更快的響應時間。
在最新的負載均衡產品中,智能化越來越明顯。一些智能化的負載均衡器能夠偵測到像資料庫錯誤、伺服器不可用等信息,從而採取措施使會話恢復和重定向伺服器使電子商務能夠得以順利進行。多址負載均衡器可以對客戶發來的訪問請求進行解析,計算出最佳地址,然後將該地址返回客戶,使客戶自動連接到對其請求來說最佳的數據中心。
負載均衡,從結構上分為本地負載均衡和地域負載均衡(全局負載均衡),前一種是指對本地的伺服器集群做負載均衡,后一種是指對分別放置在不同的地理位置、在不同的網路及伺服器群集之間作負載均衡。
每個主機運行一個所需伺服器程序的獨立拷貝,諸如Web、FTP、Telnet或e-mail伺服器程序。對於某些服務(如運行在Web伺服器上的那些服務)而言,程序的一個拷貝運行在群集內所有的主機上,而網路負載均衡則將工作負載在這些主機間進行分配。對於其他服務(例如e-mail),只有一台主機處理工作負載,針對這些服務,網路負載均衡允許網路通訊量流到一個主機上,並在該主機發生故障時將通訊量移至其他主機。

詳細介紹


最早的負載均衡技術是通過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內容交換技術性能的重要問題。
但它依賴於特定協議,因此使用範圍有限。根據現有的這些負載均衡技術,並應用優化的均衡策略,來實現後端伺服器負載分擔的最優狀態。由於網路負載均衡技術的諸多優點,網路負載均衡的被廣泛應用一定是大勢所趨。隨後,編者還會介紹更多與網路負載均衡相關的文章,希望能對大家有所幫助。