歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

服務器負載如何分擔?

作者: eWEEK
日期: 2002年01月22日

服務器負載分擔(SLB)設備的功能越來越高級,有越來越多的產品通過解釋URL等HTTP頭中的應用種類信息來分流數據
。SLB設備既可以應用於面向執行交易處理的手機站點,也可以按客戶端種類將通信分流到特定服務器。支持防火牆設備、VPN設備和入侵檢測系統(IDS,Intrusion Detection System)的負載分擔設備相繼出台。

負載分擔的主要用法

負載分擔的目的不同,對產品所要求的功能也不同。負載分擔設備有以下幾種主要用法:(1)將來自用戶的接入請求分散給多個服務器,要求這種產品有SLB功能和3/4層交換功能;(2)將通信流量分散給多台防火牆設備、入侵檢測系統和VPN設備;(3)將來自用戶的接入請求分散給Internet上不同站點的服務器,要求這種產品有站點間的負載分擔功能;(4)將交易處理分散給適當的服務器,要求這種產品有支持應用層的負載分擔功能。其中,需求量最大的是(1)。

精確識別HTTP頭

支持應用層的SLB設備,具有識別應用種類信息並據此分配通信流量的功能。在EC站點,對於交易類處理過程,有時同一客戶端與服務器之間要有多次反復的數據交換;在這種情況下,需要有管理會話、將來自同一用戶的通信量分配給同一個服務器的能力。

作為負載分配條件,可以利用下述4種信息:(1)URL;(2)Cookie ;(3)SSL會話ID;(4)源IP地址和端口號。其中(1)、(2)是包含在HTTP頭中的信息,這是只有支持應用層才會有的功能。過去的SLB產品中也支持(2)~(4),最近,也開始向支持(1)的方向發展。支持應用層的所有SLB設備,都已經或計劃不久要支持(1)。

支持服務器ID

在執行交易處理的接收手機接入請求的站點中,為了有效進行負載分擔,有越來越多可以利用服務器ID的產品問世。這種產品通過識別存儲在URL中的服務器ID,將通信量分配給適當的服務器。支持應用層的產品,基本上都有這個功能。若將來自特定用戶的接入請求分配給同一個服務器,可以使系統既容易構築,也不易形成瓶頸。因此,要利用各種信息來實現會話管理,將會話ID存儲到由服務器返給用戶的URL參量和Cookie中,或利用SSL會話ID對會話進行管理。SLB設備參照會話管理信息,將交易處理的通信量分配給適當的服務器。

在接收手機上網的站點中,多數采用將會話ID存儲到URL的方法。現在的浏覽器電話基本上都支持Cookie和SSL,過去的SLB設備,不能參照存儲到URL的信息來決定分配對象,而最近的產品基本上都做到了這點。但是,如果利用URL和Cookie等HTTP頭信息來管理會話,要大量消耗SLB設備CPU的處理能力。隨著同時進行會話數目的增加,要檢測的會話ID也增多,CPU的負荷越來越重。於是,存儲在URL中的 服務器ID應運而生,在服務器端與會話ID一起,作為用於識別服務器的ID發布,附加在URL中返給用戶。此後,SLB設備按服務器ID來分配通信量即可。而且,即使同時的會話數增加,對SLB設備的影響也不大。

按不同終端來切換服務器

通過識別URL等HTTP頭來分配通信量的功能,除用於會話管理外,還可用於其它用途,如按客戶端種類和所要求的處理來分配通信量。用HTTP頭的“User-Agent”項,判斷浏覽器類型(客戶機類型), 可以將通信傳送給保有相應客戶機內容的服務器。如果希望由不同服務器分別提供面向手機的內容和面向PC的內容,這是個非常方便的功能。此外,還可將對HTML文件和圖像文件等靜態數據的請求傳送給緩存服務器;將對CGI和JSP等動態數據的請求傳送給應用服務器。

均等分配服務器負載

哪個產品都能用Ping來確認服務器的響應速度,用TCP/UDP端口來確定 不同“應用”類型的狀態
。但僅靠這樣的功能,實際上還無法弄清楚分配目標服務器是否是輕載。如果能深入檢測到應用的狀態,就能確實做到由負荷輕的服務器處理通信。同時,也可以避免發生這樣的問題:將請求分配到了TCP/IP處於運行狀態而Web服務器等的應用卻處於宕機狀態的服務器。

美國Hydraweb Technologies公司的Hydra系列 、Coyote Point Systems公司 的Equalizer 系列和以色列Radware公司的WSD-Pro+ 系列,在服務器中裝入專用代理軟件,具有根據CPU和內存利用率來分配通信的功能。例如,兩台Web服務器的CPU利用率分別是25%和50%,可以按2:1的比例來分配通信量。

利用代理功能可以詳細把握服務器和應用的狀況,但在服務器端安裝代理軟件比較費事。要想省事,還有一種方法就是利用SNMP的信息。如果利用支持SNMP的服務器和OS,不裝入代理軟件也能掌握服務器的狀態。F5 Networks公司的BIG-IP、思科的Local Director、CSS系列 和WSD-Pro+等產品,支持SNMP監視功能。另外,還可以從應用側來控制通信的分配。例如,在用某個檢索數據庫進行重要處理之際,將更多的通信分配給參照其它檢索數據庫的Web服務器。

加速HTTP通信的產品

可加速Web服務器響應速度、減輕負荷的產品現在已經上市,如BIG-IP和美國Clickarray Networks公司的 Array 系列產品。這種產品具有減少HTTP通信中“建立/切斷TCP連接”開銷的功能。

在通常的HTTP通信中,每次傳輸文件都要建立和斷開TCP連接。TCP連接的建立/切斷,對於HTTP通信來說是開銷,會引起響應速度下降和負荷增加。因此,在HTTP/1.1中,規定用一次TCP連接、集中傳輸多個文件。在一頁上有多個圖像文件的站點中,由於削減了建立/切斷TCP連接的開銷,可望大幅提高響應速度。在SLB設備中,有兩種情況可以建立永久性TCP連接:(1)在SLB設備與Web服務器之間,用永久性TCP連接集中傳輸多個用戶請求的多個文件;(2)在客戶機和SLB設備之間,每個客戶端實現一個TCP連接,集中傳輸多個文件。這種通信方法通常叫做“保持通話連接(Keep Alive)”。

支持多重防火牆的產品

還有在多重防火牆和VPN設備中可使用的負載分擔設備。如BIG-IP、Alteon系列等。在構築大規模Intranet和使用VPN進行企業內外頻繁通信時,防火牆和VPN往往會成為瓶頸。在這種情況下,最好導入支持防火牆負載分擔的產品。在導入這些產品時,要設置兩台負載分擔設備,將多個防火牆和VPN設備夾在中間來分散流向防火牆和VPN的通信量。這種情況下,如果 “往返” 的通信不是通過同一個防火牆和VPN,就不能正確工作。因此,在Internet側和Intranet側設置的負載分擔設備要相互協調。

還有支持IDS的負載分擔的產品,如Alteon 和美國Toplayer公司的AppSwitch3500 等。如果簡單分散流向IDS的通信量,恐怕不能檢測出諸如DoS(Denial of Service)這類連續通信構成的攻擊。因此,支持IDS的負載分擔產品具有這樣的功能:以送達目標IP地址作為判定條件,將一連串連續的通信分配給特定的IDS。

通過Internet進行站點間負載分擔

有的產品具有通過Internet實現站點間負載分擔的功能。最近,越來越多的產品標准配置有站點間負載分擔功能或通過“可選項”追加這個功能。

Array系列和Foundry公司的ServerIron系列的標准配置有站點間負載分擔功能;BIG-IP和Equalizer系列,可以通過“選項”選擇支持站點間負載分擔功能。

F5 Networks公司的3DNS、思科的Content Router 4400、北電的Personal Content Director以及Hydra 等都是用於站點間負載分擔的專用設備。這些專用設備與站點內的SLB設備並用,可以掌握各站點的負荷狀況,精確控制分配對象。

URL改寫與CDS聯合

在不改變服務器上內容的情況下,具有支持CDS(Content Delivery Service)功能的產品也開始面市。利用CDS時,必須將內容中的URL改寫成專用的標識。盡管有改寫工具,但要一個一個的改寫服務器上的內容也很煩瑣。使用URL的改寫功能,就無須變更服務器上的內容。今後,與CDS聯合起來實現負載分擔也是一種方向。如果利用配置有逆向代理緩存(Reverse Proxy cache )功能的Array系列,也可以構築簡易CDS。

SLB設備的選擇標准


注意吞吐量—在選擇產品時,吞吐量是重要的技術指標。在識別應用層時,必須將分割成包的信息復元成“應用”,這無疑加重了處理負擔。目標吞吐量的計算方法,各個廠家往往不同。在安裝必要的處理時是否能達到所需要的吞吐量,必須要得到廠家的確認。在使用SSL時,為了識別應用層的信息,事先必須要解密SSL。如果要選擇配置有加速器功能的產品和可追加加速器功能的產品,SSL的處理不會成為瓶頸。Intel的7180/7185 e-Commerce Director和Array 系列,其標准配置有加速器,BIG-IP用選項可以追加。

注意各產品分配條件定義上的差異—在分配條件的定義方法上,各產品是有差別的。例如,在HTTP頭中包含有特定字符串時,作為分配通信的判定方法,BIG-IP系列產品和其它產品就有所不同。另外,對HTTP頭內容的解釋,不同產品也有所不同。在SLB設備中,有的產品只能解釋Cookie和URL等有限的HTTP頭,有的產品能解釋的字節數有限制。在應用時,一定要充分確認是否滿足識別HTTP頭所需要的條件。(責任編輯:王岳)




Copyright © Linux教程網 All Rights Reserved