劉贛華
摘要:隨著Intemet的迅猛發(fā)展,互聯(lián)網(wǎng)用戶數(shù)和流量呈幾何級數(shù)增加,造成服務(wù)器超負(fù)荷運轉(zhuǎn),負(fù)載平衡調(diào)度是解決服務(wù)器超負(fù)荷運轉(zhuǎn)的有效途徑。本文分析了服務(wù)器負(fù)載特點和負(fù)載均衡常見調(diào)度算法,提出了自適應(yīng)調(diào)度算法,根據(jù)服務(wù)器負(fù)載狀態(tài)變化進(jìn)行資源調(diào)度。
關(guān)鍵詞:服務(wù)器;監(jiān)測;負(fù)載平衡;調(diào)度算法
1負(fù)載均衡技術(shù)概況
近年來,隨著計算機網(wǎng)絡(luò)技術(shù)及應(yīng)用的迅猛發(fā)展,計算機網(wǎng)絡(luò)的應(yīng)用已進(jìn)入社會各項事物中,給人們的工作、生活帶來了巨大的改善。但是隨著網(wǎng)絡(luò)中用戶數(shù)的不斷增長、服務(wù)需求的不斷增多,網(wǎng)絡(luò)的數(shù)據(jù)流量將急劇增加,服務(wù)器的負(fù)荷也將越來越重,使得現(xiàn)有網(wǎng)絡(luò)的各個核心部分的處理能力和計算強度也相應(yīng)地增大,這樣單一的服務(wù)器設(shè)備根本無法承擔(dān)。
針對此情況而衍生出來的一種有效的方法以擴(kuò)展現(xiàn)有網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性的技術(shù)就是負(fù)載均衡技術(shù)。
負(fù)載均衡技術(shù)就是在網(wǎng)絡(luò)中使用多臺服務(wù)器提供服務(wù),通過一定機制使他們共同分擔(dān)系統(tǒng)負(fù)載,對單一的服務(wù)器沒有太高的性能要求,系統(tǒng)負(fù)載增加,可以多增加服務(wù)器來分擔(dān)。對用戶而言,整個系統(tǒng)仿佛是一臺單一的邏輯服務(wù)器,這樣的系統(tǒng)能夠提供較強的可擴(kuò)展性和較好的吞吐性能。
負(fù)載平衡技術(shù)是目前國內(nèi)外研究的重點課題之一。目前負(fù)載平衡技術(shù)主要有:
(1)基于RR-DNS的解決方法,其特點是采用動態(tài)DNS輪詢,無需復(fù)雜的配置和管理,實現(xiàn)起來簡單。
(2)代理服務(wù)器解決方法,其特點是將客戶請求通過代理服務(wù)器均勻轉(zhuǎn)發(fā)給多臺服務(wù)器,從而達(dá)到負(fù)載平衡的目的。
(3)基于應(yīng)用層的負(fù)載平衡解決方法,其特點是通過一個基于應(yīng)用層的負(fù)載平衡器,分析客戶請求,根據(jù)各個服務(wù)器的負(fù)載情況,選出一臺服務(wù)器,將請求重定向到該服務(wù)器進(jìn)行訪問。應(yīng)用層負(fù)載平衡調(diào)度的典型代表有zeus負(fù)載調(diào)度器、pwe、reverse-proxy等;基于IP層的負(fù)載平衡解決方法,通過網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)或IP隧道技術(shù)實現(xiàn)負(fù)載平衡。
目前高校網(wǎng)絡(luò)的應(yīng)用比較復(fù)雜,對網(wǎng)絡(luò)性能的要求也比較高,這就使負(fù)載均衡技術(shù)在校園網(wǎng)應(yīng)用中有很大的用武之地。
2負(fù)載均衡技術(shù)的常用調(diào)度算法
在負(fù)載平衡的實現(xiàn)中,調(diào)度算法是研究的核心內(nèi)容,目前常見的負(fù)載平衡調(diào)度算法有:
2.1循環(huán)調(diào)度算法:是以輪叫的方式依次將請求調(diào)度到不同的服務(wù)器,即每次調(diào)度執(zhí)行i=(i+1) mod n,并選出第i臺服務(wù)器。算法的優(yōu)點是其簡潔性,它無需記錄當(dāng)前所有連接的狀態(tài),所以它是一種無狀態(tài)調(diào)度。
2.2加權(quán)循環(huán)調(diào)度算法:可以解決服務(wù)器之間處理性能不一致,并用權(quán)值來表現(xiàn)。服務(wù)器缺省權(quán)值為1,假設(shè)服務(wù)器A、B的權(quán)值分別是1、2,表示服務(wù)器B處理性能是A的2倍。加權(quán)循環(huán)算法將按照權(quán)值的高低和循環(huán)算法來將請求分配到各服務(wù)器,權(quán)值高的先收到連接,比權(quán)值低的服務(wù)器處理更多的連接,相同權(quán)值的服務(wù)器處理相同的連接。
2.3最小連接調(diào)度算法:是把新的連接請求分配到當(dāng)前連接數(shù)最小的服務(wù)器。最小連接調(diào)度是一種動態(tài)調(diào)度算法,它通過服務(wù)器當(dāng)前所活躍的連接數(shù)來估計服務(wù)器的負(fù)載情況。調(diào)度器需要記錄各個服務(wù)器己建立連接的數(shù)目,當(dāng)一個請求被調(diào)度到某臺服務(wù)器,其連接數(shù)加一;當(dāng)連接中止或超時,其連接數(shù)減一。最小連接調(diào)度算法在各個服務(wù)器的處理能力不同時,該算法不理想。
2.4加權(quán)最小連接調(diào)度算法:是最小連接調(diào)度的改進(jìn),各個服務(wù)器用相應(yīng)的權(quán)值表示其處理性能。服務(wù)器的缺省權(quán)值為1,系統(tǒng)管理員可以動態(tài)地設(shè)置服務(wù)器的權(quán)值。加權(quán)最小連接調(diào)度在調(diào)度新連接時盡可能使服務(wù)器的已建立連接數(shù)和其權(quán)值成比例。
2.5目標(biāo)地址散列調(diào)度算法:是針對目標(biāo)IP地址的負(fù)載平衡,是一種靜態(tài)映射算法。它通過一個散列(Hash)函數(shù)將一個目標(biāo)IP地址映射到一臺服務(wù)器。
此外還有源地址散列調(diào)度算法等等。
以上所述的常用調(diào)度算法在解決服務(wù)器負(fù)載平衡方面起到了一定的作用,但隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,訪問請求的增加,常用調(diào)度算法在調(diào)度性能上存在不足,主要問題是:
常用調(diào)度算法沒有充分考慮服務(wù)器的負(fù)載狀態(tài),其中循環(huán)調(diào)度算法和加權(quán)循環(huán)調(diào)度算法,是一種無狀態(tài)的調(diào)度算法,屬于靜態(tài)調(diào)度;目標(biāo)地址散列和源地址散列調(diào)度算法是一種靜態(tài)映射算法;最小連接調(diào)度和加權(quán)最小連接調(diào)度算法,雖然考慮到了服務(wù)器的連接請求數(shù)狀態(tài),是一種動態(tài)調(diào)度,但服務(wù)器的負(fù)載不能僅僅是請求連接數(shù),還要考慮CPU、流量等狀態(tài)。
常用調(diào)度算法不能有效根據(jù)服務(wù)器的實時綜合狀態(tài)反饋,調(diào)度負(fù)載請求到相應(yīng)的服務(wù)器。
3根據(jù)服務(wù)器負(fù)載狀態(tài)進(jìn)行調(diào)度的自適應(yīng)調(diào)度算法
在網(wǎng)絡(luò)系統(tǒng)的監(jiān)控中,可以通過MRTG工具獲得每臺服務(wù)器的CPU負(fù)載、網(wǎng)絡(luò)流量、內(nèi)存占用率等服務(wù)器負(fù)載數(shù)據(jù),代理服務(wù)器根據(jù)服務(wù)器的負(fù)載數(shù)據(jù)和相應(yīng)的權(quán)值計算每臺服務(wù)器的負(fù)載排名,再在分析已有算法的基礎(chǔ)上,通過使用自適應(yīng)調(diào)度算法進(jìn)行合理調(diào)度,實現(xiàn)負(fù)載平衡。
3.1算法描述
設(shè)系統(tǒng)中有m個服務(wù)器,ri[j](1≤i≤m,1≤j≤3)表示第i個服務(wù)器的CPU負(fù)載、網(wǎng)絡(luò)流量、內(nèi)存占用率的負(fù)載參數(shù),wj(1≤j≤3)表示服務(wù)器的CPU負(fù)載、網(wǎng)絡(luò)流量、內(nèi)存占用率的權(quán)值,每個服務(wù)器i的負(fù)載情況記為load[i]=∑ri[j]*wj。代理服務(wù)器根據(jù)每臺服務(wù)器的負(fù)載情況,通過調(diào)度算法把請求調(diào)度到相應(yīng)的服務(wù)器。
算法描述如下:
MaxLoadValue=0;
for(i=l;i {for(j=1;j<=3;j++) load[i]=load[i]+ri[j]*Wj if(MaxLoadValue {MaxLoadValue=load[i]; Serverld=i}} if(MaxLoadValue>管理闕值) stop Server[i] 一定時間: else {繼續(xù)對若干臺服務(wù)器進(jìn)行獲取性能參數(shù)的操作并計算加權(quán)值} 3.2自適應(yīng)調(diào)度算法應(yīng)用分析及測試 3.2.1測試環(huán)境 由三臺服務(wù)器和兩臺客戶端計算機組成,如圖1所示。 SNMP采集服務(wù)器運行Linux系統(tǒng),安裝MRTG管理工具,每隔15秒采集三臺服務(wù)器上的CPU負(fù)載、網(wǎng)絡(luò)流量和內(nèi)存占用率的參數(shù)。各應(yīng)用服務(wù)器采用Windows Server2003和IIS。 代理服務(wù)器運行Windows Server2003,根據(jù)SNMP采集服務(wù)器的參數(shù)和相應(yīng)的負(fù)載權(quán)值,計算三臺服務(wù)器的綜合負(fù)載,按照設(shè)計的調(diào)度算法,將客戶端計算機的請求合理調(diào)度到三臺服務(wù)器上,實現(xiàn)三臺服務(wù)器的負(fù)載平衡。 對于一個Web服務(wù)器,Web訪問響應(yīng)時間主要與Web服務(wù)器本身性能及網(wǎng)絡(luò)傳輸情況有關(guān),現(xiàn)假定服務(wù)器和網(wǎng)絡(luò)情況一定。在測試Web服務(wù)器性能時主要采用平均應(yīng)答延遲、吞吐率兩個參數(shù)。吞吐率定義為平均每秒處理的請求個數(shù),平均應(yīng)答延遲定義為從建立連接到應(yīng)答結(jié)束之間的時間。 3.2.2測試結(jié)果 測試實驗以循環(huán)調(diào)度算法、最小連接調(diào)度算法、加權(quán)最小連接調(diào)度算法和根據(jù)服務(wù)器負(fù)載狀態(tài)自適應(yīng)調(diào)度算法來進(jìn)行測試比較。通過MRTG工具測得三臺服務(wù)器的CPU負(fù)載、網(wǎng)絡(luò)流量和內(nèi)存占用率數(shù)據(jù),比較四種調(diào)度算法的平均應(yīng)答延遲和吞吐率兩個參數(shù)。循環(huán)調(diào)度算法、最小連接調(diào)度算法、加權(quán)最小連接調(diào)度算法作為調(diào)度性能比較的基準(zhǔn)。在中低負(fù)載下,四種算法的效率相差不大,但在中高負(fù)載和重負(fù)載下,隨著請求強度的增大,根據(jù)服務(wù)器負(fù)載狀態(tài)自適應(yīng)調(diào)度算法具有更好的效率。 4結(jié)束語 目前,我國各高校都已基本建立了一定規(guī)模的校園網(wǎng),隨著學(xué)校將來網(wǎng)絡(luò)規(guī)模及網(wǎng)絡(luò)應(yīng)用的不斷擴(kuò)大,校園網(wǎng)流量將急劇增加,服務(wù)器的負(fù)荷也將越來越重。利用負(fù)載平衡技術(shù)及優(yōu)良的系統(tǒng)方案實現(xiàn)多臺服務(wù)器的負(fù)載平衡,是當(dāng)前網(wǎng)絡(luò)體系結(jié)構(gòu)中一種有效的解決服務(wù)器超負(fù)荷運轉(zhuǎn)的方法。 參考文獻(xiàn): [1]朱文濤,洪佩琳,李津生.基于Linux虛擬服務(wù)器的負(fù)載均衡.計算機工程,2002(l2):55-57. [2]陳志剛,劉安豐,熊策,張連明.一種有效負(fù)載均衡的網(wǎng)格Web服務(wù)體系結(jié)構(gòu)模型.計算機學(xué)報,2005(4):458-465. [3]李克清,陳萃萌,譚輝.一種動態(tài)自適應(yīng)的網(wǎng)格負(fù)載平衡調(diào)度算法.武漢大學(xué)學(xué)報(理學(xué)版),2006(2):69-72. [4]謝希仁.計算機網(wǎng)絡(luò)第2版.北京:電子工業(yè)出版社,1999. [5]孫泳,史忠植.MRTG的研究與部署.計算機應(yīng)用,2004(3):22-24.