詳解Linux服務(wù)器集群_第1頁
詳解Linux服務(wù)器集群_第2頁
詳解Linux服務(wù)器集群_第3頁
詳解Linux服務(wù)器集群_第4頁
詳解Linux服務(wù)器集群_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔傾情為你奉上精選優(yōu)質(zhì)文檔傾情為你奉上專心專注專業(yè)專心專注專業(yè)精選優(yōu)質(zhì)文檔傾情為你奉上專心專注專業(yè)Linux服務(wù)器集群系統(tǒng)(二)LVS集群的體系結(jié)構(gòu)本文主要介紹了LVS集群的體系結(jié)構(gòu)。先給出LVS集群的通用體系結(jié)構(gòu),并討論了其的設(shè)計(jì)原則和相應(yīng)的特點(diǎn);最后將LVS集群應(yīng)用于建立可伸縮的Web、Media、Cache和Mail等網(wǎng)絡(luò)服務(wù)。1.引言在過去的十幾年中,Internet從幾個(gè)研究機(jī)構(gòu)相連為信息共享的網(wǎng)絡(luò)發(fā)展成為擁有大量應(yīng)用和服務(wù)的全球性網(wǎng)絡(luò),它正成為人們生活中不可缺少的 一部分。雖然Internet發(fā)展速度很快,但建設(shè)和維護(hù)大型網(wǎng)絡(luò)服務(wù)依然是一項(xiàng)挑戰(zhàn)性的任務(wù),因?yàn)橄到y(tǒng)必須是高性

2、能的、高可靠的,尤其當(dāng)訪問負(fù)載不斷增 長(zhǎng)時(shí),系統(tǒng)必須能被擴(kuò)展來滿足不斷增長(zhǎng)的性能需求。由于缺少建立可伸縮網(wǎng)絡(luò)服務(wù)的框架和設(shè)計(jì)方法,這意味著只有擁有非常出色工程和管理人才的機(jī)構(gòu)才能建立 和維護(hù)大型的網(wǎng)絡(luò)服務(wù)。針對(duì)這種情形,本文先給出LVS集群的通用體系結(jié)構(gòu),并討論了其的設(shè)計(jì)原則和相應(yīng)的特點(diǎn);最后將LVS集群應(yīng)用于建立可伸縮的Web、Media、Cache和Mail等網(wǎng)絡(luò)服務(wù)。2.LVS集群的通用體系結(jié)構(gòu)LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請(qǐng)求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動(dòng)屏蔽掉服 務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬

3、服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,而且無需修改客戶端和服務(wù)器端的程序。圖1:LVS集群的體系結(jié)構(gòu)為此,在設(shè)計(jì)時(shí)需要考慮系統(tǒng)的透明性、可伸縮性、高可用性和易管理性。一般來說,LVS集群采用三層結(jié)構(gòu),其體系結(jié)構(gòu)如圖1所示,三層主要組成部分為:負(fù)載調(diào)度器(load balancer),它是整個(gè)集群對(duì)外面的前端機(jī),負(fù)責(zé)將客戶的請(qǐng)求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來自一個(gè)IP地址(我們可稱之為虛擬IP地址)上的。服務(wù)器池(server pool),是一組真正執(zhí)行客戶請(qǐng)求的服務(wù)器,執(zhí)行的服務(wù)有WEB、MAIL、FTP和DNS等。共享存儲(chǔ)(shared storage),它為服務(wù)器池提供一

4、個(gè)共享的存儲(chǔ)區(qū),這樣很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。調(diào)度器是服務(wù)器集群系統(tǒng)的唯一入口點(diǎn)(Single Entry Point),它可以采用IP負(fù)載均衡技術(shù)、基于內(nèi)容請(qǐng)求分發(fā)技術(shù)或者兩者相結(jié)合。在IP負(fù)載均衡技術(shù)中,需要服務(wù)器池?fù)碛邢嗤膬?nèi)容提供相同的服務(wù)。當(dāng) 客戶請(qǐng)求到達(dá)時(shí),調(diào)度器只根據(jù)服務(wù)器負(fù)載情況和設(shè)定的調(diào)度算法從服務(wù)器池中選出一個(gè)服務(wù)器,將該請(qǐng)求轉(zhuǎn)發(fā)到選出的服務(wù)器,并記錄這個(gè)調(diào)度;當(dāng)這個(gè)請(qǐng)求的其 他報(bào)文到達(dá),也會(huì)被轉(zhuǎn)發(fā)到前面選出的服務(wù)器。在基于內(nèi)容請(qǐng)求分發(fā)技術(shù)中,服務(wù)器可以提供不同的服務(wù),當(dāng)客戶請(qǐng)求到達(dá)時(shí),調(diào)度器可根據(jù)請(qǐng)求的內(nèi)容選擇服務(wù)器 執(zhí)行請(qǐng)求。因?yàn)樗械牟僮鞫际窃?/p>

5、Linux操作系統(tǒng)核心空間中將完成的,它的調(diào)度開銷很小,所以它具有很高的吞吐率。服務(wù)器池的結(jié)點(diǎn)數(shù)目是可變的。當(dāng)整個(gè)系統(tǒng)收到的負(fù)載超過目前所有結(jié)點(diǎn)的處理能力時(shí),可以在服務(wù)器池中增加服務(wù)器來滿足不斷增長(zhǎng)的請(qǐng)求負(fù)載。對(duì)大多數(shù) 網(wǎng)絡(luò)服務(wù)來說,請(qǐng)求間不存在很強(qiáng)的相關(guān)性,請(qǐng)求可以在不同的結(jié)點(diǎn)上并行執(zhí)行,所以整個(gè)系統(tǒng)的性能基本上可以隨著服務(wù)器池的結(jié)點(diǎn)數(shù)目增加而線性增長(zhǎng)。共享存儲(chǔ)通常是數(shù)據(jù)庫、網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng)。服務(wù)器結(jié)點(diǎn)需要?jiǎng)討B(tài)更新的數(shù)據(jù)一般存儲(chǔ)在數(shù)據(jù)庫系統(tǒng)中,同時(shí)數(shù)據(jù)庫會(huì)保證并發(fā) 訪問時(shí)數(shù)據(jù)的一致性。靜態(tài)的數(shù)據(jù)可以存儲(chǔ)在網(wǎng)絡(luò)文件系統(tǒng)(如NFS/CIFS)中,但網(wǎng)絡(luò)文件系統(tǒng)的伸縮能力有限,一般來

6、說,NFS/CIFS服務(wù)器只能 支持36個(gè)繁忙的服務(wù)器結(jié)點(diǎn)。對(duì)于規(guī)模較大的集群系統(tǒng),可以考慮用分布式文件系統(tǒng),如AFS1、GFS2.3、Coda4和 Intermezzo5等。分布式文件系統(tǒng)可為各服務(wù)器提供共享的存儲(chǔ)區(qū),它們?cè)L問分布式文件系統(tǒng)就像訪問本地文件系統(tǒng)一樣,同時(shí)分布式文件系統(tǒng)可提 供良好的伸縮性和可用性。此外,當(dāng)不同服務(wù)器上的應(yīng)用程序同時(shí)讀寫訪問分布式文件系統(tǒng)上同一資源時(shí),應(yīng)用程序的訪問沖突需要消解才能使得資源處于一致狀 態(tài)。這需要一個(gè)分布式鎖管理器(Distributed Lock Manager),它可能是分布式文件系統(tǒng)內(nèi)部提供的,也可能是外部的。開發(fā)者在寫應(yīng)用程序時(shí),可以使用分

7、布式鎖管理器來保證應(yīng)用程序在不同結(jié)點(diǎn)上并發(fā)訪 問的一致性。負(fù)載調(diào)度器、服務(wù)器池和共享存儲(chǔ)系統(tǒng)通過高速網(wǎng)絡(luò)相連接,如100Mbps交換網(wǎng)絡(luò)、Myrinet和Gigabit網(wǎng)絡(luò)等。使用高速的網(wǎng)絡(luò),主要為避免當(dāng)系統(tǒng)規(guī)模擴(kuò)大時(shí)互聯(lián)網(wǎng)絡(luò)成為整個(gè)系統(tǒng)的瓶頸。Graphic Monitor是為系統(tǒng)管理員提供整個(gè)集群系統(tǒng)的監(jiān)視器,它可以監(jiān)視系統(tǒng)的狀態(tài)。Graphic Monitor是基于瀏覽器的,所以無論管理員在本地還是異地都可以監(jiān)測(cè)系統(tǒng)的狀況。為了安全的原因,瀏覽器要通過HTTPS(Secure HTTP)協(xié)議和身份認(rèn)證后,才能進(jìn)行系統(tǒng)監(jiān)測(cè),并進(jìn)行系統(tǒng)的配置和管理。2.1. 為什么使用層次的體系結(jié)構(gòu)層次的體

8、系結(jié)構(gòu)可以使得層與層之間相互獨(dú)立,每一個(gè)層次提供不同的功能,在一個(gè)層次可以重用不同的已有軟件。例如,調(diào)度器層提供了負(fù)載平衡、可伸縮 性和高可用性等,在服務(wù)器層可以運(yùn)行不同的網(wǎng)絡(luò)服務(wù),如Web、Cache、Mail和Media等,來提供不同的可伸縮網(wǎng)絡(luò)服務(wù)。明確的功能劃分和清晰 的層次結(jié)構(gòu)使得系統(tǒng)容易建設(shè),以后整個(gè)系統(tǒng)容易維護(hù),而且系統(tǒng)的性能容易被擴(kuò)展。2.2. 為什么是共享存儲(chǔ)共享存儲(chǔ)如分布式文件系統(tǒng)在這個(gè)LVS集群系統(tǒng)是可選項(xiàng)。當(dāng)網(wǎng)絡(luò)服務(wù)需要有相同的內(nèi)容,共享存儲(chǔ)是很好的選擇,否則每臺(tái)服務(wù)器需要將相同的 內(nèi)容復(fù)制到本地硬盤上。當(dāng)系統(tǒng)存儲(chǔ)的內(nèi)容越多,這種無共享結(jié)構(gòu)(Shared-nothing

9、 Structure)的代價(jià)越大,因?yàn)槊颗_(tái)服務(wù)器需要一樣大的存儲(chǔ)空間,任何的更新需要涉及到每臺(tái)服務(wù)器,系統(tǒng)的維護(hù)代價(jià)會(huì)非常高。共享存儲(chǔ)為服務(wù)器組提供統(tǒng)一的存儲(chǔ)空間,這使得系統(tǒng)的內(nèi)容維護(hù)工作比較輕松,如Webmaster只需要更新共享存儲(chǔ)中的頁面,對(duì)所有 的服務(wù)器都有效。分布式文件系統(tǒng)提供良好的伸縮性和可用性,當(dāng)分布式文件系統(tǒng)的存儲(chǔ)空間增加時(shí),所有服務(wù)器的存儲(chǔ)空間也隨之增大。對(duì)于大多數(shù) Internet服務(wù)來說,它們都是讀密集型(Read-intensive)的應(yīng)用,分布式文件系統(tǒng)在每臺(tái)服務(wù)器使用本地硬盤作Cache(如 2Gbytes的空間),可以使得訪問分布式文件系統(tǒng)本地的速度接近于訪問本地

10、硬盤。此外,存儲(chǔ)硬件技術(shù)的發(fā)展也促使從無共享的集群向共享存儲(chǔ)的集群遷移。存儲(chǔ)區(qū)域網(wǎng)(Storage Area Networks)技術(shù)解決了集群的每個(gè)結(jié)點(diǎn)可以直接連接/共享一個(gè)龐大的硬盤陣列,硬件廠商也提供多種硬盤共享技術(shù),如光纖通道(Fiber Channel)、共享SCSI(Shared SCSI)。InfiniBand是一個(gè)通用的高性能I/O規(guī)范,使得存儲(chǔ)區(qū)域網(wǎng)中以更低的延時(shí)傳輸I/O消息和集群通訊消息,并且提供很好的伸縮性。 InfiniBand得到絕大多數(shù)的大廠商的支持,如Compaq、Dell、Hewlett-Packard、IBM、Intel、Microsoft 和SUN Micr

11、osystems等,它正在成為一個(gè)業(yè)界的標(biāo)準(zhǔn)。這些技術(shù)的發(fā)展使得共享存儲(chǔ)變得容易,規(guī)模生產(chǎn)也會(huì)使得成本逐步降低。2.3. 高可用性集群系統(tǒng)的特點(diǎn)是它在軟硬件上都有冗余。系統(tǒng)的高可用性可以通過檢測(cè)節(jié)點(diǎn)或服務(wù)進(jìn)程故障和正確地重置系統(tǒng)來實(shí)現(xiàn),使得系統(tǒng)收到的請(qǐng)求能被存活的結(jié)點(diǎn)處理。通常,我們?cè)谡{(diào)度器上有資源監(jiān)測(cè)進(jìn)程來時(shí)刻監(jiān)視各個(gè)服務(wù)器結(jié)點(diǎn)的健康狀況。當(dāng)服務(wù)器對(duì)ICMP ping不可達(dá)時(shí)或者探測(cè)她的網(wǎng)絡(luò)服務(wù)在指定的時(shí)間沒有響應(yīng)時(shí),資源監(jiān)測(cè)進(jìn)程通知操作系統(tǒng)內(nèi)核將該服務(wù)器從調(diào)度列表中刪除或者失效。這樣,新的服務(wù)請(qǐng)求就 不會(huì)被調(diào)度到壞的結(jié)點(diǎn)。資源監(jiān)測(cè)進(jìn)程能通過電子郵件或傳呼機(jī)向管理員報(bào)告故障。一旦監(jiān)測(cè)進(jìn)程到服

12、務(wù)器恢復(fù)工作,通知調(diào)度器將其加入調(diào)度列表進(jìn)行調(diào)度。另 外,通過系統(tǒng)提供的管理程序,管理員可發(fā)命令隨時(shí)可以將新機(jī)器加入服務(wù)來提高系統(tǒng)的處理性能,也可以將已有的服務(wù)器切出服務(wù),以便對(duì)服務(wù)器進(jìn)行系統(tǒng)維護(hù)?,F(xiàn)在前端的調(diào)度器有可能成為系統(tǒng)的單一失效點(diǎn)(Single Point of Failure)。一般來說,調(diào)度器的可靠性較高,因?yàn)檎{(diào)度器上運(yùn)行的程序較少而且大部分程序早已經(jīng)遍歷過,但我們不能排除硬件老化、網(wǎng)絡(luò)線路或者人為誤 操作等主要故障。為了避免調(diào)度器失效而導(dǎo)致整個(gè)系統(tǒng)不能工作,我們需要設(shè)立一個(gè)從調(diào)度器作為主調(diào)度器的備份。兩個(gè)心跳(Heartbeat)進(jìn)程6分 別在主、從調(diào)度器上運(yùn)行,它們通過串口線

13、和UDP等心跳線來相互定時(shí)地匯報(bào)各自的健康狀況。當(dāng)從調(diào)度器不能聽得主調(diào)度器的心跳時(shí),從調(diào)度器通過ARP欺騙 (Gratuitous ARP)來接管集群對(duì)外的Virtual IP Address,同時(shí)接管主調(diào)度器的工作來提供負(fù)載調(diào)度服務(wù)。當(dāng)主調(diào)度器恢復(fù)時(shí),這里有兩種方法,一是主調(diào)度器自動(dòng)變成從調(diào)度器,二是從調(diào)度器釋放 Virtual IP Address,主調(diào)度器收回Virtual IP Address并提供負(fù)載調(diào)度服務(wù)。這里,多條心跳線可以使得因心跳線故障導(dǎo)致誤判(即從調(diào)度器認(rèn)為主調(diào)度器已經(jīng)失效,其實(shí)主調(diào)度器還在正常工作)的概論 降到最低。通常,當(dāng)主調(diào)度器失效時(shí),主調(diào)度器上所有已建立連接的狀態(tài)

14、信息將丟失,已有的連接會(huì)中斷。客戶需要向重新連接,從調(diào)度器才會(huì)將新連接調(diào) 度到各個(gè)服務(wù)器上,這對(duì)客戶會(huì)造成一定的不便。為此,IPVS調(diào)度器在Linux 內(nèi)核中實(shí)現(xiàn)一種高效狀態(tài)同步機(jī)制,將主調(diào)度器的狀態(tài)信息及時(shí)地同步到從調(diào)度器。當(dāng)從調(diào)度器接管時(shí),絕大部分已建立的連接會(huì)持續(xù)下去。3.可伸縮Web服務(wù)基于LVS的Web集群的體系結(jié)構(gòu)如圖2所示:第一層是負(fù)載調(diào)度器,一般采用IP負(fù)載均衡技術(shù),可以使得整個(gè)系統(tǒng)有較高的吞吐率;第二層是 Web服務(wù)器池,在每個(gè)結(jié)點(diǎn)上可以分別運(yùn)行HTTP服務(wù)或HTTPS服務(wù)、或者兩者都運(yùn)行;第三層是共享存儲(chǔ),它可以是數(shù)據(jù)庫,可以是網(wǎng)絡(luò)文件系統(tǒng)或分布 式文件系統(tǒng),或者是三者的混

15、合。集群中各結(jié)點(diǎn)是通過高速網(wǎng)絡(luò)相連接的。圖2:基于LVS的Web集群對(duì)于動(dòng)態(tài)頁面(如PHP、JSP和ASP等),需要訪問的動(dòng)態(tài)數(shù)據(jù)一般存儲(chǔ)在數(shù)據(jù)庫服務(wù)器中。數(shù)據(jù)庫服務(wù)運(yùn)行在獨(dú)立的服務(wù)器上,為所有Web服務(wù)器 共享。無論同一Web服務(wù)器上多個(gè)動(dòng)態(tài)頁面訪問同一數(shù)據(jù),還是不同Web服務(wù)器上多個(gè)動(dòng)態(tài)頁面訪問同一數(shù)據(jù),數(shù)據(jù)庫服務(wù)器有鎖機(jī)制使得這些訪問有序地進(jìn) 行,從而保證數(shù)據(jù)的一致性。對(duì)于靜態(tài)的頁面和文件(如HTML文檔和圖片等),可以存儲(chǔ)在網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng)中。至于選擇哪一種,看系統(tǒng)的規(guī)模和需求 而定。通過共享的網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng),Webmaster可以看到統(tǒng)一的文檔存儲(chǔ)空間,

16、維護(hù)和更新頁面比較方便,對(duì)共享存儲(chǔ)中頁面的修改對(duì)所 有的服務(wù)器都有效。在這種結(jié)構(gòu)下,當(dāng)所有服務(wù)器結(jié)點(diǎn)超載時(shí),管理員可以很快地加入新的服務(wù)器結(jié)點(diǎn)來處理請(qǐng)求,而無需將Web文檔等復(fù)制到結(jié)點(diǎn)的本地硬盤上。有些Web服務(wù)可能用到HTTP Cookie,它是將數(shù)據(jù)存儲(chǔ)在客戶的瀏覽器來追蹤和標(biāo)識(shí)客戶的機(jī)制。使用HTTP Cookie后,來同一客戶的不同連接存在相關(guān)性,這些連接必須被發(fā)送到同一Web服務(wù)器。一些Web服務(wù)使用安全的HTTPS協(xié)議,它是HTTP協(xié)議加 SSL(Secure Socket Layer)協(xié)議。另有些Web服務(wù)可能使用安全的HTTPS協(xié)議,它是HTTP協(xié)議加SSL協(xié)議。當(dāng)客戶訪問HT

17、TPS服務(wù)(HTTPS的缺省端口為 443)時(shí),會(huì)先建立一個(gè)SSL連接,來交換對(duì)稱公鑰加密的證書并協(xié)商一個(gè)SSL Key,來加密以后的會(huì)話。在SSL Key的生命周期內(nèi),后續(xù)的所有HTTPS連接都使用這個(gè)SSL Key,所以同一客戶的不同HTTPS連接也存在相關(guān)性。針對(duì)這些需要,IPVS調(diào)度器提供了持久服務(wù)的功能,它可以使得在設(shè)定的時(shí)間內(nèi),來自同一IP地 址的不同連接會(huì)被發(fā)送到集群中同一個(gè)服務(wù)器結(jié)點(diǎn),可以很好地解決客戶連接的相關(guān)性問題。4.可伸縮媒體服務(wù)基于LVS的媒體集群的體系結(jié)構(gòu)如圖3所示:第一層是負(fù)載調(diào)度器,一般采用IP負(fù)載均衡技術(shù),可以使得整個(gè)系統(tǒng)有較高的吞吐率;第二層是 Web服務(wù)器

18、池,在每個(gè)結(jié)點(diǎn)上可以運(yùn)行相應(yīng)的媒體服務(wù);第三層是共享存儲(chǔ),通過網(wǎng)絡(luò)文件系統(tǒng)/分布式文件系統(tǒng)存儲(chǔ)媒體節(jié)目。集群中各結(jié)點(diǎn)是通過高速網(wǎng)絡(luò)相 連接。圖3:基于LVS的媒體集群IPVS負(fù)載調(diào)度器一般使用直接路由方法(即VS/DR方法,將在以后文章中詳細(xì)敘述),來架構(gòu)媒體集群系統(tǒng)。調(diào)度器將媒體服務(wù)請(qǐng)求較均衡地分發(fā)到 各個(gè)服務(wù)器上,而媒體服務(wù)器將響應(yīng)數(shù)據(jù)直接返回給客戶,這樣可以使得整個(gè)媒體集群系統(tǒng)具有很好的伸縮性。媒體服務(wù)器可以運(yùn)行各種媒體服務(wù)軟件。目前,LVS集群對(duì)于Real Media、Windows Media和Apple Quicktime媒體服務(wù)都有很好的支持,都有真實(shí)的系統(tǒng)在運(yùn)行。一般來說,流媒

19、體服務(wù)都會(huì)使用一個(gè)TCP連接(如RTSP協(xié)議:Real-Time Streaming Protocol)進(jìn)行帶寬的協(xié)商和流速的控制,通過UDP將流數(shù)據(jù)返回客戶。這里,IPVS調(diào)度器提供功能將TCP和UDP集中考慮,保證來自同一客戶 的媒體TCP和UDP連接會(huì)被轉(zhuǎn)發(fā)到集群中同一臺(tái)媒體服務(wù)器,使得媒體服務(wù)準(zhǔn)確無誤地進(jìn)行。共享存儲(chǔ)是媒體集群系統(tǒng)中最關(guān)鍵的問題,因?yàn)槊襟w文件往往非常大(一部片子需要幾百兆到幾千兆的存儲(chǔ)空間),這對(duì)存儲(chǔ)的容量和讀的速度 有較高的要求。對(duì)于規(guī)模較小的媒體集群系統(tǒng),例如有3至6個(gè)媒體服務(wù)器結(jié)點(diǎn),存儲(chǔ)系統(tǒng)可以考慮用帶千兆網(wǎng)卡的Linux服務(wù)器,使用軟件RAID和日志型 文件系統(tǒng)

20、,再運(yùn)行內(nèi)核的NFS服務(wù),會(huì)有不錯(cuò)的效果。對(duì)于規(guī)模較大的媒體集群系統(tǒng),最好選擇對(duì)文件分段(File Stripping)存儲(chǔ)和文件緩存有較好支持的分布式文件系統(tǒng);媒體文件分段存儲(chǔ)在分布式文件系統(tǒng)的多個(gè)存儲(chǔ)結(jié)點(diǎn)上,可以提高文件系統(tǒng)的性能和存儲(chǔ)結(jié)點(diǎn) 間的負(fù)載均衡;媒體文件在媒體服務(wù)器上自動(dòng)地被緩存,可提高文件的訪問速度。否則,可以考慮自己在媒體服務(wù)器上開發(fā)相應(yīng)的工具,如緩存工具能定時(shí)地統(tǒng)計(jì)出 最近的熱點(diǎn)媒體文件,將熱點(diǎn)文件復(fù)制到本地硬盤上,并替換緩存中的非熱點(diǎn)文件,最后通知其他媒體服務(wù)器結(jié)點(diǎn)它所緩存的媒體文件以及負(fù)載情況;在媒體服務(wù)器 上有應(yīng)用層調(diào)度工具,它收到客戶的媒體服務(wù)請(qǐng)求,若所請(qǐng)求的媒體文

21、件緩存在本地硬盤上,則直接轉(zhuǎn)給本地媒體服務(wù)進(jìn)程服務(wù),否則先考慮該文件是否被其他媒體 服務(wù)器緩存;如該文件被其他服務(wù)器緩存并且該服務(wù)器不忙,則將請(qǐng)求轉(zhuǎn)給該服務(wù)器上的媒體服務(wù)進(jìn)程處理,否則直接轉(zhuǎn)給本地媒體服務(wù)進(jìn)程,從后端的共享存儲(chǔ)中 讀出媒體文件。共享存儲(chǔ)的好處是媒體文件的管理人員看到統(tǒng)一的存儲(chǔ)空間,使得媒體文件維護(hù)工作比較方便。當(dāng)客戶訪問不斷增加使得整個(gè)系統(tǒng)超載時(shí),管理員可以很快地加入新的媒體服務(wù)器結(jié)點(diǎn)來處理請(qǐng)求。Real公司以其高壓縮比的音頻視頻格式、Real媒體服務(wù)器和媒體播放器RealPlayer而聞名。Real公司正在使用以上結(jié)構(gòu)將由 20多臺(tái)服務(wù)器組成的LVS可伸縮Web和媒體集群,為

22、其全球用戶提供Web和音頻視頻服務(wù)。Real公司的高級(jí)技術(shù)主管聲稱LVS擊敗所有他們嘗試過的 商品化負(fù)載均衡產(chǎn)品7。5.可伸縮Cache服務(wù)有效的網(wǎng)絡(luò)Cache系統(tǒng)可以大大地減少網(wǎng)絡(luò)流量、降低響應(yīng)延時(shí)以及服務(wù)器的負(fù)載。但是,若Cache服務(wù)器超載而不能及時(shí)地處理請(qǐng)求,反 而會(huì)增加響應(yīng)延時(shí)。所以,Cache服務(wù)的可伸縮性很重要,當(dāng)系統(tǒng)負(fù)載不斷增長(zhǎng)時(shí),整個(gè)系統(tǒng)能被擴(kuò)展來提高Cache服務(wù)的處理能力。尤其,在主干網(wǎng)上的 Cache服務(wù)可能需要幾個(gè)Gbps的吞吐率,單臺(tái)服務(wù)器(例如SUN目前最高端的Enterprise 10000服務(wù)器)遠(yuǎn)不能達(dá)到這個(gè)吞吐率??梢姡ㄟ^PC服務(wù)器集群實(shí)現(xiàn)可伸縮Cach

23、e服務(wù)是很有效的方法,也是性能價(jià)格比最高的方法。基于LVS的Cache集群的體系結(jié)構(gòu)如圖4所示:第一層是負(fù)載調(diào)度器,一般采用IP負(fù)載均衡技術(shù),可以使得整個(gè)系統(tǒng)有較高的吞吐率; 第二層是Cache服務(wù)器池,一般Cache服務(wù)器放置在接近主干Internet連接處,它們可以分布在不同的網(wǎng)絡(luò)中。調(diào)度器可以有多個(gè),放在離客戶接 近的地方。圖4:基于LVS的Cache集群IPVS負(fù)載調(diào)度器一般使用IP隧道方法(即VS/TUN方法,將在以后文章中詳細(xì)敘述),來架構(gòu)Cache集群系統(tǒng),因?yàn)镃ache服務(wù)器可能被 放置不同的地方(例如在接近主干Internet連接處),而調(diào)度器與Cache服務(wù)器池可能不在同一

24、個(gè)物理網(wǎng)絡(luò)中。采用VS/TUN方法,調(diào)度器只調(diào)度 Web Cache請(qǐng)求,而Cache服務(wù)器將響應(yīng)數(shù)據(jù)直接返回給客戶。在請(qǐng)求對(duì)象不能在本地命中的情況下,Cache服務(wù)器要向源服務(wù)器發(fā)請(qǐng)求,將結(jié)果取回,最 后將結(jié)果返回給客戶;若采用NAT技術(shù)的商品化調(diào)度器,需要四次進(jìn)出調(diào)度器,完成這個(gè)請(qǐng)求。而用VS/TUN方法(或者VS/DR方法),調(diào)度器只調(diào)度一 次請(qǐng)求,其他三次都由Cache服務(wù)器直接訪問Internet完成。所以,這種方法對(duì)Cache集群系統(tǒng)特別有效。Cache服務(wù)器采用本地硬盤來存儲(chǔ)可緩存的對(duì)象,因?yàn)榇鎯?chǔ)可緩存的對(duì)象是寫操作,且占有一定的比例,通過本地硬盤可以提高I/O的訪 問速度。Ca

25、che服務(wù)器間有專用的多播通道(Multicast Channel),通過ICP協(xié)議(Internet Cache Protocol)來交互信息。當(dāng)一臺(tái)Cache服務(wù)器在本地硬盤中未命中當(dāng)前請(qǐng)求時(shí),它可以通過ICP查詢其他Cache服務(wù)器是否有請(qǐng)求對(duì)象的副本, 若存在,則從鄰近的Cache服務(wù)器取該對(duì)象的副本,這樣可以進(jìn)一步提高Cache服務(wù)的命中率。為150多所大學(xué)和地區(qū)服務(wù)的英國(guó)國(guó)家JANET Web Cache網(wǎng)在1999年11月用以上LVS結(jié)構(gòu)實(shí)現(xiàn)可伸縮的Cache集群8,只用了原有50多臺(tái)相互獨(dú)立Cache服務(wù)器的一半,用戶反映網(wǎng)絡(luò)速 度跟夏天一樣快(學(xué)生放暑假)。可見,通過負(fù)載調(diào)度

26、可以摸平單臺(tái)服務(wù)器訪問的毛刺(Burst),提高整個(gè)系統(tǒng)的資源利用率。6.可伸縮郵件服務(wù)隨著Internet用戶不斷增長(zhǎng),很多ISP面臨他們郵件服務(wù)器超載的問題。當(dāng)郵件服務(wù)器不能容納更多的用戶帳號(hào)時(shí),有些ISP買更高檔 的服務(wù)器來代替原有的,將原有服務(wù)器的信息(如用戶郵件)遷移到新服務(wù)器是很繁瑣的工作,會(huì)造成服務(wù)的中斷;有些ISP設(shè)置新的服務(wù)器和新的郵件域名,新 的郵件用戶放置在新的服務(wù)器上,如上海電信現(xiàn)在用不同的郵件服務(wù)器、到 放置用戶的郵件帳號(hào),這樣靜態(tài)地將用戶分割到不同的服務(wù)器上,會(huì)造成郵件服務(wù)器負(fù)載不平衡,系統(tǒng)的資源利用率低,對(duì) 用戶來說郵件的地址比較難記。圖5:基于LVS的可伸縮郵件

27、集群可以利用LVS框架實(shí)現(xiàn)高可伸縮、高可用的郵件服務(wù)系統(tǒng)。它的體系結(jié)構(gòu)如圖5所示:在前端是一個(gè)采用IP負(fù)載均衡技術(shù)的負(fù)載調(diào)度器;第二層 是服務(wù)器池,有LDAP(Light-weight Directory Access Protocol)服務(wù)器和一組郵件服務(wù)器。第三層是數(shù)據(jù)存儲(chǔ),通過分布式文件系統(tǒng)來存儲(chǔ)用戶的郵件。集群中各結(jié)點(diǎn)是通過高速網(wǎng)絡(luò)相連接。用戶的信息如用戶名、口令、主目錄和郵件容量限額等存儲(chǔ)在LDAP服務(wù)器中,可以通過HTTPS讓管理員進(jìn)行用戶管理。在各個(gè)郵件服務(wù) 器上運(yùn)行SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Prot

28、ocol version 3)、IMAP4(Internet Message Access Protocol version 4)和HTTP/HTTPS服務(wù)。SMTP接受和轉(zhuǎn)發(fā)用戶的郵件,SMTP服務(wù)進(jìn)程查詢LDAP服務(wù)器獲得用戶信息,再存儲(chǔ)郵件。POP3和IMAP4通 過LDAP服務(wù)器獲得用戶信息,口令驗(yàn)證后,處理用戶的郵件訪問請(qǐng)求。這里,需要有機(jī)制避免不同服務(wù)器上的SMTP、POP3和IMAP4服務(wù)進(jìn)程對(duì)用戶 郵件的讀寫沖突。HTTP/HTTPS服務(wù)是讓用戶通過瀏覽器可以訪問郵件。IPVS調(diào)度器將SMTP、POP3、IMAP4和HTTP/HTTPS請(qǐng)求流負(fù)載較均衡地分發(fā)到各郵件服務(wù)器上,從

29、上面各服務(wù)的處理 流程來看,不管請(qǐng)求被發(fā)送到哪一臺(tái)郵件服務(wù)器處理,其結(jié)果是一樣的。這里,將SMTP、POP3、IMAP4和HTTP/HTTPS運(yùn)行在各個(gè)郵件服務(wù)器 上進(jìn)行集中調(diào)度,有利于提高整個(gè)系統(tǒng)的資源利用率。系統(tǒng)中可能的瓶頸是LDAP服務(wù)器,對(duì)LDAP服務(wù)中B+樹的參數(shù)進(jìn)行優(yōu)化,再結(jié)合高端的服務(wù)器,可以獲得較高的性能。若分布式文件系 統(tǒng)沒有多個(gè)存儲(chǔ)結(jié)點(diǎn)間的負(fù)載均衡機(jī)制,則需要相應(yīng)的郵件遷移機(jī)制來避免郵件訪問的傾斜。這樣,這個(gè)集群系統(tǒng)對(duì)用戶來說就像一個(gè)高性能、高可靠的郵件服務(wù)器(例如上海電信只要用一個(gè)郵件域名 就可以)。當(dāng)郵件用戶不斷增長(zhǎng)時(shí),只要在集群中增加服務(wù)器結(jié)點(diǎn)和存儲(chǔ)結(jié)點(diǎn)。用戶信息的集

30、中存儲(chǔ)使得用戶管理變得容易, 且集群系統(tǒng)有利于提高資源利用率。7.小結(jié)本文給出LVS集群的通用體系結(jié)構(gòu),并討論了它的設(shè)計(jì)原則和相應(yīng)的特點(diǎn);最后將LVS集群應(yīng)用于建立可伸縮的Web、Media、 Cache和Mail網(wǎng)絡(luò)服務(wù),并指出了系統(tǒng)架設(shè)時(shí)應(yīng)注意的要點(diǎn)。我們將在后續(xù)的文章中詳細(xì)解釋LVS集群的技術(shù)、實(shí)現(xiàn)和應(yīng)用。Linux服務(wù)器集群系統(tǒng)(三)LVS集群中的IP負(fù)載均衡技術(shù)本文在分析服務(wù)器集群實(shí)現(xiàn)虛擬網(wǎng)絡(luò)服務(wù)的相關(guān)技術(shù)上,詳細(xì)描述了LVS集群中實(shí)現(xiàn)的三種IP負(fù)載均衡技術(shù)(VS/NAT、VS/TUN和VS/DR)的工作原理,以及它們的優(yōu)缺點(diǎn)。1.前言在 前面文章中,講述了可伸縮網(wǎng)絡(luò)服務(wù)的幾種結(jié)構(gòu),

31、它們都需要一個(gè)前端的負(fù)載調(diào)度器(或者多個(gè)進(jìn)行主從備份)。我們先分析實(shí)現(xiàn)虛擬網(wǎng)絡(luò)服務(wù)的主要技術(shù),指出 IP負(fù)載均衡技術(shù)是在負(fù)載調(diào)度器的實(shí)現(xiàn)技術(shù)中效率最高的。在已有的IP負(fù)載均衡技術(shù)中,主要有通過網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation)將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器,我們稱之為VS/NAT技術(shù)(Virtual Server via Network Address Translation)。在分析VS/NAT的缺點(diǎn)和網(wǎng)絡(luò)服務(wù)的非對(duì)稱性的基礎(chǔ)上,我們提出了通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器的方法VS/TUN (Virtual Server via IP Tunn

32、eling),和通過直接路由實(shí)現(xiàn)虛擬服務(wù)器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統(tǒng)的伸縮性。VS/NAT、VS/TUN和VS/DR技術(shù)是LVS集群中實(shí)現(xiàn)的三種IP負(fù)載均衡技術(shù),我們將在文 章中詳細(xì)描述它們的工作原理和各自的優(yōu)缺點(diǎn)。在以下描述中,我們稱客戶的socket和服務(wù)器的socket之間的數(shù)據(jù)通訊為連接,無論它們是使用TCP還是UDP協(xié)議。下面簡(jiǎn)述當(dāng)前用服務(wù)器集群實(shí)現(xiàn)高可伸縮、高可用網(wǎng)絡(luò)服務(wù)的幾種負(fù)載調(diào)度方法,并列舉幾個(gè)在這方面有代表性的研究項(xiàng)目。2.實(shí)現(xiàn)虛擬服務(wù)的相關(guān)方法在網(wǎng)絡(luò)服務(wù)中,一端是客戶程序,另一端是服務(wù)程序

33、,在中間可能有代理程序。由此看來,可以在不同的層次上實(shí)現(xiàn)多臺(tái)服務(wù)器的負(fù)載均衡。用集群解決網(wǎng)絡(luò)服務(wù)性能問題的現(xiàn)有方法主要分為以下四類。2.1. 基于RR-DNS的解決方法NCSA的可伸縮的WEB服務(wù)器系統(tǒng)就是最早基于RR-DNS(Round-Robin Domain Name System)的原型系統(tǒng)1,2。它的結(jié)構(gòu)和工作流程如下圖所示:圖1:基于RR-DNS的可伸縮WEB服務(wù)器(注:本圖來自文獻(xiàn)【9】)有 一組WEB服務(wù)器,他們通過分布式文件系統(tǒng)AFS(Andrew File System)來共享所有的HTML文檔。這組服務(wù)器擁有相同的域名(如),當(dāng)用戶按照這個(gè)域名訪問時(shí), RR-DNS服務(wù)器

34、會(huì)把域名輪流解析到這組服務(wù)器的不同IP地址,從而將訪問負(fù)載分到各臺(tái)服務(wù)器上。這種方法帶來幾個(gè)問題。第一,域名服務(wù) 器是一個(gè)分布式系統(tǒng),是按照一定的層次結(jié)構(gòu)組織的。當(dāng)用戶就域名解析請(qǐng)求提交給本地的域名服務(wù)器,它會(huì)因不能直接解析而向上一級(jí)域名服務(wù)器提交,上一級(jí)域 名服務(wù)器再依次向上提交,直到RR-DNS域名服器把這個(gè)域名解析到其中一臺(tái)服務(wù)器的IP地址。可見,從用戶到RR-DNS間存在多臺(tái)域名服器,而它們都 會(huì)緩沖已解析的名字到IP地址的映射,這會(huì)導(dǎo)致該域名服器組下所有用戶都會(huì)訪問同一WEB服務(wù)器,出現(xiàn)不同WEB服務(wù)器間嚴(yán)重的負(fù)載不平衡。為了保證在域 名服務(wù)器中域名到IP地址的映射不被長(zhǎng)久緩沖,RR

35、-DNS在域名到IP地址的映射上設(shè)置一個(gè)TTL(Time To Live)值,過了這一段時(shí)間,域名服務(wù)器將這個(gè)映射從緩沖中淘汰。當(dāng)用戶請(qǐng)求,它會(huì)再向上一級(jí)域名服器提交請(qǐng)求并進(jìn)行重新影射。這就涉及到如何設(shè)置這個(gè) TTL值,若這個(gè)值太大,在這個(gè)TTL期間,很多請(qǐng)求會(huì)被映射到同一臺(tái)WEB服務(wù)器上,同樣會(huì)導(dǎo)致嚴(yán)重的負(fù)載不平衡。若這個(gè)值太小,例如是,會(huì)導(dǎo)致本地 域名服務(wù)器頻繁地向RR-DNS提交請(qǐng)求,增加了域名解析的網(wǎng)絡(luò)流量,同樣會(huì)使RR-DNS服務(wù)器成為系統(tǒng)中一個(gè)新的瓶頸。第二,用戶機(jī)器 會(huì)緩沖從名字到IP地址的映射,而不受TTL值的影響,用戶的訪問請(qǐng)求會(huì)被送到同一臺(tái)WEB服務(wù)器上。由于用戶訪問請(qǐng)求的

36、突發(fā)性和訪問方式不同,例如有的 人訪問一下就離開了,而有的人訪問可長(zhǎng)達(dá)幾個(gè)小時(shí),所以各臺(tái)服務(wù)器間的負(fù)載仍存在傾斜(Skew)而不能控制。假設(shè)用戶在每個(gè)會(huì)話中平均請(qǐng)求數(shù)為20,負(fù) 載最大的服務(wù)器獲得的請(qǐng)求數(shù)額高于各服務(wù)器平均請(qǐng)求數(shù)的平均比率超過百分之三十。也就是說,當(dāng)TTL值為0時(shí),因?yàn)橛脩粼L問的突發(fā)性也會(huì)存在著較嚴(yán)重的負(fù) 載不平衡。第三,系統(tǒng)的可靠性和可維護(hù)性差。若一臺(tái)服務(wù)器失效,會(huì)導(dǎo)致將域名解析到該服務(wù)器的用戶看到服務(wù)中斷,即使用戶按 “Reload”按鈕,也無濟(jì)于事。系統(tǒng)管理員也不能隨時(shí)地將一臺(tái)服務(wù)器切出服務(wù)進(jìn)行系統(tǒng)維護(hù),如進(jìn)行操作系統(tǒng)和應(yīng)用軟件升級(jí),這需要修改RR-DNS服 務(wù)器中的IP

37、地址列表,把該服務(wù)器的IP地址從中劃掉,然后等上幾天或者更長(zhǎng)的時(shí)間,等所有域名服器將該域名到這臺(tái)服務(wù)器的映射淘汰,和所有映射到這臺(tái)服 務(wù)器的客戶機(jī)不再使用該站點(diǎn)為止。2.2. 基于客戶端的解決方法基 于客戶端的解決方法需要每個(gè)客戶程序都有一定的服務(wù)器集群的知識(shí),進(jìn)而把以負(fù)載均衡的方式將請(qǐng)求發(fā)到不同的服務(wù)器。例如,Netscape Navigator瀏覽器訪問Netscape的主頁時(shí),它會(huì)隨機(jī)地從一百多臺(tái)服務(wù)器中挑選第N臺(tái),最后將請(qǐng)求送往wwwN.。 然而,這不是很好的解決方法,Netscape只是利用它的Navigator避免了RR-DNS解析的麻煩,當(dāng)使用IE等其他瀏覽器不可避免的要進(jìn)行 R

38、R-DNS解析。Smart Client3是Berkeley做的另一種基于客戶端的解決方法。服務(wù)提供一個(gè)Java Applet在客戶方瀏覽器中運(yùn)行,Applet向各個(gè)服務(wù)器發(fā)請(qǐng)求來收集服務(wù)器的負(fù)載等信息,再根據(jù)這些信息將客戶的請(qǐng)求發(fā)到相應(yīng)的服務(wù)器。高可用性也 在Applet中實(shí)現(xiàn),當(dāng)服務(wù)器沒有響應(yīng)時(shí),Applet向另一個(gè)服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求。這種方法的透明性不好,Applet向各服務(wù)器查詢來收集信息會(huì)增加額 外的網(wǎng)絡(luò)流量,不具有普遍的適用性。2.3. 基于應(yīng)用層負(fù)載均衡調(diào)度的解決方法多 臺(tái)服務(wù)器通過高速的互聯(lián)網(wǎng)絡(luò)連接成一個(gè)集群系統(tǒng),在前端有一個(gè)基于應(yīng)用層的負(fù)載調(diào)度器。當(dāng)用戶訪問請(qǐng)求到達(dá)調(diào)度器時(shí),請(qǐng)求

39、會(huì)提交給作負(fù)載均衡調(diào)度的應(yīng)用程 序,分析請(qǐng)求,根據(jù)各個(gè)服務(wù)器的負(fù)載情況,選出一臺(tái)服務(wù)器,重寫請(qǐng)求并向選出的服務(wù)器訪問,取得結(jié)果后,再返回給用戶。應(yīng)用層負(fù)載均衡調(diào)度 的典型代表有Zeus負(fù)載調(diào)度器4、pWeb5、Reverse-Proxy6和SWEB7等。Zeus負(fù)載調(diào)度器是Zeus公司的商業(yè) 產(chǎn)品,它是在Zeus Web服務(wù)器程序改寫而成的,采用單進(jìn)程事件驅(qū)動(dòng)的服務(wù)器結(jié)構(gòu)。pWeb就是一個(gè)基于Apache 1.1服務(wù)器程序改寫而成的并行WEB調(diào)度程序,當(dāng)一個(gè)HTTP請(qǐng)求到達(dá)時(shí),pWeb會(huì)選出一個(gè)服務(wù)器,重寫請(qǐng)求并向這個(gè)服務(wù)器發(fā)出改寫后的請(qǐng)求,等結(jié)果 返回后,再將結(jié)果轉(zhuǎn)發(fā)給客戶。Reverse-

40、Proxy利用Apache 1.3.1中的Proxy模塊和Rewrite模塊實(shí)現(xiàn)一個(gè)可伸縮WEB服務(wù)器,它與pWeb的不同之處在于它要先從Proxy的cache中查找后,若 沒有這個(gè)副本,再選一臺(tái)服務(wù)器,向服務(wù)器發(fā)送請(qǐng)求,再將服務(wù)器返回的結(jié)果轉(zhuǎn)發(fā)給客戶。SWEB是利用HTTP中的redirect錯(cuò)誤代碼,將客戶請(qǐng)求到 達(dá)一臺(tái)WEB服務(wù)器后,這個(gè)WEB服務(wù)器根據(jù)自己的負(fù)載情況,自己處理請(qǐng)求,或者通過redirect錯(cuò)誤代碼將客戶引到另一臺(tái)WEB服務(wù)器,以實(shí)現(xiàn)一個(gè) 可伸縮的WEB服務(wù)器?;趹?yīng)用層負(fù)載均衡調(diào)度的多服務(wù)器解決方法也存在一些問題。第一,系統(tǒng)處理開銷特別大,致使系統(tǒng)的伸縮性有限。當(dāng)請(qǐng) 求

41、到達(dá)負(fù)載均衡調(diào)度器至處理結(jié)束時(shí),調(diào)度器需要進(jìn)行四次從核心到用戶空間或從用戶空間到核心空間的上下文切換和內(nèi)存復(fù)制;需要進(jìn)行二次TCP連接,一次是 從用戶到調(diào)度器,另一次是從調(diào)度器到真實(shí)服務(wù)器;需要對(duì)請(qǐng)求進(jìn)行分析和重寫。這些處理都需要不小的、內(nèi)存和網(wǎng)絡(luò)等資源開銷,且處理時(shí)間長(zhǎng)。所構(gòu)成系 統(tǒng)的性能不能接近線性增加的,一般服務(wù)器組增至3或4臺(tái)時(shí),調(diào)度器本身可能會(huì)成為新的瓶頸。所以,這種基于應(yīng)用層負(fù)載均衡調(diào)度的方法的伸縮性極其有限。第 二,基于應(yīng)用層的負(fù)載均衡調(diào)度器對(duì)于不同的應(yīng)用,需要寫不同的調(diào)度器。以上幾個(gè)系統(tǒng)都是基于HTTP協(xié)議,若對(duì)于FTP、Mail、POP3等應(yīng)用,都需 要重寫調(diào)度器。2.4.

42、基于IP層負(fù)載均衡調(diào)度的解決方法用 戶通過虛擬IP地址(Virtual IP Address)訪問服務(wù)時(shí),訪問請(qǐng)求的報(bào)文會(huì)到達(dá)負(fù)載調(diào)度器,由它進(jìn)行負(fù)載均衡調(diào)度,從一組真實(shí)服務(wù)器選出一個(gè),將報(bào)文的目標(biāo)地址Virtual IP Address改寫成選定服務(wù)器的地址,報(bào)文的目標(biāo)端口改寫成選定服務(wù)器的相應(yīng)端口,最后將報(bào)文發(fā)送給選定的服務(wù)器。真實(shí)服務(wù)器的回應(yīng)報(bào)文經(jīng)過負(fù)載調(diào)度器 時(shí),將報(bào)文的源地址和源端口改為Virtual IP Address和相應(yīng)的端口,再把報(bào)文發(fā)給用戶。Berkeley的MagicRouter8、Cisco的LocalDirector、 Alteon的ACEDirector和F5的B

43、ig/IP等都是使用網(wǎng)絡(luò)地址轉(zhuǎn)換方法。MagicRouter是在Linux 1.3版本上應(yīng)用快速報(bào)文插入技術(shù),使得進(jìn)行負(fù)載均衡調(diào)度的用戶進(jìn)程訪問網(wǎng)絡(luò)設(shè)備接近核心空間的速度,降低了上下文切換的處理開銷,但并不徹底,它只是研 究的原型系統(tǒng),沒有成為有用的系統(tǒng)存活下來。Cisco的LocalDirector、Alteon的ACEDirector和F5的Big/IP是非常 昂貴的商品化系統(tǒng),它們支持部分TCP/UDP協(xié)議,有些在ICMP處理上存在問題。IBM的TCP Router9使用修改過的網(wǎng)絡(luò)地址轉(zhuǎn)換方法在SP/2系統(tǒng)實(shí)現(xiàn)可伸縮的WEB服務(wù)器。TCP Router修改請(qǐng)求報(bào)文的目標(biāo)地址并把它轉(zhuǎn)發(fā)給

44、選出的服務(wù)器,服務(wù)器能把響應(yīng)報(bào)文的源地址置為TCP Router地址而非自己的地址。這種方法的好處是響應(yīng)報(bào)文可以直接返回給客戶,壞處是每臺(tái)服務(wù)器的操作系統(tǒng)內(nèi)核都需要修改。IBM的 NetDispatcher10是TCP Router的后繼者,它將報(bào)文轉(zhuǎn)發(fā)給服務(wù)器,而服務(wù)器在non-ARP的設(shè)備配置路由器的地址。這種方法與LVS集群中的VS/DR類似,它具有很高的 可伸縮性,但一套在IBM SP/2和NetDispatcher需要上百萬美金??偟膩碚f,IBM的技術(shù)還挺不錯(cuò)的。在貝爾實(shí)驗(yàn)室的 ONE-IP11中,每臺(tái)服務(wù)器都獨(dú)立的IP地址,但都用IP Alias配置上同一VIP地址,采用路由和廣播

45、兩種方法分發(fā)請(qǐng)求,服務(wù)器收到請(qǐng)求后按VIP地址處理請(qǐng)求,并以VIP為源地址返回結(jié)果。這種方法也是為 了避免回應(yīng)報(bào)文的重寫,但是每臺(tái)服務(wù)器用IP Alias配置上同一VIP地址,會(huì)導(dǎo)致地址沖突,有些操作系統(tǒng)會(huì)出現(xiàn)網(wǎng)絡(luò)失效。通過廣播分發(fā)請(qǐng)求,同樣需要修改服務(wù)器操作系統(tǒng)的源碼來過濾報(bào)文,使得只 有一臺(tái)服務(wù)器處理廣播來的請(qǐng)求。微軟的Windows NT負(fù)載均衡服務(wù)(Windows NT Load Balancing Service,WLBS)12是1998年底收購(gòu)Valence Research公司獲得的,它與ONE-IP中的基于本地過濾方法一樣。WLBS作為過濾器運(yùn)行在網(wǎng)卡驅(qū)動(dòng)程序和TCP/IP協(xié)議

46、棧之間,獲得目標(biāo)地址 為VIP的報(bào)文,它的過濾算法檢查報(bào)文的源IP地址和端口號(hào),保證只有一臺(tái)服務(wù)器將報(bào)文交給上一層處理。但是,當(dāng)有新結(jié)點(diǎn)加入和有結(jié)點(diǎn)失效時(shí),所有服務(wù)器 需要協(xié)商一個(gè)新的過濾算法,這會(huì)導(dǎo)致所有有Session的連接中斷。同時(shí),WLBS需要所有的服務(wù)器有相同的配置,如網(wǎng)卡速度和處理能力。3. 通過NAT實(shí)現(xiàn)虛擬服務(wù)器(VS/NAT)由 于IPv4中IP地址空間的日益緊張和安全方面的原因,很多網(wǎng)絡(luò)使用保留IP地址(/、 /和/)64, 65, 66。這些地址不在Internet上使用,而是專門為內(nèi)部網(wǎng)絡(luò)預(yù)留的。當(dāng)內(nèi)部網(wǎng)絡(luò)中的主機(jī)要訪問Internet或被Internet訪問時(shí),就需要

47、 采用網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, 以下簡(jiǎn)稱NAT),將內(nèi)部地址轉(zhuǎn)化為Internets上可用的外部地址。NAT的工作原理是報(bào)文頭(目標(biāo)地址、源地址和端口等)被正確改寫后,客戶相信 它們連接一個(gè)IP地址,而不同IP地址的服務(wù)器組也認(rèn)為它們是與客戶直接相連的。由此,可以用NAT方法將不同IP地址的并行網(wǎng)絡(luò)服務(wù)變成在一個(gè)IP地址 上的一個(gè)虛擬服務(wù)。VS/NAT的體系結(jié)構(gòu)如圖2所示。在一組服務(wù)器前有一個(gè)調(diào)度器,它們是通過Switch/HUB相連接的。這些服務(wù)器 提供相同的網(wǎng)絡(luò)服務(wù)、相同的內(nèi)容,即不管請(qǐng)求被發(fā)送到哪一臺(tái)服務(wù)器,執(zhí)行結(jié)果是一樣的。服務(wù)的內(nèi)容可以復(fù)

48、制到每臺(tái)服務(wù)器的本地硬盤上,可以通過網(wǎng)絡(luò)文件系 統(tǒng)(如NFS)共享,也可以通過一個(gè)分布式文件系統(tǒng)來提供。圖2:VS/NAT的體系結(jié)構(gòu)客 戶通過Virtual IP Address(虛擬服務(wù)的IP地址)訪問網(wǎng)絡(luò)服務(wù)時(shí),請(qǐng)求報(bào)文到達(dá)調(diào)度器,調(diào)度器根據(jù)連接調(diào)度算法從一組真實(shí)服務(wù)器中選出一臺(tái)服務(wù)器,將報(bào)文的目標(biāo)地址 Virtual IP Address改寫成選定服務(wù)器的地址,報(bào)文的目標(biāo)端口改寫成選定服務(wù)器的相應(yīng)端口,最后將修改后的報(bào)文發(fā)送給選出的服務(wù)器。同時(shí),調(diào)度器在連接Hash 表中記錄這個(gè)連接,當(dāng)這個(gè)連接的下一個(gè)報(bào)文到達(dá)時(shí),從連接Hash表中可以得到原選定服務(wù)器的地址和端口,進(jìn)行同樣的改寫操作,并

49、將報(bào)文傳給原選定的服務(wù) 器。當(dāng)來自真實(shí)服務(wù)器的響應(yīng)報(bào)文經(jīng)過調(diào)度器時(shí),調(diào)度器將報(bào)文的源地址和源端口改為Virtual IP Address和相應(yīng)的端口,再把報(bào)文發(fā)給用戶。我們?cè)谶B接上引入一個(gè)狀態(tài)機(jī),不同的報(bào)文會(huì)使得連接處于不同的狀態(tài),不同的狀態(tài)有不同的超時(shí)值。在TCP 連接中,根據(jù)標(biāo)準(zhǔn)的TCP有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移,這里我們不一一敘述,請(qǐng)參見W. Richard Stevens的TCP/IP Illustrated Volume I;在UDP中,我們只設(shè)置一個(gè)UDP狀態(tài)。不同狀態(tài)的超時(shí)值是可以設(shè)置的,在缺省情況下,SYN狀態(tài)的超時(shí)為1分鐘,ESTABLISHED狀態(tài)的超 時(shí)為15分鐘,F(xiàn)IN狀態(tài)

50、的超時(shí)為1分鐘;UDP狀態(tài)的超時(shí)為5分鐘。當(dāng)連接終止或超時(shí),調(diào)度器將這個(gè)連接從連接Hash表中刪除。這樣,客戶所看到的只是在Virtual IP Address上提供的服務(wù),而服務(wù)器集群的結(jié)構(gòu)對(duì)用戶是透明的。對(duì)改寫后的報(bào)文,應(yīng)用增量調(diào)整Checksum的算法調(diào)整TCP Checksum的值,避免了掃描整個(gè)報(bào)文來計(jì)算Checksum的開銷。在 一些網(wǎng)絡(luò)服務(wù)中,它們將IP地址或者端口號(hào)在報(bào)文的數(shù)據(jù)中傳送,若我們只對(duì)報(bào)文頭的IP地址和端口號(hào)作轉(zhuǎn)換,這樣就會(huì)出現(xiàn)不一致性,服務(wù)會(huì)中斷。所以,針 對(duì)這些服務(wù),需要編寫相應(yīng)的應(yīng)用模塊來轉(zhuǎn)換報(bào)文數(shù)據(jù)中的IP地址或者端口號(hào)。我們所知道有這個(gè)問題的網(wǎng)絡(luò)服務(wù)有FTP

51、、IRC、H.323、 CUSeeMe、Real Audio、Real Video、Vxtreme / Vosiac、VDOLive、VIVOActive、True Speech、RSTP、PPTP、StreamWorks、NTT AudioLink、NTT SoftwareVision、Yamaha MIDPlug、iChat Pager、Quake和Diablo。下面,舉個(gè)例子來進(jìn)一步說明VS/NAT,如圖3所示:圖3:VS/NAT的例子VS/NAT 的配置如下表所示,所有到IP地址為和端口為80的流量都被負(fù)載均衡地調(diào)度的真實(shí)服務(wù)器:80和 :8000上。目標(biāo)地址為:21的報(bào)文被轉(zhuǎn)移到:2

52、1上。而到其他端口的報(bào)文將被拒 絕。ProtocolVirtual IP AddressPortReal IP AddressPortWeightTCP8080180002TCP21211從以下的例子中,我們可以更詳細(xì)地了解報(bào)文改寫的流程。訪問Web服務(wù)的報(bào)文可能有以下的源地址和目標(biāo)地址:SOURCE:3456DEST:80調(diào)度器從調(diào)度列表中選出一臺(tái)服務(wù)器,例如是:8000。該報(bào)文會(huì)被改寫為如下地址,并將它發(fā)送給選出的服務(wù)器。SOURCE:3456DEST:8000從服務(wù)器返回到調(diào)度器的響應(yīng)報(bào)文如下:SOURCE:8000DEST:3456響應(yīng)報(bào)文的源地址會(huì)被改寫為虛擬服務(wù)的地址,再將報(bào)文發(fā)送

53、給客戶:SOURCE:80DEST:3456這樣,客戶認(rèn)為是從:80服務(wù)得到正確的響應(yīng),而不會(huì)知道該請(qǐng)求是服務(wù)器還是服務(wù)器處理的。4. 通過IP隧道實(shí)現(xiàn)虛擬服務(wù)器(VS/TUN)在VS/NAT 的集群系統(tǒng)中,請(qǐng)求和響應(yīng)的數(shù)據(jù)報(bào)文都需要通過負(fù)載調(diào)度器,當(dāng)真實(shí)服務(wù)器的數(shù)目在10臺(tái)和20臺(tái)之間時(shí),負(fù)載調(diào)度器將成為整個(gè)集群系統(tǒng)的新瓶頸。大多數(shù) Internet服務(wù)都有這樣的特點(diǎn):請(qǐng)求報(bào)文較短而響應(yīng)報(bào)文往往包含大量的數(shù)據(jù)。如果能將請(qǐng)求和響應(yīng)分開處理,即在負(fù)載調(diào)度器中只負(fù)責(zé)調(diào)度請(qǐng)求而響應(yīng)直 接返回給客戶,將極大地提高整個(gè)集群系統(tǒng)的吞吐量。IP隧道(IP tunneling)是將一個(gè)IP報(bào)文封裝在另一個(gè)IP

54、報(bào)文的技術(shù),這可以使得目標(biāo)為一個(gè)IP地址的數(shù)據(jù)報(bào)文能被封裝和轉(zhuǎn)發(fā)到另一個(gè)IP地址。IP隧道技 術(shù)亦稱為IP封裝技術(shù)(IP encapsulation)。IP隧道主要用于移動(dòng)主機(jī)和虛擬私有網(wǎng)絡(luò)(Virtual Private Network),在其中隧道都是靜態(tài)建立的,隧道一端有一個(gè)IP地址,另一端也有唯一的IP地址。我們利用IP隧道技術(shù)將請(qǐng)求報(bào)文封裝轉(zhuǎn) 發(fā)給后端服務(wù)器,響應(yīng)報(bào)文能從后端服務(wù)器直接返回給客戶。但在這里,后端服務(wù)器有一組而非一個(gè),所以我們不可能靜態(tài)地建立一一對(duì)應(yīng)的隧道,而是動(dòng)態(tài)地選擇 一臺(tái)服務(wù)器,將請(qǐng)求報(bào)文封裝和轉(zhuǎn)發(fā)給選出的服務(wù)器。這樣,我們可以利用IP隧道的原理將一組服務(wù)器上的網(wǎng)

55、絡(luò)服務(wù)組成在一個(gè)IP地址上的虛擬網(wǎng)絡(luò)服務(wù)。 VS/TUN的體系結(jié)構(gòu)如圖4所示,各個(gè)服務(wù)器將VIP地址配置在自己的IP隧道設(shè)備上。圖4:VS/TUN的體系結(jié)構(gòu)VS/TUN 的工作流程如圖5所示:它的連接調(diào)度和管理與VS/NAT中的一樣,只是它的報(bào)文轉(zhuǎn)發(fā)方法不同。調(diào)度器根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動(dòng)態(tài)地選擇一臺(tái)服務(wù)器, 將請(qǐng)求報(bào)文封裝在另一個(gè)IP報(bào)文中,再將封裝后的IP報(bào)文轉(zhuǎn)發(fā)給選出的服務(wù)器;服務(wù)器收到報(bào)文后,先將報(bào)文解封獲得原來目標(biāo)地址為VIP的報(bào)文,服務(wù)器發(fā) 現(xiàn)VIP地址被配置在本地的IP隧道設(shè)備上,所以就處理這個(gè)請(qǐng)求,然后根據(jù)路由表將響應(yīng)報(bào)文直接返回給客戶。圖5:VS/TUN的工作流程在這里需

56、要指出,根據(jù)缺省的TCP/IP協(xié)議棧處理,請(qǐng)求報(bào)文的目標(biāo)地址為VIP,響應(yīng)報(bào)文的源地址肯定也為VIP,所以響應(yīng)報(bào)文不需要作任何修改,可以直接返回給客戶,客戶認(rèn)為得到正常的服務(wù),而不會(huì)知道究竟是哪一臺(tái)服務(wù)器處理的。圖6:半連接的TCP有限狀態(tài)機(jī)5. 通過直接路由實(shí)現(xiàn)虛擬服務(wù)器(VS/DR)跟VS/TUN 方法相同,VS/DR利用大多數(shù)Internet服務(wù)的非對(duì)稱特點(diǎn),負(fù)載調(diào)度器中只負(fù)責(zé)調(diào)度請(qǐng)求,而服務(wù)器直接將響應(yīng)返回給客戶,可以極大地提高整個(gè)集群 系統(tǒng)的吞吐量。該方法與IBM的NetDispatcher產(chǎn)品中使用的方法類似(其中服務(wù)器上的IP地址配置方法是相似的),但I(xiàn)BM的 NetDispat

57、cher是非常昂貴的商品化產(chǎn)品,我們也不知道它內(nèi)部所使用的機(jī)制,其中有些是IBM的專利。VS/DR的體系結(jié)構(gòu)如圖 7所示:調(diào)度器和服務(wù)器組都必須在物理上有一個(gè)網(wǎng)卡通過不分?jǐn)嗟木钟蚓W(wǎng)相連,如通過高速的交換機(jī)或者HUB相連。VIP地址為調(diào)度器和服務(wù)器組共享,調(diào)度 器配置的VIP地址是對(duì)外可見的,用于接收虛擬服務(wù)的請(qǐng)求報(bào)文;所有的服務(wù)器把VIP地址配置在各自的Non-ARP網(wǎng)絡(luò)設(shè)備上,它對(duì)外面是不可見的,只 是用于處理目標(biāo)地址為VIP的網(wǎng)絡(luò)請(qǐng)求。圖7:VS/DR的體系結(jié)構(gòu)VS/DR 的工作流程如圖8所示:它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,它的報(bào)文轉(zhuǎn)發(fā)方法又有不同,將報(bào)文直接路由

58、給目標(biāo)服務(wù)器。在VS/DR 中,調(diào)度器根據(jù)各個(gè)服務(wù)器的負(fù)載情況,動(dòng)態(tài)地選擇一臺(tái)服務(wù)器,不修改也不封裝IP報(bào)文,而是將數(shù)據(jù)幀的MAC地址改為選出服務(wù)器的MAC地址,再將修改后 的數(shù)據(jù)幀在與服務(wù)器組的局域網(wǎng)上發(fā)送。因?yàn)閿?shù)據(jù)幀的MAC地址是選出的服務(wù)器,所以服務(wù)器肯定可以收到這個(gè)數(shù)據(jù)幀,從中可以獲得該IP報(bào)文。當(dāng)服務(wù)器發(fā)現(xiàn) 報(bào)文的目標(biāo)地址VIP是在本地的網(wǎng)絡(luò)設(shè)備上,服務(wù)器處理這個(gè)報(bào)文,然后根據(jù)路由表將響應(yīng)報(bào)文直接返回給客戶。圖8:VS/DR的工作流程在VS/DR中,根據(jù)缺省的TCP/IP協(xié)議棧處理,請(qǐng)求報(bào)文的目標(biāo)地址為VIP,響應(yīng)報(bào)文的源地址肯定也為VIP,所以響應(yīng)報(bào)文不需要作任何修改,可以直接返回

59、給客戶,客戶認(rèn)為得到正常的服務(wù),而不會(huì)知道是哪一臺(tái)服務(wù)器處理的。VS/DR負(fù)載調(diào)度器跟VS/TUN一樣只處于從客戶到服務(wù)器的半連接中,按照半連接的TCP有限狀態(tài)機(jī)進(jìn)行狀態(tài)遷移。6.三種方法的優(yōu)缺點(diǎn)比較三種IP負(fù)載均衡技術(shù)的優(yōu)缺點(diǎn)歸納在下表中:_VS/NATVS/TUNVS/DRServeranyTunnelingNon-arp deviceserver networkprivateLAN/WANLANserver numberlow (1020)High (100)High (100)server gatewayload balancerown routerOwn router注: 以上三種方

60、法所能支持最大服務(wù)器數(shù)目的估計(jì)是假設(shè)調(diào)度器使用100M網(wǎng)卡,調(diào)度器的硬件配置與后端服務(wù)器的硬件配置相同,而且是對(duì)一般Web服務(wù)。使用更 高的硬件配置(如千兆網(wǎng)卡和更快的處理器)作為調(diào)度器,調(diào)度器所能調(diào)度的服務(wù)器數(shù)量會(huì)相應(yīng)增加。當(dāng)應(yīng)用不同時(shí),服務(wù)器的數(shù)目也會(huì)相應(yīng)地改變。所以,以上數(shù) 據(jù)估計(jì)主要是為三種方法的伸縮性進(jìn)行量化比較。6.1. Virtual Server via NATVS/NAT 的優(yōu)點(diǎn)是服務(wù)器可以運(yùn)行任何支持TCP/IP的操作系統(tǒng),它只需要一個(gè)IP地址配置在調(diào)度器上,服務(wù)器組可以用私有的IP地址。缺點(diǎn)是它的伸縮能力有限, 當(dāng)服務(wù)器結(jié)點(diǎn)數(shù)目升到20時(shí),調(diào)度器本身有可能成為系統(tǒng)的新瓶頸

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論