web應用服務器集群系統(tǒng),是由一群同時運行同一個web應用的服務器組成的集群系統(tǒng),在外界看來,就像是個服務器相同。為了均衡集群服務器的負載,達到優(yōu)化系統(tǒng)性能的目的,集群服務器將眾多的訪問請求,分散到系統(tǒng)中的不同節(jié)點進行處理。從而實現(xiàn)了更高的有效性和穩(wěn)定性,而這也正是基于Web的企業(yè)應用所必須具備的特性。
高可靠性能夠看作為系統(tǒng)的一種冗余設定。對于一個特定的請求,假如所申請的服務器不能進行處理的話,那么其他的服務器能不能對之進行有效的處理呢?對于一個高效的系統(tǒng),假如一個Web服務器失敗的話,其他的服務器能夠馬上取代他的位置,對所申請的請求進行處理,而且這一過程對用戶來說,要盡可能的透明,使用戶察覺不到!
穩(wěn)定性決定了應用程式能否支持不斷增長的用戶請求數(shù)量,他是應用程式自身的一種能力。穩(wěn)定性是影響系統(tǒng)性能的眾多因素的一種有效的測量手段,包括機群系統(tǒng)所能支持的同時訪問系統(tǒng)的最大用戶數(shù)目連同處理一個請求所需要的時間。
在現(xiàn)有眾多的均衡服務器負載的方法中,廣泛研究并使用的是以下兩個方法:
DNS負載平衡的方法RR-DNS(Round-Robin Domain Name System)
負載均衡器
以下,我們將就這兩種方法進行討論。
DNS輪流排程 RR-DNS(Round-Robin Domain Name System)
域名服務器(Domain Name Server)中的數(shù)據文檔將主機名字映射到其IP地址。當您在瀏覽器中鍵入一個URL時(例如:www.loadbalancedsite.com),瀏覽器則將請求發(fā)送到DNS,需要其返回相應站點的IP地址,這被稱為DNS查詢。當瀏覽器獲得該站點的IP地址后,便通過該IP地址連接到所要訪問的站點,將頁面展現(xiàn)在用戶面前。
域名服務器(DNS)通常包含一個單一的IP地址和該IP地址所映射的站點的名稱的列表。在我們上面所假象的例子中,www.loadbalancedsite.com 這個站點的映射IP地址為203.24.23.3。
為了利用DNS均衡服務器的負載,對于同一個站點來講,在DNS服務器中同時擁有幾個不同的IP地址。這幾個IP地址代表集群中不同的機器,并在邏輯上映射到同一個站點名。通過我們的例子能夠更好的理解這一點,www.loadbalancedsite.com將通過下面的三個IP地址發(fā)布到一個集群中的三臺機器上:
203.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
當?shù)谝粋€請求到達DNS服務器時,返回的是第一臺機器的IP地址203.34.23.3;當?shù)诙€請求到達時,返回的是第二臺機器的IP地址203.34.23.4,以此類推。當?shù)谒膫€請求到達時,第一臺機器的IP地址將被再次返回,循環(huán)調用。
利用上述的DNS Round Robin技術,對于某一個站點的任何請求將被平均的分配到及群中的機器上。因此,在這種技術中,集群中的任何的節(jié)點對于網絡來說都是可見的。
DNS 輪流排程的優(yōu)勢
DNS Round Robin的最大的長處就是易于實現(xiàn)和代價低廉:
代價低,易于建立。 為了支持輪流排程,系統(tǒng)管理員只需要在DNS服務器上作一些改變,而且在許多比較新的版本的DNS服務器上已增加了這種功能。對于Web應用來說,無需對代碼作任何的修改;事實上,Web應用本身并不會意識到負載均衡配置,即使在他面前。
簡單. 無需網絡專家來對之進行設定,或在出現(xiàn)問題時對之進行維護。
DNS 輪流排程的缺點
這種基于軟件的負載均衡方法主要存在兩處不足,一是不實時支持服務期間的關聯(lián),一是不具備高可靠性。
不支持服務器間的一致性。服務器一致性是負載均衡系統(tǒng)所應具備的一種能力,通過他,系統(tǒng)能夠根據會話信息是屬于服務器端的,還是底層數(shù)據庫級別的,繼而將用戶的請求導向相應的服務器。而DNS輪流排程則不具備這種智能化的特性。他是通過cookie、隱藏域、重寫URL三種方法中的一種來進行相似的判斷的。當用戶通過上述基于文本標志的方法和服務器建立連接之后,其任何的后續(xù)訪問均是連接到同一個服務器上。問題是,服務器的IP是被瀏覽器暫時存放在緩存中,一旦記錄過期,則需要重新建立連接,那么同一個用戶的請求很可能被不同的服務器進行處理,則先前的任何會話信息便會丟失。
不支持高可靠性。設想一個具備N個節(jié)點的集群。假如其中的一個節(jié)點毀壞,那么任何的訪問該節(jié)點的請求將不會有所回應,這是任何人都不愿意看到的。比較先進的路由器能夠通過每隔一定的時間間隔,對節(jié)點檢查,假如有毀壞的節(jié)點,則將之從列表中去除的方法,解決這個問題。但是,由于在Internet上,ISPs將眾多的DNS存放在緩存中,以節(jié)省訪問時間,因此,DNS的更新就會變得很緩慢,以至于有的用戶可能會訪問一些已不存在的站點,或一些新的站點得不到訪問。所以,盡管DNS輪流排程在一定程度上解決了負載均衡問題,但這種狀況的改變并不是十分樂觀和有效的。
除了上面介紹的輪流排程方法外,更有三種DNS負載均衡處理分配方法,將這四種方法列出如下:
Round robin (RRS): 將工作平均的分配到服務器 (用于實際服務主機性能一致)
Least-connections (LCS): 向較少連接的服務器分配較多的工作(IPVS 表存儲了任何的活動的連接。用于實際服務主機性能一致。)
Weighted round robin (WRRS): 向較大容量的服務器分配較多的工作。能夠根據負載信息動態(tài)的向上或向下調整。 (用于實際服務主機性能不一致時)
Weighted least-connections (WLC): 考慮他們的容量向較少連接的服務器分配較多的工作。容量通過用戶指定的砝碼來說明,能夠根據裝載信息動態(tài)的向上或向下調整。(用于實際服務主機性能不一致時)
負載均衡器
負載均衡器通過虛擬IP地址方法,解決了輪流排程所面臨的許多問題。使用了負載均衡器集群系統(tǒng),在外部看來,像是具備一個IP地址的單一服務器相同,當然,這個IP地址是虛擬的,他映射了集群中的每一臺機器的地址。所以,在某種程度上,負載均衡器是將整個集群的IP地址報漏給外部網絡。