web集群服務的負載均衡方案選擇與實現

2021-08-22 09:00:06 字數 4903 閱讀 4468

web集群服務的負載均衡方案選擇與實現

web應用伺服器集群系統,是由一群同時執行同乙個

web應用的伺服器組成的集群系統,在外界看來,就像是乙個伺服器一樣。為了均衡集群伺服器的負載,達到優化系統效能的目的,集群伺服器將眾多的訪問請求,分散到系統中的不同節點進行處理。從而實現了更高的有效性和穩定性,而這也正是基於

web的企業應用所必須具備的特性。

高可靠性可以看作為系統的一種冗餘設定。對於乙個特定的請求,如果所申請的伺服器不能進行處理的話,那麼其他的伺服器能不能對之進行有效的處理呢?對於乙個高效的系統,如果乙個

web伺服器失敗的話,其他的伺服器可以馬上取代它的位置,對所申請的請求進行處理,而且這一過程對使用者來說,要盡可能的透明,使使用者察覺不到!

穩定性決定了應用程式能否支援不斷增長的使用者請求數量,它是應用程式自身的一種能力。穩定性是影響系統效能的眾多因素的一種有效的測量手段,包括機群系統所能支援的同時訪問系統的最大使用者數目以及處理乙個請求所需要的時間。

在現有眾多的均衡伺服器負載的方法中,廣泛研究並使用的是以下兩個方法:

以下,我們將就這兩種方法進行討論。

dns輪流排程rr-dns(round-robin domain name system)

網域名稱伺服器(

domain name server

)中的資料檔案將主機名字對映到其

ip位址。當你在瀏覽器中鍵入乙個

url時(例如:

www.loadbalancedsite.com

),瀏覽器則將請求傳送到

dns,要求其返回相應站點的

ip位址,這被稱為

dns查詢。當瀏覽器獲得該站點的

ip位址後,便通過該

ip位址連線到所要訪問的站點,將頁面展現在使用者面前。

網域名稱伺服器(

dns)通常包含乙個單一的

ip位址與該

ip位址所對映的站點的名稱的列表。在我們上面所假象的例子中,

www.loadbalancedsite.com

這個站點的對映

ip位址為

203.24.23.3

。為了利用

dns均衡伺服器的負載,對於同乙個站點來講,在

dns伺服器中同時擁有幾個不同的

ip位址。這幾個

ip位址代表集群中不同的機器,並在邏輯上對映到同乙個站點名。通過我們的例子可以更好的理解這一點,

www.loadbalancedsite.com

將通過下面的三個

ip203.34.23.3

203.34.23.4

203.34.23.5

在本例中,

dns伺服器中包含下面的對映表:

www.loadbalancedsite.com 203.34.23.3

www.loadbalancedsite.com 203.34.23.4

www.loadbalancedsite.com 203.34.23.5

當第乙個請求到達

dns伺服器時,返回的是第一台機器的

ip位址

203.34.23.3

;當第二個請求到達時,返回的是第二台機器的

ip位址

203.34.23.4

,以此類推。當第四個請求到達時,第一台機器的

ip位址將被再次返回,迴圈呼叫。

利用上述的

dns round robin

技術,對於某乙個站點的所有請求將被平均的分配到及群中的機器上。因此,在這種技術中,集群中的所有的節點對於網路來說都是可見的。

dns輪流排程的優勢

dns round robin

的最大的優點就是易於實現和代價低廉:

dns輪流排程的缺點

這種基於軟體的負載均衡方法主要存在兩處不足,一是不實時支援服務期間的關聯,一是不具有高可靠性。

不支援伺服器間的一致性。伺服器一致性是負載均衡系統所應具備的一種能力,通過它,系統可以根據會話資訊是屬於伺服器端的,還是底層資料庫級別的,繼而將使用者的請求導向相應的伺服器。而

dns輪流排程則不具備這種智慧型化的特性。它是通過

cookie

、隱藏域、重寫

url三種方法中的一種來進行相似的判斷的。當使用者通過上述基於文字標誌的方法與伺服器建立連線之後,其所有的後續訪問均是連線到同乙個伺服器上。問題是,伺服器的

ip是被瀏覽器暫時存放在快取中,一旦記錄過期,則需要重新建立連線,那麼同乙個使用者的請求很可能被不同的伺服器進行處理,則先前的所有會話資訊便會丟失。

除了上面介紹的輪流排程方法外,還有三種

dns負載均衡處理分配方法,將這四種方法列出如下:

øround robin (rrs)

:將工作平均的分配到伺服器

(用於實際服務主機效能一致)ø

least-connections (lcs)

:向較少連線的伺服器分配較多的工作

(ipvs

表儲存了所有的活動的連線。用於實際服務主機效能一致。)ø

weighted round robin (wrrs)

:向較大容量的伺服器分配較多的工作。可以根據負載資訊動態的向上或向下調整。

(用於實際服務主機效能不一致時)ø

weighted least-connections (wlc)

:考慮它們的容量向較少連線的伺服器分配較多的工作。容量通過使用者指定的砝碼來說明,可以根據裝載資訊動態的向上或向下調整。

(用於實際服務主機效能不一致時

)負載均衡器

負載均衡器通過虛擬

ip位址方法,解決了輪流排程所面臨的許多問題。使用了負載均衡器集群系統,在外部看來,像是具有乙個

ip位址的單一伺服器一樣,當然,這個

ip位址是虛擬的,它映**集群中的每一台機器的位址。所以,在某種程度上,負載均衡器是將整個集群的

ip位址報漏給外部網路。

當請求到達負載均衡器時,它會重寫該請求的標頭檔案,並將之指定到集群中的機器上。如果某台機器被從集群中移除了,請求不會別發往已經不存在的伺服器上,因為所有的機器表面上都具有同乙個

ip位址,即使集群中的某個節點被移除了,該位址也不會發生變化。而且,

internet

上快取的

dns條目也不再是問題了。當返回乙個應答時,客戶端看到的只是從負載均衡器上所返回的結果。也就是說,客戶端操作的物件是負載均衡器,對於其更後端的操作,對客戶端來講,是完全透明的。

負載均衡器的優點

伺服器一致性.負載均衡器讀取客戶端發出的每乙個請求中所包含的

cookies

或url

解釋。基於所讀出的這些資訊,負載均衡器就可以重寫報頭並將請求發往集群中合適的節點上,該節點維護著相應客戶端請求的會話資訊。在

通訊中,負載均衡器可以提供伺服器一致性,但並不是通過乙個安全的途徑(例如:

)來提供這種服務。當訊息被加密後(

ssl),負載均衡器就不能讀出隱藏在其中的會話資訊。

通過故障恢復機制獲得高可靠性.故障恢**生在當集群中某個節點不能處理請求,需將請求重新導向到其他節點時。主要有兩種故障恢復:

請求級故障恢復。當集群中的乙個節點不能處理請求時(通常是由於

down

機),請求被傳送到其他節點。當然,在導向到其他節點的同時,儲存在原節點上的會話資訊將會丟失。

透明會話故障恢復。當乙個引用失敗後,負載均衡器會將之傳送到集群中其他的節點上,以完成操作,這一點對使用者來說是透明的。由於透明會話故障恢復需要節點具備相應的操作資訊,因此為了實現該功能,集群中的所有節點必須具有公共儲存區域或通用資料庫,儲存會話資訊資料,以提供每個節點在進行單獨程序會話故障恢復時所需要的操作資訊。

統計計量。既然所有的

web應用請求都必須經過負載均衡系統,那麼系統就可以確定活動會話的數量,在任何例項訪問中的活動會話的數目,應答的次數,高峰負載次數,以及在高峰期和低谷期的會話的數目,還有其他更多的。所有的這些統計資訊都可以被很好的用來調整整個系統的效能。

負載均衡器的缺點

硬體路由的缺點在於費用、複雜性以及單點失敗的。由於所有的請求均是通過乙個單一的硬體負載均衡器來傳遞,因此,負載均衡器上的任何故障都將導致整個站點的崩潰。

https請求的負載均衡

正如上面所提到的,很難在那些來自

的請求上進行負載均衡和會話資訊維護處理。因為,這些請求中的資訊已經被加密了。負載均衡器沒有能力處理這類請求。不過,這裡有兩種方法可以解決這一問題:

**伺服器位於伺服器集群之前,首先由它接受所有的請求並對之進行解密,然後將這些處理後的請求根據頭資訊重新發往相應的節點上,這種方式不需要硬體上的支援,但會增加**伺服器的額外的負擔。

硬體ssl

解碼器,則是在請求到達負載均衡器之前,先經由它進行解密處理。這種方式比**伺服器的處理速度要快捷一些。但代價也高,而且實現比較複雜。

web集群服務的負載均衡方案選擇與實現

web集群服務的負載均衡方案選擇與實現 web應用伺服器集群系統,是由一群同時執行同乙個 web應用的伺服器組成的集群系統,在外界看來,就像是乙個伺服器一樣。為了均衡集群伺服器的負載,達到優化系統效能的目的,集群伺服器將眾多的訪問請求,分散到系統中的不同節點進行處理。從而實現了更高的有效性和穩定性,...

web集群服務的負載均衡方案選擇與實現

web應用伺服器集群系統,是由一群同時執行同乙個web應用的伺服器組成的集群系統,在外界看來,就像是乙個伺服器一樣。為了均衡集群伺服器的負載,達到優化系統效能的目的,集群伺服器將眾多的訪問請求,分散到系統中的不同節點進行處理。從而實現了更高的有效性和穩定性,而這也正是基於web的企業應用所必須具備的...

web集群服務的負載均衡方案選擇與實現

web集群服務的負載均衡方案選擇與實現 web應用伺服器集群系統,是由一群同時執行同乙個 web應用的伺服器組成的集群系統,在外界看來,就像是乙個伺服器一樣。為了均衡集群伺服器的負載,達到優化系統效能的目的,集群伺服器將眾多的訪問請求,分散到系統中的不同節點進行處理。從而實現了更高的有效性和穩定性,...