集群和負(fù)載均衡的相伴發(fā)展論
集群和負(fù)載均衡是個扯不清的關(guān)系,集群是負(fù)載均衡發(fā)展的根本,負(fù)載均衡是集群發(fā)展的依靠。那么從負(fù)載均衡的角度看集群現(xiàn)在的表現(xiàn)又是如何呢?隨著科技的不斷出新,我們越來越多的技術(shù)已經(jīng)不能分開來談,現(xiàn)在我們就將兩者結(jié)合,一起分析它們的發(fā)展現(xiàn)狀和方向。
負(fù)載均衡
負(fù)載均衡是提高系統(tǒng)性能的一種前沿技術(shù)。還是沿用前面的例子,一臺IA服務(wù)器的處理能力是每秒幾萬個,顯然無法在一秒鐘內(nèi)處理幾十萬個請求,但如果我們能夠有10臺這樣的服務(wù)器組成一個系統(tǒng),如果有辦法將所有的請求平均分配到所有的服務(wù)器,那么這個系統(tǒng)就擁有了每秒處理幾十萬個請求的能力。這就是負(fù)載均衡的基本思想。
實(shí)際上,目前市場上有多家廠商的負(fù)載均衡產(chǎn)品。由于其應(yīng)用的主要技術(shù)的不同,也就有著不同的特點(diǎn)和不同的性能。
1.輪詢DNS負(fù)載均衡
輪詢DNS方案可以說是技術(shù)上最簡單也最直觀的一種方案。當(dāng)然,這種方案只能夠?qū)崿F(xiàn)負(fù)載均衡的功能,卻無法實(shí)現(xiàn)對高可用性的保證。它的原理是在DNS服務(wù)器中設(shè)定對同一個Internet主機(jī)名的多個IP地址的映射。這樣,在DNS收到查詢主機(jī)名的請求時,會循環(huán)的將所有對應(yīng)的IP地址逐個返回。這樣,就能夠?qū)⒉煌目蛻舳诉B接定位到不同的IP主機(jī)上,也就能夠?qū)崿F(xiàn)比較簡單的負(fù)載均衡功能。但是,這種方案有兩個比較致命的缺點(diǎn):
◆只能夠?qū)崿F(xiàn)對基于Internet主機(jī)名請求的負(fù)載均衡,如果是直接基于IP地址的請求則無能為力。
◆在集群內(nèi)有節(jié)點(diǎn)發(fā)生故障的情況下,DNS服務(wù)器仍會將這個節(jié)點(diǎn)的IP地址返回給查詢方,也就仍會不斷的有客戶請求試圖與已故障的節(jié)電建立連接。這種情況下,即使你手工修改DNS服務(wù)器的對應(yīng)設(shè)置,將故障的IP地址刪除,由于Internet上所有的DNS服務(wù)器都有緩存機(jī)制,仍會有成千上萬的客戶端連接不到集群,除非等到所有的DNS緩存都超時。
2.硬件負(fù)載均衡解決方案
有些廠商提供對負(fù)載均衡的硬件解決方案,制造出帶有NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)功能的高檔路由器或交換機(jī)來實(shí)現(xiàn)負(fù)載均衡功能。NAT本身的原理就是實(shí)現(xiàn)多個私有IP地址對單個公共IP地址的轉(zhuǎn)換。代表產(chǎn)品是Cicso公司和Alteon公司的某些高檔硬件交換機(jī)系列。這種方案有如下缺點(diǎn):
◆由于采用了特殊的硬件,使得整個系統(tǒng)中存在非工業(yè)標(biāo)準(zhǔn)部件,極大的影響系統(tǒng)的擴(kuò)充和維護(hù)、升級工作。
◆價格極其昂貴,和軟件的解決方案根本是數(shù)量級上的差別。
◆一般只能實(shí)現(xiàn)對節(jié)點(diǎn)系統(tǒng)一級的狀態(tài)檢查,無法細(xì)化到服務(wù)一級的檢查。
◆由于采用NAT機(jī)制,集群管理節(jié)點(diǎn)本身要完成的工作量很大,很容易成為整個系統(tǒng)的瓶頸。
◆此特殊硬件本身就是單一故障點(diǎn)。
◆實(shí)現(xiàn)異地節(jié)點(diǎn)的集群非常困難。#p#
3.協(xié)商式處理(并行過濾)和負(fù)載均衡
這種方案的原理是客戶請求會同時被所有的節(jié)點(diǎn)所接收,然后所有節(jié)點(diǎn)按照一定的規(guī)則協(xié)商決定由哪個節(jié)點(diǎn)處理這個請求。此種方案中比較顯著的特點(diǎn)就是整個集群中沒有顯著的管理節(jié)點(diǎn),所有決定由全體工作節(jié)點(diǎn)共同協(xié)商作出。代表產(chǎn)品是Microsoft公司的Microsoft Load Balancing Service這種方案的特點(diǎn)是:
◆由于各節(jié)點(diǎn)間要進(jìn)行的通訊量太大,加重了網(wǎng)絡(luò)的負(fù)擔(dān),一般需要增加節(jié)點(diǎn)通訊的專用網(wǎng)絡(luò),也就加大了安裝和維護(hù)的難度和費(fèi)用。
◆由于每個節(jié)點(diǎn)都要接收所有的客戶請求并進(jìn)行分析,極大的加大了網(wǎng)絡(luò)驅(qū)動層的負(fù)擔(dān),也就減低了節(jié)點(diǎn)本身的工作效率,同時也時網(wǎng)絡(luò)驅(qū)動層很容易成為節(jié)點(diǎn)系統(tǒng)的瓶頸。
◆由于要更改網(wǎng)絡(luò)驅(qū)動層的程序,所以并不是一個通用的方案,只能夠?qū)崿F(xiàn)對特殊平臺的支持。
◆在小量節(jié)點(diǎn)的情況下協(xié)商的效率還可以接受,一旦節(jié)點(diǎn)數(shù)量增加,通訊和協(xié)商將變得異常復(fù)雜和低效,整個系統(tǒng)的性能會有非線性的大幅度下降。所以此類方案,一般在理論上也只允許最多十幾個的節(jié)點(diǎn)。
◆無法實(shí)現(xiàn)異地節(jié)點(diǎn)的集群。
◆由于集群內(nèi)沒有統(tǒng)一的管理者,所以可能出現(xiàn)混亂的異常現(xiàn)象。
4.流量分發(fā)和負(fù)載均衡
流量分發(fā)的原理是所有的用戶請求首先到達(dá)集群的管理節(jié)點(diǎn),管理節(jié)點(diǎn)可以根據(jù)所有服務(wù)節(jié)點(diǎn)的處理能力和現(xiàn)狀來決定將這個請求分發(fā)給某個服務(wù)節(jié)點(diǎn)。當(dāng)某個服務(wù)節(jié)點(diǎn)由于硬件或軟件原因故障時,管理節(jié)點(diǎn)能夠自動檢測到并停止向這個服務(wù)節(jié)點(diǎn)分發(fā)流量。這樣,既通過將流量分擔(dān)而增加了整個系統(tǒng)的性能和處理能力,又可以很好的提高系統(tǒng)的可用性。
通過將管理節(jié)點(diǎn)本身做一個子集群可以消除由于管理節(jié)點(diǎn)自身的單一性帶來的單一故障點(diǎn)。有些傳統(tǒng)技術(shù)人員認(rèn)為,因?yàn)樗械目蛻袅髁慷紝⑼ㄟ^管理節(jié)點(diǎn),所以管理節(jié)點(diǎn)很容易成為整個系統(tǒng)的瓶頸。但TurboCluster Server通過先進(jìn)的直接路由或IP隧道轉(zhuǎn)發(fā)機(jī)制巧妙的解決了問題。使得所有對客戶響應(yīng)的流量都由服務(wù)節(jié)點(diǎn)直接返回給客戶端,而并不需要再次通過管理節(jié)點(diǎn)。眾所周知,對于服務(wù)提供商而言,進(jìn)入的流量要遠(yuǎn)遠(yuǎn)小于流出的流量,所以管理節(jié)點(diǎn)本身將不再是瓶頸。
流量分發(fā)的具體實(shí)現(xiàn)方法有直接路由、IP隧道和網(wǎng)絡(luò)地址轉(zhuǎn)換三種方法。TurboCluster Server目前支持效率最高的前兩種。由于這種先進(jìn)的結(jié)構(gòu)和技術(shù),使得TurboCluster Server集群內(nèi)的服務(wù)節(jié)點(diǎn)數(shù)并沒有上限,而且對大量節(jié)點(diǎn)的協(xié)同工作的效率也能夠非常好的保證。
結(jié)束語
集群技術(shù)已經(jīng)發(fā)展了多年,其中的分支也非常多。目前集群技術(shù)正逐漸走向分層結(jié)構(gòu),以后也肯定會有專門用戶前端、后端的集群產(chǎn)品出現(xiàn)。