2011年2月11日 星期五

網站服務效能持續負荷的幕後英雄伺服器負載平衡

網站服務效能持續負荷的幕後英雄
http://www.ithome.com.tw/itadm/article.php?c=65773
文/陳思翰 2011-02-10

許多大型入口網站,背後是由數十個伺服器群組提供服務,而每個群組又有數十到上百臺伺服器,管理者可以使用伺服器負載平衡,讓這些龐大的流量,透過演算法來平均分配到各臺伺服器上


許多大型入口網站,背後是由數十個伺服器群組提供服務,而每個群組又有數十到上百臺伺服器,來同時提供網頁存取與服務。雖然有了大量的伺服器,但它們是如何分配網路流量呢?

管理者可以使用伺服器負載平衡(Server Load Balancing,SLB),讓這些龐大的流量,透過演算法來平均分配到各臺伺服器上。

在提到伺服器負載平衡之前,要先了解什麼是負載平衡。負載平衡是種技術,它能均勻分配工作負載給多組網路、電腦等硬體資源設備。

而負載平衡通常分為兩種,一種是針對應用服務系統的伺服器負載平衡,它能將大量的網路需求,平均分配給多臺具有相同功能的應用程式伺服器,讓服務不因過大流量變慢或中斷;另一種是偏重頻寬管理的廣域網路負載平衡(也稱為Multi-Homing),它用來整合實體線路,提供內部網路更大的上傳、下載頻寬。而有些廣域網路負載平衡設備,會附加伺服器負載平衡功能,但與專門的伺服器負載平衡設備相比,這方面的功能則顯得基本許多。

專門的伺服器負載平衡設備,通常會提供多項的平衡演算法及健康診斷。演算法方面,通常會提供輪詢、加權法、最少連接等,讓管理者能對服務群組的狀態,選擇最佳的平衡模式。除了基本的演算法外,也有廠商提供腳本功能,讓管理者自訂規則,讓特殊用戶的連線能直接導向效能較好的伺服器上。

而健康診斷方面,會有L3、L4、L7等三個層級的監測,管理者能針對伺服器的類型及重要性,選擇所需層級。像是針對FTP伺服器僅需使用到L3的Ping,來監測伺服器是否還在運作。但像線上購物網站,就需要使用L7,來監測網頁內容是否正常出現──假設網頁中的價錢遭到駭客竄改,有些伺服器負載平衡設備的健康診斷機制可以在偵測到時,將這臺有安全疑慮的網頁伺服器視為服務失效,並把它從服務群組中移出,避免錯誤資訊展示出去。

除了上述兩項主要功能外,通常各廠商會再提供一些特殊的負載平衡功能,像全球伺服器負載平衡(GSLB)、防火牆負載平衡(FWLB)功能,或是透過內建的硬體,提供SSL連線加速、壓縮HTTP資料等功能。

而伺服器負載平衡設備,價格從數十萬到上百萬元都有,如果規模與流量不是特別大的網站,使用軟體也能做伺服器負載平衡,像Window Server上的網路負載平衡功能(NLB),與Linux Virtual Server(LVS),都是透過軟體實做伺服器負載平衡的例子。不過上述兩種作業系統,其內建的功能較為基本,但對於小型網站已足夠使用。

而管理者在評估實作伺服器負載平衡時,需先考量網路規模及流量大小,如果是流量小的企業形象網站,就可以選擇自行架設軟體;如果是入口網站或學校的選課系統,這類瞬間流量大且需多臺伺服器的服務,使用專屬硬體設備可能較為合適。而在選購時,也可依照網站本身的特定需求挑選,有的產品特重在SSL連線加速,若是偏重電子金融服務的線上交易,可以搭配該類型產品。文⊙陳思翰

Round Robin

輪詢法
輪詢法是眾多負載平衡演算法中,最基本的演算法之一。其演算法是將服務群組中,所有節點(伺服器)權重設為相同。並基於這樣的條件,輪流詢問每一節點,因為各節點權重相同,所以會照著順序輪到,以供應服務。

但這種作法有個缺點,由於群組內伺服器的權重與負載相同,所以只適用於,群組內所有伺服器效能都相同的情況。因此實際在應用輪詢法時,大多是與其他演算法聯合使用。

Weighted

加權法
通常服務群組中的伺服器,每臺效能可能不盡相同,要讓它們做負載平衡時,就要依據效能來評估能承載的壓力。要應用加權法,需對各伺服器設定權值,而在負載平衡時,將較多連線導向效能好的伺服器上,而效能差的伺服器僅需處理較少連線。

而加權法通常也會與其他演算法混合使用,如最少連接數與輪詢法。

WAN Load Balancing,WLB

廣域網路負載平衡
許多人經常分不清WLB與SLB的差異,甚至以為兩者功能相同,實際上並不一樣。當網路環境存在兩條以上線路時,為了管理上的方便,大多會使用WLB來整合多條對外線路,來平衡企業對內、對外網路的負載量。WLB功能有整合線路、流量控制、線路備援等,假設內部網路有重要服務時,管理者可以透過WLB,給予伺服器保證流量。另外,它的線路備援功能也能讓服務保持不中斷。

Least Connection

最少連接法
最少連接法是一種針對伺服器連線數,來進行負載平衡的演算法。該演算法會透過負載平衡設備,對服務群組中的伺服器送出一個需求,來取得各伺服器的當前連線數,並依據這數值,將真正的伺服器連線,指向最低連線數的伺服器。但因為這時所得到的連線數,並不能完全呈現該臺伺服器真實的服務負載壓力,所以設定時,大多對伺服器設置連線數上限,來防止連線數超過負載,進而造成伺服器當機。

Global Server Load Balancing,GSLB

全球伺服器負載平衡
一個大型的國際級網站,背後可能有多個機房,來同時承擔來自世界各地的流量。而在這些機房中間,就是透過全球伺服器負載平衡來做流量負載。而GSLB基本概念其實跟SLB相似,只是規模變得更大,從群組內的多臺伺服器,變成了多個分散各地的資料中心。管理者使用GSLB,將來自世界各地的流量分析其地域位置,並依照所在地,來分配到距離最近的機房進行處理,以便提供給使用者最佳的服務。

Network Load Balancing,NLB

網路負載平衡
SLB大多用硬體方式實做,不過有些規模較小的網站或服務,會使用軟體的方式做SLB。透過軟體做SLB有兩種例子,一種是Linux 作業系統的LVS(Linux Virtual Server),另一種則是Windows Server的NLB功能,使用Windows Server 2003與2008的管理者,不需付費就能使用內建的NLB來做伺服器負載平衡。

不過NLB功能較陽春,且消耗的效能會造成伺服器負擔。

Least Request

最少需求法
最少需求法與最少連接法相似,不過它所監測的數值,並不是當前連線數,而是連線數中的需求數(一個連接網站的動作,分成HTTP Request和HTTP Response)。在HTTP 1.0時,連線數等同需求數,但是到HTTP 1.1時,一個連線數能同時包含多個需求。也因為這樣,透過連線數評估網路壓力已不準確,所以才衍伸出最少需求法。而這種作法會根據受監測伺服器的需求數,來分配網路連線。

Firewall Load Balancing,FWLB

防火牆負載平衡
它指的是利用實體線路的平衡,讓流量可以平均分配在多臺防火牆上。防火牆是網路安全中所不可缺少的,不過由於系統規則檢查時,經常使網路變得緩慢,而且一旦防火牆不能運作時,還會造成內外網路中斷。而有了防火牆負載平衡,能將線路分攤給多臺防火牆,提升處理效率。FWLB還可以做到防火牆的線路備援,當防火牆不能運作時,還能讓防護繼續保持。

Health Check

健康診斷
健康診斷大致上分成L3、L4、L7等三種層級,每個層級監測的目的都不同,像L3是使用ICMP的Ping,來確定伺服器是否在線上,L4是用TCP、UDP監測服務埠,L7則是監測應用服務及網頁內容。

這些功能,除了可以監測伺服器狀態,還能監測網站的重要內容。假設內容被竄改時,伺服器負載平衡設備則會將該網頁從服務群組移除,避免錯誤資訊呈現到使用者端。

沒有留言:

張貼留言