




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、背景當(dāng)今計(jì)算機(jī)技術(shù)已進(jìn)入以網(wǎng)絡(luò)為中心的計(jì)算時(shí)期。由于客戶/服務(wù)器模型的簡(jiǎn)單性、易管理性和易維護(hù)性,客戶/服務(wù)器計(jì)算模式在網(wǎng)上被大量采用。在九十年代中期,萬(wàn)維網(wǎng)(worldwideweb)的出現(xiàn)以其簡(jiǎn)單操作方式將圖文并茂的網(wǎng)上信息帶給普通大眾,web也正在從一種內(nèi)容發(fā)送機(jī)制成為一種服務(wù)平臺(tái),大量的服務(wù)和應(yīng)用(如新聞服務(wù)、網(wǎng)上銀行、電子商務(wù)等)都是圍繞著web進(jìn)行。這促進(jìn)internet用戶劇烈增長(zhǎng)和internet流量爆炸式地增長(zhǎng),圖1顯示了1995至2000年與internet連接主機(jī)數(shù)的變化情況,可見增長(zhǎng)趨勢(shì)較以往更迅猛。internet的飛速發(fā)展給網(wǎng)絡(luò)帶寬和服務(wù)器帶來(lái)巨大的挑戰(zhàn)。從網(wǎng)絡(luò)技術(shù)
2、的發(fā)展來(lái)看,網(wǎng)絡(luò)帶寬的增長(zhǎng)遠(yuǎn)高于處理器速度和內(nèi)存訪問(wèn)速度的增長(zhǎng),如100methernet、atm、gigabitethernet等不斷地涌現(xiàn),10gigabitethernet即將就緒,在主干網(wǎng)上密集波分復(fù)用(dwdm)將成為寬帶ip的主流技術(shù)2,3,lucent已經(jīng)推出在一根光纖跑800gigabit的wavestar?ols800g產(chǎn)品4。所以,我們深信越來(lái)越多的瓶頸會(huì)出現(xiàn)在服務(wù)器端。很多研究顯示gigabitethernet在服務(wù)器上很難使得其吞吐率達(dá)到1gb/s的原因是協(xié)議棧(tcp/ip)和操作系統(tǒng)的低效,以及處理器的低效,這需要對(duì)協(xié)議的處理方法、操作系統(tǒng)的調(diào)度和io的處理作更深入
3、的研究。在高速網(wǎng)絡(luò)上,重新設(shè)計(jì)單臺(tái)服務(wù)器上的網(wǎng)絡(luò)服務(wù)程序也是個(gè)重要課題。比較熱門的站點(diǎn)會(huì)吸引前所未有的訪問(wèn)流量,例如根據(jù)yahoo的新聞發(fā)布,yahoo已經(jīng)每天發(fā)送6.25億頁(yè)面。一些網(wǎng)絡(luò)服務(wù)也收到巨額的流量,如americanonline的webcache系統(tǒng)每天處理50.2億個(gè)用戶訪問(wèn)web的請(qǐng)求,每個(gè)請(qǐng)求的平均響應(yīng)長(zhǎng)度為5.5kbytes。與此同時(shí),很多網(wǎng)絡(luò)服務(wù)因?yàn)樵L問(wèn)次數(shù)爆炸式地增長(zhǎng)而不堪重負(fù),不能及時(shí)處理用戶的請(qǐng)求,導(dǎo)致用戶進(jìn)行長(zhǎng)時(shí)間的等待,大大降低了服務(wù)質(zhì)量。如何建立可伸縮的網(wǎng)絡(luò)服務(wù)來(lái)滿足不斷增長(zhǎng)的負(fù)載需求已成為迫在眉睫的問(wèn)題。大部分網(wǎng)站都需要提供每天24小時(shí)、每星期7天的服務(wù),對(duì)
4、電子商務(wù)等網(wǎng)站尤為突出,任何服務(wù)中斷和關(guān)鍵性的數(shù)據(jù)丟失都會(huì)造成直接的商業(yè)損失。例如,根據(jù)dell的新聞發(fā)布6,dell現(xiàn)在每天在網(wǎng)站上的交易收入為一千四百萬(wàn)美元,一個(gè)小時(shí)的服務(wù)中斷都會(huì)造成平均五十八萬(wàn)美元的損失。所以,這對(duì)網(wǎng)絡(luò)服務(wù)的可靠性提出了越來(lái)越高的要求。現(xiàn)在web服務(wù)中越來(lái)越多地使用cgi、動(dòng)態(tài)主頁(yè)等cpu密集型應(yīng)用,這對(duì)服務(wù)器的性能有較高要求。未來(lái)的網(wǎng)絡(luò)服務(wù)會(huì)提供更豐富的內(nèi)容、更好的交互性、更高的安全性等,需要服務(wù)器具有更強(qiáng)的cpu和i/o處理能力。例如,通過(guò)https(securehttp)取一個(gè)靜態(tài)頁(yè)面需要的處理性能比通過(guò)http的高一個(gè)數(shù)量級(jí),https正在被電子商務(wù)站點(diǎn)廣為使用
5、。所以,網(wǎng)絡(luò)流量并不能說(shuō)明全部問(wèn)題,要考慮到應(yīng)用本身的發(fā)展也需要越來(lái)越強(qiáng)的處理性能。因此,對(duì)用硬件和軟件方法實(shí)現(xiàn)高可伸縮、高可用網(wǎng)絡(luò)服務(wù)的需求不斷增長(zhǎng),這種需求可以歸結(jié)以下幾點(diǎn):可伸縮性(scalability),當(dāng)服務(wù)的負(fù)載增長(zhǎng)時(shí),系統(tǒng)能被擴(kuò)展來(lái)滿足需求,且不降低服務(wù)質(zhì)量。高可用性(availability),盡管部分硬件和軟件會(huì)發(fā)生故障,整個(gè)系統(tǒng)的服務(wù)必須是每天24小時(shí)每星期7天可用的??晒芾硇裕╩anageability),整個(gè)系統(tǒng)可能在物理上很大,但應(yīng)該容易管理。價(jià)格有效性(cost-effectiveness),整個(gè)系統(tǒng)實(shí)現(xiàn)是經(jīng)濟(jì)的、易支付的。2.服務(wù)器集群系統(tǒng)對(duì)稱多處理(symme
6、tricmulti-processor,簡(jiǎn)稱smp)是由多個(gè)對(duì)稱的處理器、和通過(guò)總線共享的內(nèi)存和i/o部件所組成的計(jì)算機(jī)系統(tǒng)。smp是一種低并行度的結(jié)構(gòu),是我們通常所說(shuō)的緊耦合多處理系統(tǒng),它的可擴(kuò)展能力有限,但smp的優(yōu)點(diǎn)是單一系統(tǒng)映像(singlesystemimage),有共享的內(nèi)存和i/o,易編程。由于smp的可擴(kuò)展能力有限,smp服務(wù)器顯然不能滿足高可伸縮、高可用網(wǎng)絡(luò)服務(wù)中的負(fù)載處理能力不斷增長(zhǎng)需求。隨著負(fù)載不斷增長(zhǎng),會(huì)導(dǎo)致服務(wù)器不斷地升級(jí)。這種服務(wù)器升級(jí)有下列不足:一是升級(jí)過(guò)程繁瑣,機(jī)器切換會(huì)使服務(wù)暫時(shí)中斷,并造成原有計(jì)算資源的浪費(fèi);二是越往高端的服務(wù)器,所花費(fèi)的代價(jià)越大;三是smp
7、服務(wù)器是單一故障點(diǎn)(singlepointoffailure),一旦該服務(wù)器或應(yīng)用軟件失效,會(huì)導(dǎo)致整個(gè)服務(wù)的中斷。通過(guò)高性能網(wǎng)絡(luò)或局域網(wǎng)互聯(lián)的服務(wù)器集群正成為實(shí)現(xiàn)高可伸縮的、高可用網(wǎng)絡(luò)服務(wù)的有效結(jié)構(gòu)。這種松耦合結(jié)構(gòu)的服務(wù)器集群系統(tǒng)有下列優(yōu)點(diǎn):性能網(wǎng)絡(luò)服務(wù)的工作負(fù)載通常是大量相互獨(dú)立的任務(wù),通過(guò)一組服務(wù)器分而治之,可以獲得很高的整體性能。性能/價(jià)格比組成集群系統(tǒng)的pc服務(wù)器或risc服務(wù)器和標(biāo)準(zhǔn)網(wǎng)絡(luò)設(shè)備因?yàn)榇笠?guī)模生產(chǎn)降低成本,價(jià)格低,具有最高的性能/價(jià)格比。若整體性能隨著結(jié)點(diǎn)數(shù)的增長(zhǎng)而接近線性增加,該系統(tǒng)的性能/價(jià)格比接近于pc服務(wù)器。所以,這種松耦合結(jié)構(gòu)比緊耦合的多處理器系統(tǒng)具有更好的性能/價(jià)
8、格比??缮炜s性集群系統(tǒng)中的結(jié)點(diǎn)數(shù)目可以增長(zhǎng)到幾千個(gè),乃至上萬(wàn)個(gè),其伸縮性遠(yuǎn)超過(guò)單臺(tái)超級(jí)計(jì)算機(jī)。高可用性在硬件和軟件上都有冗余,通過(guò)檢測(cè)軟硬件的故障,將故障屏蔽,由存活結(jié)點(diǎn)提供服務(wù),可實(shí)現(xiàn)高可用性。當(dāng)然,用服務(wù)器集群系統(tǒng)實(shí)現(xiàn)可伸縮網(wǎng)絡(luò)服務(wù)也存在很多挑戰(zhàn)性的工作:透明性(transparency)如何高效地使得由多個(gè)獨(dú)立計(jì)算機(jī)組成的松藕合的集群系統(tǒng)構(gòu)成一個(gè)虛擬服務(wù)器;客戶端應(yīng)用程序與集群系統(tǒng)交互時(shí),就像與一臺(tái)高性能、高可用的服務(wù)器交互一樣,客戶端無(wú)須作任何修改。部分服務(wù)器的切入和切出不會(huì)中斷服務(wù),這對(duì)用戶也是透明的。性能(performance)性能要接近線性加速,這需要設(shè)計(jì)很好的軟硬件的體系結(jié)構(gòu)
9、,消除系統(tǒng)可能存在的瓶頸。將負(fù)載較均衡地調(diào)度到各臺(tái)服務(wù)器上。高可用性(availability)需要設(shè)計(jì)和實(shí)現(xiàn)很好的系統(tǒng)資源和故障的監(jiān)測(cè)和處理系統(tǒng)。當(dāng)發(fā)現(xiàn)一個(gè)模塊失敗時(shí),要這模塊上提供的服務(wù)遷移到其他模塊上。在理想狀況下,這種遷移是即時(shí)的、自動(dòng)的??晒芾硇裕╩anageability)要使集群系統(tǒng)變得易管理,就像管理一個(gè)單一映像系統(tǒng)一樣。在理想狀況下,軟硬件模塊的插入能做到即插即用(plug&play)??删幊绦裕╬rogrammability)在集群系統(tǒng)上,容易開發(fā)應(yīng)用程序。3.linuxvirtualserver項(xiàng)目針對(duì)高可伸縮、高可用網(wǎng)絡(luò)服務(wù)的需求,我們給出了基于ip層和基于內(nèi)容請(qǐng)求分發(fā)
10、的負(fù)載平衡調(diào)度解決方法,并在linux內(nèi)核中實(shí)現(xiàn)了這些方法,將一組服務(wù)器構(gòu)成一個(gè)實(shí)現(xiàn)可伸縮的、高可用網(wǎng)絡(luò)服務(wù)的虛擬服務(wù)器。虛擬服務(wù)器的體系結(jié)構(gòu)如圖2所示,一組服務(wù)器通過(guò)高速的局域網(wǎng)或者地理分布的廣域網(wǎng)相互連接,在它們的前端有一個(gè)負(fù)載調(diào)度器(loadbalancer)。負(fù)載調(diào)度器能無(wú)縫地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到真實(shí)服務(wù)器上,從而使得服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,客戶訪問(wèn)集群系統(tǒng)提供的網(wǎng)絡(luò)服務(wù)就像訪問(wèn)一臺(tái)高性能、高可用的服務(wù)器一樣??蛻舫绦虿皇芊?wù)器集群的影響不需作任何修改。系統(tǒng)的伸縮性通過(guò)在服務(wù)機(jī)群中透明地加入和刪除一個(gè)節(jié)點(diǎn)來(lái)達(dá)到,通過(guò)檢測(cè)節(jié)點(diǎn)或服務(wù)進(jìn)程故障和正確地重置系統(tǒng)達(dá)到高可用性。由于我們的負(fù)載
11、調(diào)度技術(shù)是在linux內(nèi)核中實(shí)現(xiàn)的,我們稱之為linux虛擬服務(wù)器(linuxvirtualserver)。在1998年5月,我成立了linuxvirtualserver的自由軟件項(xiàng)目,進(jìn)行l(wèi)inux服務(wù)器集群的開發(fā)工作。同時(shí),linuxvirtualserver項(xiàng)目是國(guó)內(nèi)最早出現(xiàn)的自由軟件項(xiàng)目之一。linuxvirtualserver項(xiàng)目的目標(biāo):使用集群技術(shù)和linux操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能、高可用的服務(wù)器,它具有很好的可伸縮性(scalability)、可靠性(reliability)和可管理性(manageability)。目前,lvs項(xiàng)目已提供了一個(gè)實(shí)現(xiàn)可伸縮網(wǎng)絡(luò)服務(wù)的linuxvir
12、tualserver框架,如圖3所示。在lvs框架中,提供了含有三種ip負(fù)載均衡技術(shù)的ip虛擬服務(wù)器軟件ipvs、基于內(nèi)容請(qǐng)求分發(fā)的內(nèi)核layer-7交換機(jī)ktcpvs和集群管理軟件??梢岳胠vs框架實(shí)現(xiàn)高可伸縮的、高可用的web、cache、mail和media等網(wǎng)絡(luò)服務(wù);在此基礎(chǔ)上,可以開發(fā)支持龐大用戶數(shù)的、高可伸縮的、高可用的電子商務(wù)應(yīng)用。3.1ip虛擬服務(wù)器軟件ipvs在調(diào)度器的實(shí)現(xiàn)技術(shù)中,ip負(fù)載均衡技術(shù)是效率最高的。在已有的ip負(fù)載均衡技術(shù)中有通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換(networkaddresstranslation)將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器,我們稱之為vs/n
13、at技術(shù)(virtualservervianetworkaddresstranslation),大多數(shù)商品化的ip負(fù)載均衡調(diào)度器產(chǎn)品都是使用此方法,如cisco的localdirector、f5的big/ip和alteon的acedirector。在分析vs/nat的缺點(diǎn)和網(wǎng)絡(luò)服務(wù)的非對(duì)稱性的基礎(chǔ)上,我們提出通過(guò)ip隧道實(shí)現(xiàn)虛擬服務(wù)器的方法vs/tun(virtualserverviaiptunneling),和通過(guò)直接路由實(shí)現(xiàn)虛擬服務(wù)器的方法vs/dr(virtualserverviadirectrouting),它們可以極大地提高系統(tǒng)的伸縮性。所以,ipvs軟件實(shí)現(xiàn)了這三種ip負(fù)載均衡技術(shù)
14、,它們的大致原理如下(我們將在其他章節(jié)對(duì)其工作原理進(jìn)行詳細(xì)描述),virtualservervianetworkaddresstranslation(vs/nat)通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換,調(diào)度器重寫請(qǐng)求報(bào)文的目標(biāo)地址,根據(jù)預(yù)設(shè)的調(diào)度算法,將請(qǐng)求分派給后端的真實(shí)服務(wù)器;真實(shí)服務(wù)器的響應(yīng)報(bào)文通過(guò)調(diào)度器時(shí),報(bào)文的源地址被重寫,再返回給客戶,完成整個(gè)負(fù)載調(diào)度過(guò)程。virtualserverviaiptunneling(vs/tun)采用nat技術(shù)時(shí),由于請(qǐng)求和響應(yīng)報(bào)文都必須經(jīng)過(guò)調(diào)度器地址重寫,當(dāng)客戶請(qǐng)求越來(lái)越多時(shí),調(diào)度器的處理能力將成為瓶頸。為了解決這個(gè)問(wèn)題,調(diào)度器把請(qǐng)求報(bào)文通過(guò)ip隧道轉(zhuǎn)發(fā)至真實(shí)服務(wù)器,而
15、真實(shí)服務(wù)器將響應(yīng)直接返回給客戶,所以調(diào)度器只處理請(qǐng)求報(bào)文。由于一般網(wǎng)絡(luò)服務(wù)應(yīng)答比請(qǐng)求報(bào)文大許多,采用vs/tun技術(shù)后,集群系統(tǒng)的最大吞吐量可以提高10倍。virtualserverviadirectrouting(vs/dr)vs/dr通過(guò)改寫請(qǐng)求報(bào)文的mac地址,將請(qǐng)求發(fā)送到真實(shí)服務(wù)器,而真實(shí)服務(wù)器將響應(yīng)直接返回給客戶。同vs/tun技術(shù)一樣,vs/dr技術(shù)可極大地提高集群系統(tǒng)的伸縮性。這種方法沒(méi)有ip隧道的開銷,對(duì)集群中的真實(shí)服務(wù)器也沒(méi)有必須支持ip隧道協(xié)議的要求,但是要求調(diào)度器與真實(shí)服務(wù)器都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。針對(duì)不同的網(wǎng)絡(luò)服務(wù)需求和服務(wù)器配置,ipvs調(diào)度器實(shí)現(xiàn)了如下八種負(fù)
16、載調(diào)度算法:輪叫(roundrobin)調(diào)度器通過(guò)輪叫調(diào)度算法將外部請(qǐng)求按順序輪流分配到集群中的真實(shí)服務(wù)器上,它均等地對(duì)待每一臺(tái)服務(wù)器,而不管服務(wù)器上實(shí)際的連接數(shù)和系統(tǒng)負(fù)載。加權(quán)輪叫(weightedroundrobin)調(diào)度器通過(guò)加權(quán)輪叫調(diào)度算法根據(jù)真實(shí)服務(wù)器的不同處理能力來(lái)調(diào)度訪問(wèn)請(qǐng)求。這樣可以保證處理能力強(qiáng)的服務(wù)器處理更多的訪問(wèn)流量。調(diào)度器可以自動(dòng)問(wèn)詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。最少鏈接(leastconnections)調(diào)度器通過(guò)最少連接調(diào)度算法動(dòng)態(tài)地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用最小連接調(diào)度算法可以較好地均
17、衡負(fù)載。加權(quán)最少鏈接(weightedleastconnections)在集群系統(tǒng)中的服務(wù)器性能差異較大的情況下,調(diào)度器采用加權(quán)最少鏈接調(diào)度算法優(yōu)化負(fù)載均衡性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動(dòng)連接負(fù)載。調(diào)度器可以自動(dòng)問(wèn)詢真實(shí)服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。基于局部性的最少鏈接(locality-basedleastconnections)基于局部性的最少鏈接調(diào)度算法是針對(duì)目標(biāo)ip地址的負(fù)載均衡,目前主要用于cache集群系統(tǒng)。該算法根據(jù)請(qǐng)求的目標(biāo)ip地址找出該目標(biāo)ip地址最近使用的服務(wù)器,若該服務(wù)器是可用的且沒(méi)有超載,將請(qǐng)求發(fā)送到該服務(wù)器;若服務(wù)器不存在,或者該服務(wù)器超載且有服
18、務(wù)器處于一半的工作負(fù)載,則用最少鏈接的原則選出一個(gè)可用的服務(wù)器,將請(qǐng)求發(fā)送到該服務(wù)器。帶復(fù)制的基于局部性最少鏈接(locality-basedleastconnectionswithreplication)帶復(fù)制的基于局部性最少鏈接調(diào)度算法也是針對(duì)目標(biāo)ip地址的負(fù)載均衡,目前主要用于cache集群系統(tǒng)。它與lblc算法的不同之處是它要維護(hù)從一個(gè)目標(biāo)ip地址到一組服務(wù)器的映射,而lblc算法維護(hù)從一個(gè)目標(biāo)ip地址到一臺(tái)服務(wù)器的映射。該算法根據(jù)請(qǐng)求的目標(biāo)ip地址找出該目標(biāo)ip地址對(duì)應(yīng)的服務(wù)器組,按最小連接原則從服務(wù)器組中選出一臺(tái)服務(wù)器,若服務(wù)器沒(méi)有超載,將請(qǐng)求發(fā)送到該服務(wù)器,若服務(wù)器超載;則按最小
19、連接原則從這個(gè)集群中選出一臺(tái)服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,將請(qǐng)求發(fā)送到該服務(wù)器。同時(shí),當(dāng)該服務(wù)器組有一段時(shí)間沒(méi)有被修改,將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的程度。目標(biāo)地址散列(destinationhashing)目標(biāo)地址散列調(diào)度算法根據(jù)請(qǐng)求的目標(biāo)ip地址,作為散列鍵(hashkey)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回空。源地址散列(sourcehashing)源地址散列調(diào)度算法根據(jù)請(qǐng)求的源ip地址,作為散列鍵(hashkey)從靜態(tài)分配的散列表找出對(duì)應(yīng)的服務(wù)器,若該服務(wù)器是可用的且未超載,將請(qǐng)求發(fā)送到該服務(wù)器,否則返回
20、空。3.2內(nèi)核layer-7交換機(jī)ktcpvs在基于ip負(fù)載調(diào)度技術(shù)中,當(dāng)一個(gè)tcp連接的初始syn報(bào)文到達(dá)時(shí),調(diào)度器就選擇一臺(tái)服務(wù)器,將報(bào)文轉(zhuǎn)發(fā)給它。此后通過(guò)查發(fā)報(bào)文的ip和tcp報(bào)文頭地址,保證此連接的后繼報(bào)文被轉(zhuǎn)發(fā)到該服務(wù)器。這樣,ipvs無(wú)法檢查到請(qǐng)求的內(nèi)容再選擇服務(wù)器,這就要求后端服務(wù)器組提供相同的服務(wù),不管請(qǐng)求被發(fā)送到哪一臺(tái)服務(wù)器,返回結(jié)果都是一樣的。但是,在有些應(yīng)用中后端服務(wù)器功能不一,有的提供html文檔,有的提供圖片,有的提供cgi,這就需要基于內(nèi)容的調(diào)度(content-basedscheduling)。由于用戶空間tcpgateway的開銷太大,我們提出在操作系統(tǒng)的內(nèi)核中
21、實(shí)現(xiàn)layer-7交換方法,來(lái)避免用戶空間與核心空間的切換和內(nèi)存復(fù)制的開銷。在linux操作系統(tǒng)的內(nèi)核中,我們實(shí)現(xiàn)了layer-7交換,稱之為ktcpvs(kerneltcpvirtualserver)。目前,ktcpvs已經(jīng)能對(duì)http請(qǐng)求進(jìn)行基于內(nèi)容的調(diào)度,但它還不很成熟,在其調(diào)度算法和各種協(xié)議的功能支持等方面,有大量的工作需要做。雖然應(yīng)用層交換處理復(fù)雜,它的伸縮性有限,但應(yīng)用層交換帶來(lái)以下好處:相同頁(yè)面的請(qǐng)求被發(fā)送到同一服務(wù)器,可以提高單臺(tái)服務(wù)器的cache命中率。一些研究5表明web訪問(wèn)流中存在局部性。layer-7交換可以充分利用訪問(wèn)的局部性,將相同類型的請(qǐng)求發(fā)送到同一臺(tái)服務(wù)器,使得
22、每臺(tái)服務(wù)器收到的請(qǐng)求具有更好的相似性,可進(jìn)一步提高單臺(tái)服務(wù)器的cache命中率。后端服務(wù)器可運(yùn)行不同類型的服務(wù),如文檔服務(wù),圖片服務(wù),cgi服務(wù)和數(shù)據(jù)庫(kù)服務(wù)等。4.lvs集群的特點(diǎn)lvs集群的特點(diǎn)可以歸結(jié)如下:功能有實(shí)現(xiàn)三種ip負(fù)載均衡技術(shù)和八種連接調(diào)度算法的ipvs軟件。在ipvs內(nèi)部實(shí)現(xiàn)上,采用了高效的hash函數(shù)和垃圾回收機(jī)制,能正確處理所調(diào)度報(bào)文相關(guān)的icmp消息(有些商品化的系統(tǒng)反而不能)。虛擬服務(wù)的設(shè)置數(shù)目沒(méi)有限制,每個(gè)虛擬服務(wù)有自己的服務(wù)器集。它支持持久的虛擬服務(wù)(如httpcookie和https等需要該功能的支持),并提供詳盡的統(tǒng)計(jì)數(shù)據(jù),如連接的處理速率和報(bào)文的流量等。針對(duì)大
23、規(guī)模拒絕服務(wù)(denyofservice)攻擊,實(shí)現(xiàn)了三種防衛(wèi)策略。有基于內(nèi)容請(qǐng)求分發(fā)的應(yīng)用層交換軟件ktcpvs,它也是在linux內(nèi)核中實(shí)現(xiàn)。有相關(guān)的集群管理軟件對(duì)資源進(jìn)行監(jiān)測(cè),能及時(shí)將故障屏蔽,實(shí)現(xiàn)系統(tǒng)的高可用性。主、從調(diào)度器能周期性地進(jìn)行狀態(tài)同步,從而實(shí)現(xiàn)更高的可用性。適用性后端服務(wù)器可運(yùn)行任何支持tcp/ip的操作系統(tǒng),包括linux,各種unix(如freebsd、sunsolaris、hpunix等),mac/os和windowsnt/2000等。負(fù)載調(diào)度器能夠支持絕大多數(shù)的tcp和udp協(xié)議:協(xié)議內(nèi)容tcphttp,ftp,proxy,smtp,pop3,imap4,dns,l
24、dap,https,ssmtp等udpdns,ntp,icp,視頻、音頻流播放協(xié)議等無(wú)需對(duì)客戶機(jī)和服務(wù)器作任何修改,可適用大多數(shù)internet服務(wù)。性能lvs服務(wù)器集群系統(tǒng)具有良好的伸縮性,可支持幾百萬(wàn)個(gè)并發(fā)連接。配置100m網(wǎng)卡,采用vs/tun或vs/dr調(diào)度技術(shù),集群系統(tǒng)的吞吐量可高達(dá)1gbits/s;如配置千兆網(wǎng)卡,則系統(tǒng)的最大吞吐量可接近10gbits/s??煽啃詌vs服務(wù)器集群軟件已經(jīng)在很多大型的、關(guān)鍵性的站點(diǎn)得到很好的應(yīng)用,所以它的可靠性在真實(shí)應(yīng)用得到很好的證實(shí)。有很多調(diào)度器運(yùn)行一年多,未作一次重啟動(dòng)。軟件許可證lvs集群軟件是按gpl(gnupubliclicense)許可證
25、發(fā)行的自由軟件,這意味著你可以得到軟件的源代碼,有權(quán)對(duì)其進(jìn)行修改,但必須保證你的修改也是以gpl方式發(fā)行。5.lvs集群的應(yīng)用lvs項(xiàng)目從成立到現(xiàn)在為止,受到不少關(guān)注,lvs集群系統(tǒng)已被應(yīng)用于很多重負(fù)載的站點(diǎn),就我所知該系統(tǒng)已在美、英、德、澳等國(guó)的幾十個(gè)站點(diǎn)上正式使用。我們沒(méi)有上百臺(tái)機(jī)器和高速的網(wǎng)絡(luò)來(lái)實(shí)際測(cè)試lvs的終極性能,所以舉lvs的應(yīng)用實(shí)例來(lái)說(shuō)明lvs的高性能和穩(wěn)定性。我們所知的一些大型lvs應(yīng)用實(shí)例如下:英國(guó)國(guó)家janetcacheservice()是為英國(guó)150所以上的大學(xué)提供webcache服務(wù)。他們用28個(gè)結(jié)點(diǎn)的lvs集群代替了原有現(xiàn)50多臺(tái)相互獨(dú)立的cache服務(wù)器,用他們的
26、話說(shuō)現(xiàn)在速度就跟夏天一樣,因?yàn)橄奶焓欠偶倨陂g沒(méi)有很多人使用網(wǎng)絡(luò)。linux的門戶站點(diǎn)(url/url)用lvs將很多臺(tái)valinuxsmp服務(wù)器組成高性能的web服務(wù),已使用將近一年。sourceforge()是在全球范圍內(nèi)為開發(fā)源碼項(xiàng)目提供web、ftp、mailinglist和cvs等服務(wù),他們也使用lvs將負(fù)載調(diào)度到十幾臺(tái)機(jī)器上。世界上最大的pc制造商之一采用了兩個(gè)lvs集群系統(tǒng),一個(gè)在美洲,一個(gè)在歐洲,用于網(wǎng)上直銷系統(tǒng)。以realplayer提供音頻視頻服務(wù)而聞名的real公司(url/url)使用由20臺(tái)服務(wù)器組成的lvs集群,為其全球用戶提供音頻視頻服務(wù)。在2000年3月時(shí),整個(gè)集
27、群系統(tǒng)已收到平均每秒20,000個(gè)連接的請(qǐng)求流。netwalk(url/url)用多臺(tái)服務(wù)器構(gòu)造lvs系統(tǒng),提供1024個(gè)虛擬服務(wù),其中本項(xiàng)目的一個(gè)美國(guó)鏡像站點(diǎn)(/url)。redhat(url/url)從其6.1發(fā)行版起已包含lvs代碼,他們開發(fā)了一個(gè)lvs集群管理工具叫piranha,用于控制lvs集群,并提供了一個(gè)圖形化的配置界面。valinux(url/url)向客戶提供基于lvs的服務(wù)器集群系統(tǒng),并且提供相關(guān)的服務(wù)和支持。turbolinux的世界一流linux集群產(chǎn)品turbocluster實(shí)際上是基于lvs的想法和代
28、碼的,只是他們?cè)谛侣劙l(fā)布和產(chǎn)品演示時(shí)忘了致謝。紅旗linux和中軟都提供基于lvs的集群解決方案,并在2000年9月召開的linuxworldchina2000上展示。在這里,再引用兩位lvs用戶的評(píng)論,來(lái)進(jìn)一步說(shuō)明lvs的性能和可靠性。wetriedvirtuallyallofthecommercialloadbalancers,lvsbeatsthemallforreliability,cost,manageability,you-name-itjerryglomphblack,director,internet&technicaloperations,realnetworks,seatt
29、lewashington,usaurlicansaywithoutadoubtthatlvstoastsf5/bigipsolutions,atleastinourrealworldimplementations.iwouldnttradeagoodlvsboxforaciscolocaldirectoreitherdrewstreib,informationarchitect,valinuxsystems,usaurl6.lvs項(xiàng)目的開發(fā)進(jìn)展與感觸lvs項(xiàng)目于1998年5月在網(wǎng)站上發(fā)布ipvs第一個(gè)版本源程序,一直得到了來(lái)自internet的用戶和開發(fā)者的鼓勵(lì)和支持。應(yīng)該說(shuō),剛開始發(fā)布的程序
30、是非常簡(jiǎn)單的,由于用戶的使用、反饋和期望,讓我覺(jué)得這項(xiàng)工作的價(jià)值,并不斷地化時(shí)間對(duì)該軟件添加新功能和完善,其中也得到其他開發(fā)者的幫助,所以該軟件逐漸發(fā)展成為功能較齊全、有用的系統(tǒng),這遠(yuǎn)遠(yuǎn)超出我當(dāng)初成立項(xiàng)目時(shí)的想象。在這里,我要感謝juliananastasov提供了很多系統(tǒng)的bugfixes和改進(jìn),josephmack博士編寫了lvshowto文檔;還感謝一些廠商贊助我開發(fā)(如硬件設(shè)備等),和贊助我多次出國(guó)作相關(guān)的技術(shù)報(bào)告。目前,正在進(jìn)行的lvs項(xiàng)目開發(fā)工作包括:擴(kuò)充ipvs對(duì)其他傳輸協(xié)議的支持,如ah(authenticationheader)和esp(encapsulatingsecuri
31、typayload)等,這樣ipvs調(diào)度器將實(shí)現(xiàn)ipsec的服務(wù)器集群。提供一個(gè)統(tǒng)一的、功能較完善、更靈活的lvs集群管理軟件。擴(kuò)充和改進(jìn)ktcpvs的調(diào)度算法和多種協(xié)議的支持,使之功能較完備和系統(tǒng)更穩(wěn)定。在tcp粘合(tcpsplicing)和tcp轉(zhuǎn)移(tcphandoff)等方面,做一些嘗試性工作,進(jìn)一步改進(jìn)lvs集群中的應(yīng)用層調(diào)度。最后,我談一下自己多年來(lái)做自由軟件開發(fā)的幾點(diǎn)感觸。一是通過(guò)自由軟件方式可以使得軟件具有頑強(qiáng)的生命力;我以前也做過(guò)幾個(gè)獨(dú)立的系統(tǒng),如在sun上用commonlisp開發(fā)的知識(shí)庫(kù)系統(tǒng)和基于c+的對(duì)象數(shù)據(jù)庫(kù)系統(tǒng),有些地方也是做得非常漂亮的(如元級(jí)反射機(jī)制和對(duì)象的關(guān)
32、系處理),但因?yàn)榉N種原因這些軟件沒(méi)有以開放源碼方式發(fā)布,現(xiàn)在它們?cè)谖覍?dǎo)師的軟件倉(cāng)庫(kù)里已無(wú)人問(wèn)津,我也已經(jīng)忘記里面的實(shí)現(xiàn)細(xì)節(jié);而lvs項(xiàng)目是我做著玩的,一開始只是個(gè)很簡(jiǎn)單的程序,通過(guò)自由軟件的發(fā)布和開發(fā),它發(fā)展成一個(gè)有用的、功能較齊全的軟件,體現(xiàn)了自由軟件的強(qiáng)大生命力。二是通過(guò)自由軟件的集市開發(fā),可以使得初始的想法不斷地深入,可以學(xué)到很多東西。三是做自由軟件后時(shí)間會(huì)更有效率,由于用戶的反饋和期待,會(huì)自覺(jué)不斷地改進(jìn)和完善系統(tǒng),于是沒(méi)有時(shí)間去玩游戲和網(wǎng)上聊天。四是做自由軟件會(huì)使得你有一點(diǎn)點(diǎn)成就感,每當(dāng)收到用戶的致謝和想到你的軟件在實(shí)際系統(tǒng)中運(yùn)行,會(huì)有一點(diǎn)滿足。所以,行動(dòng)起來(lái)吧,花一些時(shí)間做自由軟件,
33、你會(huì)有意想不到的收獲。目錄體系結(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.引言在過(guò)去的十幾年中,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)必須是高性能的、高可靠的,尤其當(dāng)訪問(wèn)負(fù)載不斷增長(zhǎng)時(shí),系統(tǒng)必須能被擴(kuò)展來(lái)滿足不斷增長(zhǎng)的性能需求。由于缺少建立可伸縮網(wǎng)絡(luò)服務(wù)的框架和設(shè)計(jì)方法
34、,這意味著只有擁有非常出色工程和管理人才的機(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è)高性能的、高可用的虛擬服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,而且無(wú)需修改客戶端和服務(wù)器端的程序。為此,在設(shè)計(jì)時(shí)需要考慮系統(tǒng)的透明性、可伸縮性、高可用
35、性和易管理性。一般來(lái)說(shuō),lvs集群采用三層結(jié)構(gòu),其體系結(jié)構(gòu)如圖1所示,三層主要組成部分為:負(fù)載調(diào)度器(loadbalancer),它是整個(gè)集群對(duì)外面的前端機(jī),負(fù)責(zé)將客戶的請(qǐng)求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來(lái)自一個(gè)ip地址(我們可稱之為虛擬ip地址)上的。服務(wù)器池(serverpool),是一組真正執(zhí)行客戶請(qǐng)求的服務(wù)器,執(zhí)行的服務(wù)有web、mail、ftp和dns等。共享存儲(chǔ)(sharedstorage),它為服務(wù)器池提供一個(gè)共享的存儲(chǔ)區(qū),這樣很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。調(diào)度器是服務(wù)器集群系統(tǒng)的唯一入口點(diǎn)(singleentrypoint),它可以采用ip負(fù)載均衡
36、技術(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)樗械牟僮鞫际窃趌inux操作系統(tǒng)核心空間中將完成的,它的調(diào)度開銷很小,所以它具有很高的吞吐率。服務(wù)器池的結(jié)點(diǎn)數(shù)目是可變的。當(dāng)整個(gè)系統(tǒng)收到的負(fù)載超過(guò)目前所有結(jié)點(diǎn)的處理能力時(shí),可以在服務(wù)器池中
37、增加服務(wù)器來(lái)滿足不斷增長(zhǎng)的請(qǐng)求負(fù)載。對(duì)大多數(shù)網(wǎng)絡(luò)服務(wù)來(lái)說(shuō),請(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ù)庫(kù)、網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng)。服務(wù)器結(jié)點(diǎn)需要?jiǎng)討B(tài)更新的數(shù)據(jù)一般存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)中,同時(shí)數(shù)據(jù)庫(kù)會(huì)保證并發(fā)訪問(wèn)時(shí)數(shù)據(jù)的一致性。靜態(tài)的數(shù)據(jù)可以存儲(chǔ)在網(wǎng)絡(luò)文件系統(tǒng)(如nfs/cifs)中,但網(wǎng)絡(luò)文件系統(tǒng)的伸縮能力有限,一般來(lái)說(shuō),nfs/cifs服務(wù)器只能支持36個(gè)繁忙的服務(wù)器結(jié)點(diǎn)。對(duì)于規(guī)模較大的集群系統(tǒng),可以考慮用分布式文件系統(tǒng),如afs1、gfs2.3、coda4和intermezzo5等。分布式
38、文件系統(tǒng)可為各服務(wù)器提供共享的存儲(chǔ)區(qū),它們?cè)L問(wèn)分布式文件系統(tǒng)就像訪問(wèn)本地文件系統(tǒng)一樣,同時(shí)分布式文件系統(tǒng)可提供良好的伸縮性和可用性。此外,當(dāng)不同服務(wù)器上的應(yīng)用程序同時(shí)讀寫訪問(wèn)分布式文件系統(tǒng)上同一資源時(shí),應(yīng)用程序的訪問(wèn)沖突需要消解才能使得資源處于一致狀態(tài)。這需要一個(gè)分布式鎖管理器(distributedlockmanager),它可能是分布式文件系統(tǒng)內(nèi)部提供的,也可能是外部的。開發(fā)者在寫應(yīng)用程序時(shí),可以使用分布式鎖管理器來(lái)保證應(yīng)用程序在不同結(jié)點(diǎn)上并發(fā)訪問(wèn)的一致性。負(fù)載調(diào)度器、服務(wù)器池和共享存儲(chǔ)系統(tǒng)通過(guò)高速網(wǎng)絡(luò)相連接,如100mbps交換網(wǎng)絡(luò)、myrinet和gigabit網(wǎng)絡(luò)等。使用高速的網(wǎng)絡(luò),
39、主要為避免當(dāng)系統(tǒng)規(guī)模擴(kuò)大時(shí)互聯(lián)網(wǎng)絡(luò)成為整個(gè)系統(tǒng)的瓶頸。graphicmonitor是為系統(tǒng)管理員提供整個(gè)集群系統(tǒng)的監(jiān)視器,它可以監(jiān)視系統(tǒng)的狀態(tài)。graphicmonitor是基于瀏覽器的,所以無(wú)論管理員在本地還是異地都可以監(jiān)測(cè)系統(tǒng)的狀況。為了安全的原因,瀏覽器要通過(guò)https(securehttp)協(xié)議和身份認(rèn)證后,才能進(jìn)行系統(tǒng)監(jiān)測(cè),并進(jìn)行系統(tǒng)的配置和管理。2.1.為什么使用層次的體系結(jié)構(gòu)層次的體系結(jié)構(gòu)可以使得層與層之間相互獨(dú)立,每一個(gè)層次提供不同的功能,在一個(gè)層次可以重用不同的已有軟件。例如,調(diào)度器層提供了負(fù)載平衡、可伸縮性和高可用性等,在服務(wù)器層可以運(yùn)行不同的網(wǎng)絡(luò)服務(wù),如web、cache
40、、mail和media等,來(lái)提供不同的可伸縮網(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)容越多,這種無(wú)共享結(jié)構(gòu)(shared-nothingstructure)的代價(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ù)工作比較輕松,如webma
41、ster只需要更新共享存儲(chǔ)中的頁(yè)面,對(duì)所有的服務(wù)器都有效。分布式文件系統(tǒng)提供良好的伸縮性和可用性,當(dāng)分布式文件系統(tǒng)的存儲(chǔ)空間增加時(shí),所有服務(wù)器的存儲(chǔ)空間也隨之增大。對(duì)于大多數(shù)internet服務(wù)來(lái)說(shuō),它們都是讀密集型(read-intensive)的應(yīng)用,分布式文件系統(tǒng)在每臺(tái)服務(wù)器使用本地硬盤作cache(如2gbytes的空間),可以使得訪問(wèn)分布式文件系統(tǒng)本地的速度接近于訪問(wèn)本地硬盤。此外,存儲(chǔ)硬件技術(shù)的發(fā)展也促使從無(wú)共享的集群向共享存儲(chǔ)的集群遷移。存儲(chǔ)區(qū)域網(wǎng)(storageareanetworks)技術(shù)解決了集群的每個(gè)結(jié)點(diǎn)可以直接連接/共享一個(gè)龐大的硬盤陣列,硬件廠商也提供多種硬盤共享技術(shù)
42、,如光纖通道(fiberchannel)、共享scsi(sharedscsi)。infiniband是一個(gè)通用的高性能i/o規(guī)范,使得存儲(chǔ)區(qū)域網(wǎng)中以更低的延時(shí)傳輸i/o消息和集群通訊消息,并且提供很好的伸縮性。infiniband得到絕大多數(shù)的大廠商的支持,如compaq、dell、hewlett-packard、ibm、intel、microsoft和sunmicrosystems等,它正在成為一個(gè)業(yè)界的標(biāo)準(zhǔn)。這些技術(shù)的發(fā)展使得共享存儲(chǔ)變得容易,規(guī)模生產(chǎn)也會(huì)使得成本逐步降低。2.3.高可用性集群系統(tǒng)的特點(diǎn)是它在軟硬件上都有冗余。系統(tǒng)的高可用性可以通過(guò)檢測(cè)節(jié)點(diǎn)或服務(wù)進(jìn)程故障和正確地重置系統(tǒng)來(lái)實(shí)
43、現(xiàn),使得系統(tǒng)收到的請(qǐng)求能被存活的結(jié)點(diǎn)處理。通常,我們?cè)谡{(diào)度器上有資源監(jiān)測(cè)進(jìn)程來(lái)時(shí)刻監(jiān)視各個(gè)服務(wù)器結(jié)點(diǎn)的健康狀況。當(dāng)服務(wù)器對(duì)icmpping不可達(dá)時(shí)或者探測(cè)她的網(wǎng)絡(luò)服務(wù)在指定的時(shí)間沒(méi)有響應(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)程能通過(guò)電子郵件或傳呼機(jī)向管理員報(bào)告故障。一旦監(jiān)測(cè)進(jìn)程到服務(wù)器恢復(fù)工作,通知調(diào)度器將其加入調(diào)度列表進(jìn)行調(diào)度。另外,通過(guò)系統(tǒng)提供的管理程序,管理員可發(fā)命令隨時(shí)可以將新機(jī)器加入服務(wù)來(lái)提高系統(tǒng)的處理性能,也可以將已有的服務(wù)器切出服務(wù),以便對(duì)服務(wù)器進(jìn)行系統(tǒng)維護(hù)?,F(xiàn)在前端的調(diào)度器有可能成為系統(tǒng)的單一失效
44、點(diǎn)(singlepointoffailure)。一般來(lái)說(shuō),調(diào)度器的可靠性較高,因?yàn)檎{(diào)度器上運(yùn)行的程序較少而且大部分程序早已經(jīng)遍歷過(guò),但我們不能排除硬件老化、網(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)行,它們通過(guò)串口線和udp等心跳線來(lái)相互定時(shí)地匯報(bào)各自的健康狀況。當(dāng)從調(diào)度器不能聽得主調(diào)度器的心跳時(shí),從調(diào)度器通過(guò)arp欺騙(gratuitousarp)來(lái)接管集群對(duì)外的virtualipaddress,同時(shí)接管主調(diào)度器的工作來(lái)提供負(fù)載調(diào)度服務(wù)。當(dāng)主調(diào)度器恢復(fù)時(shí),這
45、里有兩種方法,一是主調(diào)度器自動(dòng)變成從調(diào)度器,二是從調(diào)度器釋放virtualipaddress,主調(diào)度器收回virtualipaddress并提供負(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)信息將丟失,已有的連接會(huì)中斷??蛻粜枰蛑匦逻B接,從調(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ù)下
46、去。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ù)庫(kù),可以是網(wǎng)絡(luò)文件系統(tǒng)或分布式文件系統(tǒng),或者是三者的混合。集群中各結(jié)點(diǎn)是通過(guò)高速網(wǎng)絡(luò)相連接的。對(duì)于動(dòng)態(tài)頁(yè)面(如php、jsp和asp等),需要訪問(wèn)的動(dòng)態(tài)數(shù)據(jù)一般存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中。數(shù)據(jù)庫(kù)服務(wù)運(yùn)行在獨(dú)立的服務(wù)器上,為所有web服務(wù)器共享。無(wú)論同一web服務(wù)器上多個(gè)動(dòng)態(tài)頁(yè)面訪問(wèn)同一數(shù)據(jù),還是不同web服務(wù)器上多個(gè)動(dòng)態(tài)頁(yè)面訪問(wèn)同一數(shù)
47、據(jù),數(shù)據(jù)庫(kù)服務(wù)器有鎖機(jī)制使得這些訪問(wèn)有序地進(jìn)行,從而保證數(shù)據(jù)的一致性。對(duì)于靜態(tài)的頁(yè)面和文件(如html文檔和圖片等),可以存儲(chǔ)在網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng)中。至于選擇哪一種,看系統(tǒng)的規(guī)模和需求而定。通過(guò)共享的網(wǎng)絡(luò)文件系統(tǒng)或者分布式文件系統(tǒng),webmaster可以看到統(tǒng)一的文檔存儲(chǔ)空間,維護(hù)和更新頁(yè)面比較方便,對(duì)共享存儲(chǔ)中頁(yè)面的修改對(duì)所有的服務(wù)器都有效。在這種結(jié)構(gòu)下,當(dāng)所有服務(wù)器結(jié)點(diǎn)超載時(shí),管理員可以很快地加入新的服務(wù)器結(jié)點(diǎn)來(lái)處理請(qǐng)求,而無(wú)需將web文檔等復(fù)制到結(jié)點(diǎn)的本地硬盤上。有些web服務(wù)可能用到httpcookie,它是將數(shù)據(jù)存儲(chǔ)在客戶的瀏覽器來(lái)追蹤和標(biāo)識(shí)客戶的機(jī)制。使用httpcoo
48、kie后,來(lái)同一客戶的不同連接存在相關(guān)性,這些連接必須被發(fā)送到同一web服務(wù)器。一些web服務(wù)使用安全的https協(xié)議,它是http協(xié)議加ssl(securesocketlayer)協(xié)議。另有些web服務(wù)可能使用安全的https協(xié)議,它是http協(xié)議加ssl協(xié)議。當(dāng)客戶訪問(wèn)https服務(wù)(https的缺省端口為443)時(shí),會(huì)先建立一個(gè)ssl連接,來(lái)交換對(duì)稱公鑰加密的證書并協(xié)商一個(gè)sslkey,來(lái)加密以后的會(huì)話。在sslkey的生命周期內(nèi),后續(xù)的所有https連接都使用這個(gè)sslkey,所以同一客戶的不同https連接也存在相關(guān)性。針對(duì)這些需要,ipvs調(diào)度器提供了持久服務(wù)的功能,它可以使得在設(shè)
49、定的時(shí)間內(nèi),來(lái)自同一ip地址的不同連接會(huì)被發(fā)送到集群中同一個(gè)服務(wù)器結(jié)點(diǎn),可以很好地解決客戶連接的相關(guān)性問(wèn)題。4.可伸縮媒體服務(wù)基于lvs的媒體集群的體系結(jié)構(gòu)如圖3所示:第一層是負(fù)載調(diào)度器,一般采用ip負(fù)載均衡技術(shù),可以使得整個(gè)系統(tǒng)有較高的吞吐率;第二層是web服務(wù)器池,在每個(gè)結(jié)點(diǎn)上可以運(yùn)行相應(yīng)的媒體服務(wù);第三層是共享存儲(chǔ),通過(guò)網(wǎng)絡(luò)文件系統(tǒng)/分布式文件系統(tǒng)存儲(chǔ)媒體節(jié)目。集群中各結(jié)點(diǎn)是通過(guò)高速網(wǎng)絡(luò)相連接。ipvs負(fù)載調(diào)度器一般使用直接路由方法(即vs/dr方法,將在以后文章中詳細(xì)敘述),來(lái)架構(gòu)媒體集群系統(tǒng)。調(diào)度器將媒體服務(wù)請(qǐng)求較均衡地分發(fā)到各個(gè)服務(wù)器上,而媒體服務(wù)器將響應(yīng)數(shù)據(jù)直接返回給客戶,這樣可
50、以使得整個(gè)媒體集群系統(tǒng)具有很好的伸縮性。媒體服務(wù)器可以運(yùn)行各種媒體服務(wù)軟件。目前,lvs集群對(duì)于realmedia、windowsmedia和applequicktime媒體服務(wù)都有很好的支持,都有真實(shí)的系統(tǒng)在運(yùn)行。一般來(lái)說(shuō),流媒體服務(wù)都會(huì)使用一個(gè)tcp連接(如rtsp協(xié)議:real-timestreamingprotocol)進(jìn)行帶寬的協(xié)商和流速的控制,通過(guò)udp將流數(shù)據(jù)返回客戶。這里,ipvs調(diào)度器提供功能將tcp和udp集中考慮,保證來(lái)自同一客戶的媒體tcp和udp連接會(huì)被轉(zhuǎn)發(fā)到集群中同一臺(tái)媒體服務(wù)器,使得媒體服務(wù)準(zhǔn)確無(wú)誤地進(jìn)行。共享存儲(chǔ)是媒體集群系統(tǒng)中最關(guān)鍵的問(wèn)題,因?yàn)槊襟w文件往往非常
51、大(一部片子需要幾百兆到幾千兆的存儲(chǔ)空間),這對(duì)存儲(chǔ)的容量和讀的速度有較高的要求。對(duì)于規(guī)模較小的媒體集群系統(tǒng),例如有3至6個(gè)媒體服務(wù)器結(jié)點(diǎn),存儲(chǔ)系統(tǒng)可以考慮用帶千兆網(wǎng)卡的linux服務(wù)器,使用軟件raid和日志型文件系統(tǒng),再運(yùn)行內(nèi)核的nfs服務(wù),會(huì)有不錯(cuò)的效果。對(duì)于規(guī)模較大的媒體集群系統(tǒng),最好選擇對(duì)文件分段(filestripping)存儲(chǔ)和文件緩存有較好支持的分布式文件系統(tǒng);媒體文件分段存儲(chǔ)在分布式文件系統(tǒng)的多個(gè)存儲(chǔ)結(jié)點(diǎn)上,可以提高文件系統(tǒng)的性能和存儲(chǔ)結(jié)點(diǎn)間的負(fù)載均衡;媒體文件在媒體服務(wù)器上自動(dòng)地被緩存,可提高文件的訪問(wèn)速度。否則,可以考慮自己在媒體服務(wù)器上開發(fā)相應(yīng)的工具,如緩存工具能定時(shí)地
52、統(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)求的媒體文件緩存在本地硬盤上,則直接轉(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)客戶訪問(wèn)不斷增加使得整個(gè)系統(tǒng)超載時(shí),管理員可以很快地加入新的媒體服務(wù)器結(jié)點(diǎn)來(lái)處理請(qǐng)求。real公司以其高壓縮比的音頻視頻格式、real媒體服務(wù)器和媒體播放器realplayer而聞名。real公司正在使用以上結(jié)構(gòu)將由20多臺(tái)服務(wù)器組成的lvs可伸縮web和媒體集群,為其全球用戶提供web和音頻視頻服務(wù)。real公司的高級(jí)技術(shù)主管聲稱lvs擊敗所有他們嘗試過(guò)的商品化負(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)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 別墅建筑工程合同范本
- 加盟入股協(xié)議合同范本
- 租賃攤位合同范本
- 出售大米合同范本
- 醫(yī)美合作合同范本
- 農(nóng)村房租建設(shè)合同范例
- 兼職簽定勞動(dòng)合同范本
- 出售附近廠房合同范本
- 農(nóng)戶房屋流轉(zhuǎn)合同范本
- 個(gè)人欠款合同范本模板
- 泡沫鉆井技術(shù)
- 特殊特性關(guān)鍵工序重要特性區(qū)別教學(xué)課件
- 實(shí)驗(yàn)診斷-腦脊液常規(guī)及生化檢查(診斷學(xué)課件)
- 新蘇教版三年級(jí)科學(xué)下冊(cè)知識(shí)點(diǎn)歸納復(fù)習(xí)資料
- 管道開挖施工方案(修復(fù)的)
- 中醫(yī)護(hù)理技術(shù)對(duì)肛腸病術(shù)后疼痛的干預(yù)進(jìn)展
- 牙周炎-侵襲性牙周炎
- GB/T 22919.7-2008水產(chǎn)配合飼料第7部分:刺參配合飼料
- 《中國(guó)商貿(mào)文化》3.1古代商人
- 教師的十大轉(zhuǎn)變課件
- 焦化廠生產(chǎn)工序及工藝流程圖
評(píng)論
0/150
提交評(píng)論