「從頭到腳」介紹伺服器負載均衡《轉》

2021-09-01 10:09:47 字數 4426 閱讀 9020

對於負載均衡的一大應用就是處理伺服器的任務。如何進行有效的配置和規劃,讓每乙個伺服器接受到等量的工作,這就是伺服器負載均衡裝置的工作。在整個伺服器集群中,若有乙個伺服器出現了故障,只需將它提出到集群之外進行維修,之後在加入集群中就可以了。中間,負載均衡能自動進行任務的從新分配,不會造成單個集中性的負載問題。

伺服器負載如何分擔?

伺服器負載均衡(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側設定的負載均衡裝置要相互協調。

通過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頭所需要的條件。

配置nginx到後端伺服器負載均衡

nginx和haproxy一樣也可以做前端請求分發實現負載均衡效果,比如乙個tomcat服務如果併發過高會導致處理很慢,新來的請求就會排隊,到一定程度時請求就可能會返回錯誤或者拒絕服務,所以通過負載均衡使用多個後端伺服器處理請求,是比較有效的提公升效能的方法 另外當單機效能優化到一定瓶頸之後,一般也...

伺服器負載均衡演算法

3.1 伺服器負載均衡演算法 big ip是一台對流量和內容進行管理分配的裝置。它提供10種靈活的演算法將資料流有效地 到它所連線的伺服器群。而面對使用者,只是一台虛擬伺服器。使用者此時只須記住一台伺服器,即虛擬伺服器。但他們的資料流卻被big ip靈活地均衡到所有的伺服器。這10種演算法包括 輪詢...

Nginx tomcat伺服器 負載均衡

反向 reverse proxy 方式是指以 伺服器來接受internet上的連線請求,然後將請求 給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時 伺服器對外就表現為乙個反向 伺服器。1 熱部署 我個人覺得這個很不錯。在master管理程序與worker...