Internet的規模每一百天就會增長一倍,客戶希望獲得7天24小時的不間斷可用性及較快的系統反應時間,而不愿屢次看到某個站點“Server Too Busy”及頻繁的系統故障。
網絡的各個核心部分隨著業務量的提高、訪問量和數據流量的快速增長,其處理能力和計算強度也相應增大,使得單一設備根本無法承擔。在此情況下,如果扔掉現有設備去做大量的硬件升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提升,這又將導致再一次硬件升級的高額成本投入,甚至性能再卓越的設備也不能滿足當前業務量的需求。于是,負載均衡機制應運而生。
負載均衡(Load Balance)建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。
負載均衡有兩方面的含義:首先,大量的并發訪問或數據流量分擔到多臺節點設備上分別處理,減少用戶等待響應的時間;其次,單個重負載的運算分擔到多臺節點設備上做并行處理,每個節點設備處理結束后,將結果匯總,返回給用戶,系統處理能力得到大幅度提高。
本文所要介紹的負載均衡技術主要是指在均衡服務器群中所有服務器和應用程序之間流量負載的應用,目前負載均衡技術大多數是用于提高諸如在Web服務器、FTP服務器和其它關鍵任務服務器上的Internet服務器程序的可用性和可伸縮性。
負載均衡技術分類
目前有許多不同的負載均衡技術用以滿足不同的應用需求,下面從負載均衡所采用的設備對象、應用的網絡層次(指OSI參考模型)及應用的地理結構等來分類。
軟/硬件負載均衡
軟件負載均衡解決方案是指在一臺或多臺服務器相應的操作系統上安裝一個或多個附加軟件來實現負載均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的優點是基于特定環境,配置簡單,使用靈活,成本低廉,可以滿足一般的負載均衡需求。
軟件解決方案缺點也較多,因為每臺服務器上安裝額外的軟件運行會消耗系統不定量的資源,越是功能強大的模塊,消耗得越多,所以當連接請求特別大的時候,軟件本身會成為服務器工作成敗的一個關鍵;軟件可擴展性并不是很好,受到操作系統的限制;由于操作系統本身的Bug,往往會引起安全問題。
硬件負載均衡解決方案是直接在服務器和外部網絡間安裝負載均衡設備,這種設備我們通常稱之為負載均衡器,由于專門的設備完成專門的任務,獨立于操作系統,整體性能得到大量提高,加上多樣化的負載均衡策略,智能化的流量管理,可達到最佳的負載均衡需求。
負載均衡器有多種多樣的形式,除了作為獨立意義上的負載均衡器外,有些負載均衡器集成在交換設備中,置于服務器與Internet鏈接之間,有些則以兩塊網絡適配器將這一功能集成到PC中,一塊連接到Internet上,一塊連接到后端服務器群的內部網絡上。
一般而言,硬件負載均衡在功能、性能上優于軟件方式,不過成本昂貴。
本地/全局負載均衡
負載均衡從其應用的地理結構上分為本地負載均衡(Local Load Balance)和全局負載均衡(Global Load Balance,也叫地域負載均衡),本地負載均衡是指對本地的服務器群做負載均衡,全局負載均衡是指對分別放置在不同的地理位置、有不同網絡結構的服務器群間作負載均衡。
本地負載均衡能有效地解決數據流量過大、網絡負荷過重的問題,并且不需花費昂貴開支購置性能卓越的服務器,充分利用現有設備,避免服務器單點故障造成數據流量的損失。其有靈活多樣的均衡策略把數據流量合理地分配給服務器群內的服務器共同負擔。即使是再給現有服務器擴充升級,也只是簡單地增加一個新的服務器到服務群中,而不需改變現有網絡結構、停止現有的服務。
全局負載均衡主要用于在一個多區域擁有自己服務器的站點,為了使全球用戶只以一個IP地址或域名就能訪問到離自己最近的服務器,從而獲得最快的訪問速度,也可用于子公司分散站點分布廣的大公司通過Intranet(企業內部互聯網)來達到資源統一合理分配的目的。
全局負載均衡有以下的特點:
實現地理位置無關性,能夠遠距離為用戶提供完全的透明服務。
除了能避免服務器、數據中心等的單點失效,也能避免由于ISP專線故障引起的單點失效。
解決網絡擁塞問題,提高服務器響應速度,服務就近提供,達到更好的訪問質量。
網絡層次上的負載均衡
針對網絡上負載過重的不同瓶頸所在,從網絡的不同層次入手,我們可以采用相應的負載均衡技術來解決現有問題。
隨著帶寬增加,數據流量不斷增大,網絡核心部分的數據接口將面臨瓶頸問題,原有的單一線路將很難滿足需求,而且線路的升級又過于昂貴甚至難以實現,這時就可以考慮采用鏈路聚合(Trunking)技術。
鏈路聚合技術(第二層負載均衡)將多條物理鏈路當作一條單一的聚合邏輯鏈路使用,網絡數據流量由聚合邏輯鏈路中所有物理鏈路共同承擔,由此在邏輯上增大了鏈路的容量,使其能滿足帶寬增加的需求。
現代負載均衡技術通常操作于網絡的第四層或第七層。第四層負載均衡將一個Internet上合法注冊的IP地址映射為多個內部服務器的IP地址,對每次TCP連接請求動態使用其中一個內部IP地址,達到負載均衡的目的。在第四層交換機中,此種均衡技術得到廣泛的應用,一個目標地址是服務器群VIP(虛擬IP,Virtual IP address)連接請求的數據包流經交換機,交換機根據源端和目的IP地址、TCP或UDP端口號和一定的負載均衡策略,在服務器IP和VIP間進行映射,選取服務器群中最好的服務器來處理連接請求。
第七層負載均衡控制應用層服務的內容,提供了一種對訪問流量的高層控制方式,適合對HTTP服務器群的應用。第七層負載均衡技術通過檢查流經的HTTP報頭,根據報頭內的信息來執行負載均衡任務。
第七層負載均衡優點表現在如下幾個方面:
通過對HTTP報頭的檢查,可以檢測出HTTP400、500和600系列的錯誤信息,因而能透明地將連接請求重新定向到另一臺服務器,避免應用層故障。
可根據流經的數據類型(如判斷數據包是圖像文件、壓縮文件或多媒體文件格式等),把數據流量引向相應內容的服務器來處理,增加系統性能。
能根據連接請求的類型,如是普通文本、圖象等靜態文檔請求,還是asp、cgi等的動態文檔請求,把相應的請求引向相應的服務器來處理,提高系統的性能及安全性。
第七層負載均衡受到其所支持的協議限制(一般只有HTTP),這樣就限制了它應用的廣泛性,并且檢查HTTP報頭會占用大量的系統資源,勢必會影響到系統的性能,在大量連接請求的情況下,負載均衡設備自身容易成為網絡整體性能的瓶頸。
負載均衡策略
在實際應用中,我們可能不想僅僅是把客戶端的服務請求平均地分配給內部服務器,而不管服務器是否宕機。而是想使Pentium III服務器比Pentium II能接受更多的服務請求,一臺處理服務請求較少的服務器能分配到更多的服務請求,出現故障的服務器將不再接受服務請求直至故障恢復等等。
選擇合適的負載均衡策略,使多個設備能很好的共同完成任務,消除或避免現有網絡負載分布不均、數據流量擁擠反應時間長的瓶頸。在各負載均衡方式中,針對不同的應用需求,在OSI參考模型的第二、三、四、七層的負載均衡都有相應的負載均衡策略。
負載均衡策略的優劣及其實現的難易程度有兩個關鍵因素:一、負載均衡算法,二、對網絡系統狀況的檢測方式和能力。
考慮到服務請求的不同類型、服務器的不同處理能力以及隨機選擇造成的負載分配不均勻等問題,為了更加合理的把負載分配給內部的多個服務器,就需要應用相應的能夠正確反映各個服務器處理能力及網絡狀態的負載均衡算法:
輪循均衡(Round Robin):每一次來自網絡的請求輪流分配給內部中的服務器,從1至N然后重新開始。此種均衡算法適合于服務器組中的所有服務器都有相同的軟硬件配置并且平均服務請求相對均衡的情況。
權重輪循均衡(Weighted Round Robin):根據服務器的不同處理能力,給每個服務器分配不同的權值,使其能夠接受相應權值數的服務請求。例如:服務器A的權值被設計成1,B的權值是3,C的權值是6,則服務器A、B、C將分別接受到10%、30%、60%的服務請求。此種均衡算法能確保高性能的服務器得到更多的使用率,避免低性能的服務器負載過重。
隨機均衡(Random):把來自網絡的請求隨機分配給內部中的多個服務器。
權重隨機均衡(Weighted Random):此種均衡算法類似于權重輪循算法,不過在處理請求分擔時是個隨機選擇的過程。
響應速度均衡(Response Time):負載均衡設備對內部各服務器發出一個探測請求(例如Ping),然后根據內部中各服務器對探測請求的最快響應時間來決定哪一臺服務器來響應客戶端的服務請求。此種均衡算法能較好的反映服務器的當前運行狀態,但這最快響應時間僅僅指的是負載均衡設備與服務器間的最快響應時間,而不是客戶端與服務器間的最快響應時間。
最少連接數均衡(Least Connection):客戶端的每一次請求服務在服務器停留的時間可能會有較大的差異,隨著工作時間加長,如果采用簡單的輪循或隨機均衡算法,每一臺服務器上的連接進程可能會產生極大的不同,并沒有達到真正的負載均衡。最少連接數均衡算法對內部中需負載的每一臺服務器都有一個數據記錄,記錄當前該服務器正在處理的連接數量,當有新的服務連接請求時,將把當前請求分配給連接數最少的服務器,使均衡更加符合實際情況,負載更加均衡。此種均衡算法適合長時處理的請求服務,如FTP。
處理能力均衡:此種均衡算法將把服務請求分配給內部中處理負荷(根據服務器CPU型號、CPU數量、內存大小及當前連接數等換算而成)最輕的服務器,由于考慮到了內部服務器的處理能力及當前網絡運行狀況,所以此種均衡算法相對來說更加精確,尤其適合運用到第七層(應用層)負載均衡的情況下。
DNS響應均衡(Flash DNS):在Internet上,無論是HTTP、FTP或是其它的服務請求,客戶端一般都是通過域名解析來找到服務器確切的IP地址的。在此均衡算法下,分處在不同地理位置的負載均衡設備收到同一個客戶端的域名解析請求,并在同一時間內把此域名解析成各自相對應服務器的IP地址(即與此負載均衡設備在同一位地理位置的服務器的IP地址)并返回給客戶端,則客戶端將以最先收到的域名解析IP地址來繼續請求服務,而忽略其它的IP地址響應。在種均衡策略適合應用在全局負載均衡的情況下,對本地負載均衡是沒有意義的。
盡管有多種的負載均衡算法可以較好的把數據流量分配給服務器去負載,但如果負載均衡策略沒有對網絡系統狀況的檢測方式和能力,一旦在某臺服務器或某段負載均衡設備與服務器網絡間出現故障的情況下,負載均衡設備依然把一部分數據流量引向那臺服務器,這勢必造成大量的服務請求被丟失,達不到不間斷可用性的要求。所以良好的負載均衡策略應有對網絡故障、服務器系統故障、應用服務故障的檢測方式和能力:
Ping偵測:通過ping的方式檢測服務器及網絡系統狀況,此種方式簡單快速,但只能大致檢測出網絡及服務器上的操作系統是否正常,對服務器上的應用服務檢測就無能為力了。
TCP Open偵測:每個服務都會開放某個通過TCP連接,檢測服務器上某個TCP端口(如Telnet的23口,HTTP的80口等)是否開放來判斷服務是否正常。
HTTP URL偵測:比如向HTTP服務器發出一個對main.html文件的訪問請求,如果收到錯誤信息,則認為服務器出現故障。
負載均衡策略的優劣除受上面所講的兩個因素影響外,在有些應用情況下,我們需要將來自同一客戶端的所有請求都分配給同一臺服務器去負擔,例如服務器將客戶端注冊、購物等服務請求信息保存的本地數據庫的情況下,把客戶端的子請求分配給同一臺服務器來處理就顯的至關重要了。有兩種方式可以解決此問題,一是根據IP地址把來自同一客戶端的多次請求分配給同一臺服務器處理,客戶端IP地址與服務器的對應信息是保存在負載均衡設備上的;二是在客戶端瀏覽器cookie內做獨一無二的標識來把多次請求分配給同一臺服務器處理,適合通過代理服務器上網的客戶端。
還有一種路徑外返回模式(Out of Path Return),當客戶端連接請求發送給負載均衡設備的時候,中心負載均衡設備將請求引向某個服務器,服務器的回應請求不再返回給中心負載均衡設備,即繞過流量分配器,直接返回給客戶端,因此中心負載均衡設備只負責接受并轉發請求,其網絡負擔就減少了很多,并且給客戶端提供了更快的響應時間。此種模式一般用于HTTP服務器群,在各服務器上要安裝一塊虛擬網絡適配器,并將其IP地址設為服務器群的VIP,這樣才能在服務器直接回應客戶端請求時順利的達成三次握手。
負載均衡實施要素
負載均衡方案應是在網站建設初期就應考慮的問題,不過有時隨著訪問流量的爆炸性增長,超出決策者的意料,這也就成為不得不面對的問題。當我們在引入某種負載均衡方案乃至具體實施時,像其他的許多方案一樣,首先是確定當前及將來的應用需求,然后在代價與收效之間做出權衡。
針對當前及將來的應用需求,分析網絡瓶頸的不同所在,我們就需要確立是采用哪一類的負載均衡技術,采用什么樣的均衡策略,在可用性、兼容性、安全性等等方面要滿足多大的需求,如此等等。
不管負載均衡方案是采用花費較少的軟件方式,還是購買代價高昂在性能功能上更強的第四層交換機、負載均衡器等硬件方式來實現,亦或其他種類不同的均衡技術,下面這幾項都是我們在引入均衡方案時可能要考慮的問題:
性能:性能是我們在引入均衡方案時需要重點考慮的問題,但也是一個最難把握的問題。衡量性能時可將每秒鐘通過網絡的數據包數目做為一個參數,另一個參數是均衡方案中服務器群所能處理的最大并發連接數目,但是,假設一個均衡系統能處理百萬計的并發連接數,可是卻只能以每秒2個包的速率轉發,這顯然是沒有任何作用的。 性能的優劣與負載均衡設備的處理能力、采用的均衡策略息息相關,并且有兩點需要注意:一、均衡方案對服務器群整體的性能,這是響應客戶端連接請求速度的關鍵;二、負載均衡設備自身的性能,避免有大量連接請求時自身性能不足而成為服務瓶頸。 有時我們也可以考慮采用混合型負載均衡策略來提升服務器群的總體性能,如DNS負載均衡與NAT負載均衡相結合。另外,針對有大量靜態文檔請求的站點,也可以考慮采用高速緩存技術,相對來說更節省費用,更能提高響應性能;對有大量ssl/xml內容傳輸的站點,更應考慮采用ssl/xml加速技術。
可擴展性:IT技術日新月異,一年以前最新的產品,現在或許已是網絡中性能最低的產品;業務量的急速上升,一年前的網絡,現在需要新一輪的擴展。合適的均衡解決方案應能滿足這些需求,能均衡不同操作系統和硬件平臺之間的負載,能均衡HTTP、郵件、新聞、代理、數據庫、防火墻和 Cache等不同服務器的負載,并且能以對客戶端完全透明的方式動態增加或刪除某些資源。
靈活性:均衡解決方案應能靈活地提供不同的應用需求,滿足應用需求的不斷變化。在不同的服務器群有不同的應用需求時,應有多樣的均衡策略提供更廣泛的選擇。
可靠性:在對服務質量要求較高的站點,負載均衡解決方案應能為服務器群提供完全的容錯性和高可用性。但在負載均衡設備自身出現故障時,應該有良好的冗余解決方案,提高可靠性。使用冗余時,處于同一個冗余單元的多個負載均衡設備必須具有有效的方式以便互相進行監控,保護系統盡可能地避免遭受到重大故障的損失。
易管理性:不管是通過軟件還是硬件方式的均衡解決方案,我們都希望它有靈活、直觀和安全的管理方式,這樣便于安裝、配置、維護和監控,提高工作效率,避免差錯。在硬件負載均衡設備上,目前主要有三種管理方式可供選擇:一、命令行接口(CLI:Command Line Interface),可通過超級終端連接負載均衡設備串行接口來管理,也能telnet遠程登錄管理,在初始化配置時,往往要用到前者;二、圖形用戶接口(GUI:Graphical User Interfaces),有基于普通web頁的管理,也有通過Java Applet 進行安全管理,一般都需要管理端安裝有某個版本的瀏覽器;三、SNMP(Simple Network Management Protocol,簡單網絡管理協議)支持,通過第三方網絡管理軟件對符合SNMP標準的設備進行管理。
負載均衡配置實例
DNS負載均衡
DNS負載均衡技術是在DNS服務器中為同一個主機名配置多個IP地址,在應答DNS查詢時,DNS服務器對每個查詢將以DNS文件中主機記錄的IP地址按順序返回不同的解析結果,將客戶端的訪問引導到不同的機器上去,使得不同的客戶端訪問不同的服務器,從而達到負載均衡的目的。
DNS負載均衡的優點是經濟簡單易行,并且服務器可以位于internet上任意的位置。但它也存在不少缺點:
為了使本DNS服務器和其他DNS服務器及時交互,保證DNS數據及時更新,使地址能隨機分配,一般都要將DNS的刷新時間設置的較小,但太小將會使DNS流量大增造成額外的網絡問題。
一旦某個服務器出現故障,即使及時修改了DNS設置,還是要等待足夠的時間(刷新時間)才能發揮作用,在此期間,保存了故障服務器地址的客戶計算機將不能正常訪問服務器。
DNS負載均衡采用的是簡單的輪循負載算法,不能區分服務器的差異,不能反映服務器的當前運行狀態,不能做到為性能較好的服務器多分配請求,甚至會出現客戶請求集中在某一臺服務器上的情況。
要給每臺服務器分配一個internet上的IP地址,這勢必會占用過多的IP地址。
判斷一個站點是否采用了DNS負載均衡的最簡單方式就是連續的ping這個域名,如果多次解析返回的IP地址不相同的話,那么這個站點就很可能采用的就是較為普遍的DNS負載均衡。但也不一定,因為如果采用的是DNS響應均衡,多次解析返回的IP地址也可能會不相同。不妨試試Ping一下www.yesky.com,www.sohu.com,www.yahoo.com
現假設有三臺服務器來應對www.test.com的請求。在采用BIND 8.x DNS服務器的unix系統上實現起來比較簡單,只需在該域的數據記錄中添加類似下面的結果:
www1 IN A 192.1.1.1
www2 IN A 192.1.1.2
www3 IN A 192.1.1.3
www IN CNAME www1
www IN CNAME www2
www IN CNAME www3
在NT下的實現也很簡單,下面詳細介紹在win2000 server下實現DNS負載均衡的過程,NT4.0類似:
打開“管理工具”下的“DNS”,進入DNS服務配置控制臺。
打開相應DNS 服務器的“屬性”,在“高級”選項卡的“服務器選項”中,選中“啟用循環”復選框。此步相當于在注冊表記錄HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters中添加一個雙字節制值(dword值)RoundRobin,值為1。
打開正向搜索區域的相應區域(如test.com),新建主機添加主機 (A) 資源記錄,記錄如下:
www IN A 192.1.1.1
www IN A 192.1.1.2
www IN A 192.1.1.3
在這里可以看到的區別是在NT下一個主機名對應多個IP地址記錄,但在unix下,是先添加多個不同的主機名分別對應個自的IP地址,然后再把這些主機賦同一個別名(CNAME)來實現的。
在此需要注意的是,NT下本地子網優先級會取代多宿主名稱的循環復用,所以在測試時,如果做測試用的客戶機IP地址與主機資源記錄的IP在同一有類掩碼范圍內,就需要清除在“高級”選項卡“服務器選項”中的“啟用netmask排序”。
NAT負載均衡
NAT(Network Address Translation 網絡地址轉換)簡單地說就是將一個IP地址轉換為另一個IP地址,一般用于未經注冊的內部地址與合法的、已獲注冊的Internet IP地址間進行轉換。適用于解決Internet IP地址緊張、不想讓網絡外部知道內部網絡結構等的場合下。每次NAT轉換勢必會增加NAT設備的開銷,但這種額外的開銷對于大多數網絡來說都是微不足道的,除非在高帶寬有大量NAT請求的網絡上。
NAT負載均衡將一個外部IP地址映射為多個內部IP地址,對每次連接請求動態地轉換為一個內部服務器的地址,將外部連接請求引到轉換得到地址的那個服務器上,從而達到負載均衡的目的。
NAT負載均衡是一種比較完善的負載均衡技術,起著NAT負載均衡功能的設備一般處于內部服務器到外部網間的網關位置,如路由器、防火墻、四層交換機、專用負載均衡器等,均衡算法也較靈活,如隨機選擇、最少連接數及響應時間等來分配負載。
NAT負載均衡可以通過軟硬件方式來實現。通過軟件方式來實現NAT負載均衡的設備往往受到帶寬及系統本身處理能力的限制,由于NAT比較接近網絡的低層,因此就可以將它集成在硬件設備中,通常這樣的硬件設備是第四層交換機和專用負載均衡器,第四層交換機的一項重要功能就是NAT負載均衡。
下面以實例介紹一下Cisco路由器NAT負載均衡的配置:
現有一臺有一個串行接口和一個Ethernet接口的路由器,Ethernet口連接到內部網絡,內部網絡上有三臺web服務器,但都只是低端配置,為了處理好來自Internet上大量的web連接請求,因此需要在此路由器上做NAT負載均衡配置,把發送到web服務器合法Internet IP地址的報文轉換成這三臺服務器的內部本地地址。 其具體配置過程如下:
做好路由器的基本配置,并定義各個接口在做NAT時是內部還是外部接口。
然后定義一個標準訪問列表(standard access list),用來標識要轉換的合法IP地址。
再定義NAT地址池來標識內部web服務器的本地地址,注意要用到關鍵字rotary,表明我們要使用輪循(Round Robin)的方式從NAT地址池中取出相應IP地址來轉換合法IP報文。
最后,把目標地址為訪問表中IP的報文轉換成地址池中定義的IP地址。
相應配置文件如下:
interface Ethernet0/0
ip address 192.168.1.4 255.255.255.248
ip nat inside
!
interface Serial0/0
ip address 200.200.1.1 255.255.255.248
ip nat outside
!
ip access-list 1 permit 200.200.1.2
!
ip nat pool websrv 192.168.1.1 192.168.1.3 netmask 255.255.255.248 type rotary
ip nat inside destination list 1 pool websrv

反向代理負載均衡
普通代理方式是代理內部網絡用戶訪問internet上服務器的連接請求,客戶端必須指定代理服務器,并將本來要直接發送到internet上服務器的連接請求發送給代理服務器處理。
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。
反向代理負載均衡技術是把將來自internet上的連接請求以反向代理的方式動態地轉發給內部網絡上的多臺服務器進行處理,從而達到負載均衡的目的。
反向代理負載均衡能以軟件方式來實現,如apache mod_proxy、netscape proxy等,也可以在高速緩存器、負載均衡器等硬件設備上實現。 反向代理負載均衡可以將優化的負載均衡策略和代理服務器的高速緩存技術結合在一起,提升靜態網頁的訪問速度,提供有益的性能;由于網絡外部用戶不能直接訪問真實的服務器,具備額外的安全性(同理,NAT負載均衡技術也有此優點)。
其缺點主要表現在以下兩個方面:
反向代理是處于OSI參考模型第七層應用的,所以就必須為每一種應用服務專門開發一個反向代理服務器,這樣就限制了反向代理負載均衡技術的應用范圍,現在一般都用于對web服務器的負載均衡。
針對每一次代理,代理服務器就必須打開兩個連接,一個對外,一個對內,因此在并發連接請求數量非常大的時候,代理服務器的負載也就非常大了,在最后代理服務器本身會成為服務的瓶頸。
一般來講,可以用它來對連接數量不是特別大,但每次連接都需要消耗大量處理資源的站點進行負載均衡,如search。
下面以在apache mod_proxy下做的反向代理負載均衡為配置實例:在站點www.test.com,我們按提供的內容進行分類,不同的服務器用于提供不同的內容服務,將對http://www.test.com/news的訪問轉到IP地址為192.168.1.1的內部服務器上處理,對http://www.test.com/it的訪問轉到服務器192.168.1.2上,對http://www.test.com/life的訪問轉到服務器192.168.1.3上,對http://www.test.com/love的訪問轉到合作站點http://www.love.com上,從而減輕本apache服務器的負擔,達到負載均衡的目的。
首先要確定域名www.test.com在DNS上的記錄對應apache服務器接口上具有internet合法注冊的IP地址,這樣才能使internet上對www.test.com的所有連接請求發送給本臺apache服務器。
在本臺服務器的apache配置文件httpd.conf中添加如下設置:
proxypass /news http://192.168.1.1
proxypass /it http://192.168.1.2
proxypass /life http://192.168.1.3
proxypass /love http://www.love.com
注意,此項設置最好添加在httpd.conf文件“Section 2”以后的位置,服務器192.168.1.1-3也應是具有相應功能的www服務器,在重啟服務時,最好用apachectl configtest命令檢查一下配置是否有誤.
混合型負載均衡
在有些大型網絡,由于多個服務器群內硬件設備、各自的規模、提供的服務等的差異,我們可以考慮給每個服務器群采用最合適的負載均衡方式,然后又在這多個服務器群間再一次負載均衡或群集起來以一個整體向外界提供服務(即把這多個服務器群當做一個新的服務器群),從而達到最佳的性能。我們將這種方式稱之為混合型負載均衡。此種方式有時也用于單臺均衡設備的性能不能滿足大量連接請求的情況下。
下圖展示了一個應用示例,三個服務器群針對各自的特點,分別采用了不同的負載均衡方式。當客戶端發出域名解析請求時,DNS服務器依次把它解析成三個服務器群的VIP,如此把客戶端的連接請求分別引向三個服務器群,從而達到了再一次負載均衡的目的。
在圖中大家可能注意到,負載均衡設備在網絡拓樸上,可以處于外部網和內部網絡間網關的位置,也可以和內部服務器群處于并行的位置,甚至可以處于內部網絡或internet上的任意位置,特別是在采用群集負載均衡時,根本就沒有單獨的負載均衡設備。
服務器群內各服務器只有提供相同內容的服務才有負載均衡的意義,特別是在DNS負載均衡時。要不然,這樣會造成大量連接請求的丟失或由于多次返回內容的不同給客戶造成混亂。
所以,如圖的這個示例在實際中可能沒有多大的意義,因為如此大的服務內容相同但各服務器群存在大量差異的網站并不多見。 但做為一個示例,相信還是很有參考意義的.