□ 文/梅 榮
作者單位:深圳市泛海三江電子股份有限公司
云計(jì)算是隨著虛擬化技術(shù)、分布式技術(shù)及自動(dòng)化管理技術(shù)等的發(fā)展而產(chǎn)生的一種基于網(wǎng)絡(luò)的計(jì)算模式。云計(jì)算能夠提供可以擴(kuò)展的大規(guī)模計(jì)算能力。云計(jì)算的大規(guī)模計(jì)算能力通常是由分布式的服務(wù)器集群提供 。云計(jì)算的一個(gè)重要特征是具有彈性。借助虛擬化技術(shù)和自動(dòng)化管理技術(shù),云計(jì)算可以實(shí)現(xiàn)集群的彈性伸縮,從而提供動(dòng)態(tài)的服務(wù)能力。
在大規(guī)模、超大規(guī)模的云計(jì)算部署環(huán)境中,當(dāng)后端應(yīng)用虛擬機(jī)達(dá)到一定規(guī)模后,由單節(jié)點(diǎn)構(gòu)成的負(fù)載均衡器將成為整個(gè)系統(tǒng)性能的瓶頸。在單節(jié)點(diǎn)的負(fù)載均衡器達(dá)到轉(zhuǎn)發(fā)能力上限后,即使應(yīng)用虛擬機(jī)集群規(guī)模持續(xù)擴(kuò)大,系統(tǒng)提供的服務(wù)能力卻不能夠繼續(xù)提升。同時(shí),由于大規(guī)模的集群中,節(jié)點(diǎn)失效的問(wèn)題會(huì)凸顯出來(lái)。
現(xiàn)有基于云計(jì)算的彈性負(fù)載均衡研究,大多都針對(duì)于一種特定的應(yīng)用,主要研究負(fù)載均衡系統(tǒng)中的應(yīng)用服務(wù)器集群隨請(qǐng)求數(shù)量的不同,進(jìn)行動(dòng)態(tài)的伸縮[1~6]。文獻(xiàn)[2]提出了一種基于彈性云的負(fù)載均衡方法,通過(guò)任務(wù)調(diào)度算法和彈性伸縮算法實(shí)現(xiàn)任務(wù)的分發(fā)和虛擬機(jī)集群的彈性。設(shè)計(jì)了具有彈性的ElasTraS系統(tǒng)。該系統(tǒng)可以根據(jù)算法和給定的閾值,對(duì)于應(yīng)用節(jié)點(diǎn)進(jìn)行彈性伸縮,以提升系統(tǒng)的容錯(cuò)和自治性能。現(xiàn)有研究對(duì)于實(shí)際出現(xiàn)的單點(diǎn)性能瓶頸問(wèn)題,沒(méi)有有效的解決方案。
為適應(yīng)大規(guī)模的部署環(huán)境,本文提出了基于云計(jì)算的彈性負(fù)載均衡服務(wù)(ELBaaS,Elastic Load Balancing as a Service),將彈性負(fù)載均衡作為一種公共服務(wù)提供出來(lái)。建立了集群管理模型和交叉調(diào)度模型,并引入了失效節(jié)點(diǎn)替換策略,設(shè)計(jì)了基于規(guī)則匹配的彈性伸縮算法和基于交叉調(diào)度模型的負(fù)載調(diào)度算法,實(shí)現(xiàn)了負(fù)載均衡層和應(yīng)用層的彈性伸縮,有效提升了系統(tǒng)的吞吐量和可用性,并進(jìn)行了實(shí)驗(yàn)驗(yàn)證。
彈性負(fù)載均衡服務(wù)主要面向的是分布式的任務(wù),如海量數(shù)據(jù)的處理,分布式的web服務(wù)。分布式任務(wù)主要由若干可以相互獨(dú)立的任務(wù)構(gòu)成,可以由負(fù)載均衡系統(tǒng)調(diào)度給不同應(yīng)用節(jié)點(diǎn)分別執(zhí)行。
彈性負(fù)載均衡服務(wù)的框架,采用數(shù)據(jù)流和控制流分離的設(shè)計(jì),主要包括負(fù)載均衡層,應(yīng)用層以及集群管理模塊,負(fù)載均衡框架如圖1所示。數(shù)據(jù)流從用戶(hù)發(fā)起,經(jīng)負(fù)載均衡層到達(dá)應(yīng)用層??刂屏饔杉汗芾砟K發(fā)起,對(duì)于負(fù)載均衡層和應(yīng)用層進(jìn)行控制。
▲ 圖1:彈性負(fù)載均衡服務(wù)框架
負(fù)載均衡層主要提供負(fù)載均衡服務(wù),包括若干個(gè)負(fù)載均衡節(jié)點(diǎn),負(fù)責(zé)將任務(wù)接收并轉(zhuǎn)發(fā)到相應(yīng)的后端應(yīng)用虛擬機(jī)進(jìn)行處理。應(yīng)用層主要提供應(yīng)用服務(wù),包括有若干個(gè)應(yīng)用虛擬機(jī),部署有若干個(gè)應(yīng)用,負(fù)責(zé)處理用戶(hù)的任務(wù)請(qǐng)求。
在大規(guī)模、超大規(guī)模的云環(huán)境中,負(fù)載均衡層和應(yīng)用層中大量的節(jié)點(diǎn),使用人力無(wú)法進(jìn)行有效、及時(shí)的管理,因此引入了集群管理模塊。集群管理模塊主要用于提供負(fù)載均衡節(jié)點(diǎn)和應(yīng)用虛擬機(jī)集群的自動(dòng)化管理服務(wù),以保證負(fù)載均衡層和應(yīng)用層的穩(wěn)定性和可靠性。
負(fù)載均衡層和應(yīng)用層中的節(jié)點(diǎn),分別提供了負(fù)載均衡和應(yīng)用服務(wù)。為將節(jié)點(diǎn)進(jìn)行統(tǒng)一的管理,對(duì)于節(jié)點(diǎn)進(jìn)行統(tǒng)一的抽象。
定義1 節(jié)點(diǎn),指用于提供服務(wù)的虛擬機(jī),用node表示。節(jié)點(diǎn)有服務(wù)類(lèi)型type,資源res,所屬物理機(jī)host三個(gè)基本屬性。節(jié)點(diǎn)i用元組(typei,resi,hosti)進(jìn)行表示。負(fù)載均衡層的節(jié)點(diǎn)集合為L(zhǎng)B,應(yīng)用層的節(jié)點(diǎn)集合為APP。
集群管理模塊主要負(fù)責(zé)對(duì)于所有節(jié)點(diǎn)的管理控制,由監(jiān)控模塊、自動(dòng)伸縮模塊、心跳模塊、調(diào)度模塊以及池化管理模塊五個(gè)子模塊構(gòu)成。
(1) 監(jiān)控模塊:主要負(fù)責(zé)收集節(jié)點(diǎn)的資源監(jiān)控?cái)?shù)據(jù),將數(shù)據(jù)匯總并交付自動(dòng)伸縮模塊。
(2) 自動(dòng)伸縮模塊:接收監(jiān)控模塊的數(shù)據(jù),根據(jù)彈性伸縮算法,作出集群擴(kuò)展或收縮的決策,并通知調(diào)度模塊執(zhí)行。
(3) 心跳模塊:通過(guò)收發(fā)心跳數(shù)據(jù)包,以確認(rèn)各個(gè)節(jié)點(diǎn)的可用性。在與節(jié)點(diǎn)失去心跳通訊次數(shù)達(dá)到上限閾值后,判定該節(jié)點(diǎn)失效,作出失效節(jié)點(diǎn)替換的決策,并通知調(diào)度模塊執(zhí)行。
(4) 調(diào)度模塊:接收來(lái)自自動(dòng)伸縮模塊和心跳模塊的決策,控制應(yīng)用層和負(fù)載均衡層集群的伸縮。集群擴(kuò)展時(shí),從虛擬機(jī)池中取出虛擬機(jī),加入到負(fù)載均衡集群或應(yīng)用虛擬機(jī)集群;集群收縮時(shí),將移除的節(jié)點(diǎn)回收至虛擬機(jī)池中。
(5) 池化管理模塊:考慮到虛擬機(jī)創(chuàng)建時(shí)的時(shí)間損耗,采用虛擬機(jī)池的方式,以提升虛擬機(jī)創(chuàng)建的效率。池化管理模塊主要對(duì)于虛擬機(jī)池進(jìn)行管理,以保證充足的后備虛擬機(jī)供應(yīng)的同時(shí),減少虛擬機(jī)池的資源消耗。
定義2 調(diào)度關(guān)系,負(fù)載均衡節(jié)點(diǎn)nodei接受來(lái)自用戶(hù)的任務(wù),并將任務(wù)調(diào)度給應(yīng)用虛擬機(jī) nodej,則稱(chēng)nodei和nodej之間存在調(diào)度關(guān)系,用元組(nodei,nodej)表示。在負(fù)載均衡層和應(yīng)用層之間存在調(diào)度關(guān)系集R。
負(fù)載均衡集群有兩種基本調(diào)度模型,分片調(diào)度和交叉調(diào)度,其模型如圖2所示。分片調(diào)度是指各個(gè)負(fù)載均衡節(jié)點(diǎn)映射一臺(tái)或多臺(tái)應(yīng)用節(jié)點(diǎn),每個(gè)應(yīng)用節(jié)點(diǎn)的任務(wù)只由一個(gè)負(fù)載均衡節(jié)點(diǎn)調(diào)度。負(fù)載均衡節(jié)點(diǎn)和應(yīng)用節(jié)點(diǎn)之間是一對(duì)多的關(guān)系。分片調(diào)度模型中,負(fù)載均衡節(jié)點(diǎn)和應(yīng)用節(jié)點(diǎn)之間的關(guān)系簡(jiǎn)單,映射明確,易于管理,但是容易帶來(lái)單點(diǎn)失效的問(wèn)題。當(dāng)一個(gè)負(fù)載均衡節(jié)點(diǎn)發(fā)生故障后,其所屬的應(yīng)用節(jié)點(diǎn)將無(wú)法接收到任何任務(wù),直到節(jié)點(diǎn)故障排除或其他節(jié)點(diǎn)接管。
▲ 圖2:分片調(diào)度模型與交叉調(diào)度模型
交叉調(diào)度與分片調(diào)度不同,每個(gè)應(yīng)用節(jié)點(diǎn)的任務(wù)可以由多個(gè)負(fù)載均衡節(jié)點(diǎn)調(diào)度。負(fù)載均衡節(jié)點(diǎn)和應(yīng)用節(jié)點(diǎn)之間存在著多對(duì)多的關(guān)系。與分片調(diào)度相比較,交叉調(diào)度可以有效的解決單節(jié)點(diǎn)失效問(wèn)題。當(dāng)一個(gè)負(fù)載均衡節(jié)點(diǎn)失效后,由于其后端所屬的應(yīng)用節(jié)點(diǎn)同時(shí)從屬于另外的負(fù)載均衡節(jié)點(diǎn)。因此應(yīng)用節(jié)點(diǎn)可以持續(xù)提供應(yīng)用服務(wù)而不中斷。
在交叉調(diào)度中,由于應(yīng)用節(jié)點(diǎn)可以從屬于不同的負(fù)載均衡節(jié)點(diǎn),因此對(duì)于交叉調(diào)度中調(diào)度關(guān)系集的生成和維護(hù)是核心。本文設(shè)計(jì)了負(fù)載調(diào)度算法,用以管理負(fù)載均衡層和應(yīng)用層之間的調(diào)度關(guān)系。
心跳模塊每隔 時(shí)間,與節(jié)點(diǎn)進(jìn)行依次心跳通訊。當(dāng)與節(jié)點(diǎn) 進(jìn)行心跳通訊,在規(guī)定時(shí)間內(nèi)收到應(yīng)答,則將該節(jié)點(diǎn)連續(xù)失效次數(shù)歸零;如果未收到,則將連續(xù)失效次數(shù)自加。當(dāng)該節(jié)點(diǎn)連續(xù)失效次數(shù)達(dá)到閾值,則記該節(jié)點(diǎn)失效,作出失效節(jié)點(diǎn)替換的決策。
定義3 連續(xù)失效次數(shù),指連續(xù)心跳通訊未收到應(yīng)答的次數(shù)。節(jié)點(diǎn)nodei的連續(xù)失效次數(shù)記為losti。
失效節(jié)點(diǎn)替換的過(guò)程主要是當(dāng)心跳模塊檢測(cè)到節(jié)點(diǎn)失效后,通知調(diào)度模塊,新增一個(gè)節(jié)點(diǎn)以替換失效節(jié)點(diǎn),從而保證服務(wù)的可用性。同時(shí),考慮到節(jié)點(diǎn)的失效一般是由于節(jié)點(diǎn)所在的物理機(jī)故障引起。因此對(duì)于節(jié)點(diǎn)所屬物理機(jī)中的其余虛擬機(jī),追加一次心跳通訊,確認(rèn)其余虛擬機(jī)的可用性。具體算法如下:
Step1:心跳模塊向節(jié)點(diǎn)nodei發(fā)出心跳通訊請(qǐng)求。
Step2:節(jié)點(diǎn)nodei在時(shí)間ttimeout內(nèi)未返回應(yīng)答,節(jié)點(diǎn)nodei失效次數(shù)自加,losti=losti+1,轉(zhuǎn)向Step3;否則,則將失效次數(shù)清零losti=0,轉(zhuǎn)向Step4。
Step3:losti與預(yù)設(shè)的失效閾值lostmax作比較,如果losti<lostmax,轉(zhuǎn)向Step4;否則,判定該節(jié)點(diǎn)失效,轉(zhuǎn)向Step5。
Step4:等待Δt時(shí)間,返回Step1。
Step5:作出決策,增加類(lèi)型為typei的新節(jié)點(diǎn),并刪除nodei節(jié)點(diǎn),提交調(diào)度模塊執(zhí)行。同時(shí),向nodei節(jié)點(diǎn)所屬物理機(jī)中的其余虛擬機(jī),發(fā)送心跳通訊請(qǐng)求。
自動(dòng)伸縮模塊根據(jù)彈性伸縮算法,對(duì)于集群的規(guī)模進(jìn)行控制,滿足服務(wù)質(zhì)量需求的同時(shí),提高資源的利用率。彈性伸縮算法的主要思想是根據(jù)實(shí)時(shí)的監(jiān)控?cái)?shù)據(jù),與預(yù)設(shè)的彈性伸縮規(guī)則進(jìn)行匹配,從而作出增加或者減少節(jié)點(diǎn)的決定。
定義4 彈性伸縮規(guī)則,用以評(píng)判目前集群的資源使用狀況,用rule表示。rule規(guī)則主要由規(guī)則類(lèi)型 ruletype,上限閾值rulemax,下限閾值rulemin組成。rule={ruletype,rulemax,rulemin}
規(guī)則類(lèi)型,是指用于評(píng)判集群的資源指標(biāo)。常見(jiàn)的指標(biāo)有C
enPU使用率rulecpu,內(nèi)存使用率rulemem,網(wǎng)絡(luò)使用率rulenet,以及綜合負(fù)載ruleavg等。綜合負(fù)載一般由CPU、內(nèi)存、網(wǎng)絡(luò)的使用率進(jìn)行加權(quán)求和得到。
根據(jù)服務(wù)類(lèi)型的不同,對(duì)于規(guī)則類(lèi)型進(jìn)行排序,得到規(guī)則組RULE。以負(fù)載均衡服務(wù)為例,負(fù)載均衡主要消耗網(wǎng)絡(luò)帶寬和CPU,因此負(fù)載均衡的規(guī)則組RULElb為
根據(jù)實(shí)時(shí)的監(jiān)控?cái)?shù)據(jù),依據(jù)規(guī)則組RULElb進(jìn)行依次匹配。在進(jìn)行集群擴(kuò)展時(shí),從虛擬機(jī)池中取出一臺(tái)虛擬機(jī),加入到集群中;在進(jìn)行集群收縮時(shí),考慮到負(fù)載較輕的節(jié)點(diǎn)可以提供更高的服務(wù)質(zhì)量,將優(yōu)先移除負(fù)載較重的節(jié)點(diǎn)。移除的節(jié)點(diǎn)將不再接收任務(wù),在執(zhí)行完現(xiàn)有的任務(wù)后,由調(diào)度模塊交付虛擬機(jī)池進(jìn)行回收。負(fù)載均衡集群的彈性伸縮算法如下:
Step1:初始化n=0。從RULElb中取出規(guī)則rule, r ule =
Step2:獲得規(guī)則類(lèi)型rule的監(jiān)控值mt。
Step3:如果mt>rulemax,則說(shuō)明集群資源相對(duì)不足,轉(zhuǎn)向Step4;如果mt<rulemin,則說(shuō)明集群資源較為充足,轉(zhuǎn)向Step5;否則,轉(zhuǎn)向Step6。
Step4:作出集群擴(kuò)展的決策,增加類(lèi)型為 typei的新節(jié)點(diǎn),提交調(diào)度模塊執(zhí)行,轉(zhuǎn)向Step7。
Step5:作出集群收縮的決策,從集群中,選擇出負(fù)載最重的節(jié)點(diǎn)nodei,作出將nodej刪除的決策,提交調(diào)度模塊執(zhí)行,轉(zhuǎn)向Step7。
Step6:規(guī)則編號(hào)自加n=n+1,取出規(guī)則rule, r ule = RULElb[n],并轉(zhuǎn)向Step2;如果所有規(guī)則匹配完成,則轉(zhuǎn)向Step7。
Step7:結(jié)束整個(gè)彈性伸縮過(guò)程。
同樣,建立應(yīng)用層的規(guī)則組,利用上述算法,則可以實(shí)現(xiàn)應(yīng)用層的彈性伸縮。
負(fù)載調(diào)度算法,是調(diào)度模塊管理負(fù)載均衡層和應(yīng)用層之間調(diào)度關(guān)系的主要依據(jù)。
負(fù)載均衡節(jié)點(diǎn)部署有負(fù)載均衡軟件,負(fù)責(zé)將請(qǐng)求轉(zhuǎn)發(fā)給后端的應(yīng)用節(jié)點(diǎn)。由于受到軟件和資源的限制,對(duì)于負(fù)載均衡節(jié)點(diǎn)nodei,其負(fù)責(zé)調(diào)度的應(yīng)用節(jié)點(diǎn)數(shù)量存在上限limiti。
定義5 調(diào)度節(jié)點(diǎn)數(shù),指負(fù)載均衡節(jié)點(diǎn)負(fù)責(zé)調(diào)度的應(yīng)用節(jié)點(diǎn)數(shù)量。設(shè)負(fù)載均衡節(jié)點(diǎn)nodei的調(diào)度節(jié)點(diǎn)數(shù)為di,設(shè)調(diào)度節(jié)點(diǎn)數(shù)上限為dmax。
對(duì)于負(fù)載均衡節(jié)點(diǎn)nodei,在調(diào)度節(jié)點(diǎn)數(shù)達(dá)到上限后,即使為該節(jié)點(diǎn)分配更多的應(yīng)用節(jié)點(diǎn),其負(fù)載均衡能力已經(jīng)到達(dá)瓶頸,因此無(wú)法將更多的請(qǐng)求調(diào)度給應(yīng)用節(jié)點(diǎn),導(dǎo)致應(yīng)用節(jié)點(diǎn)資源的浪費(fèi)。因此負(fù)載調(diào)度算法需要綜合考慮負(fù)載均衡節(jié)點(diǎn)的負(fù)載能力。
定義6 從屬節(jié)點(diǎn)數(shù),指應(yīng)用節(jié)點(diǎn)從屬于的負(fù)載均衡節(jié)點(diǎn)的數(shù)量。應(yīng)用節(jié)點(diǎn) 的從屬節(jié)點(diǎn)數(shù)為p。
為避免出現(xiàn)單點(diǎn)失效,采用交叉調(diào)度,使得每個(gè)應(yīng)用節(jié)點(diǎn)可以從屬于p個(gè)負(fù)載均衡節(jié)點(diǎn)。負(fù)載調(diào)度算法在管理調(diào)度關(guān)系時(shí),需要為每個(gè)應(yīng)用節(jié)點(diǎn)分配多個(gè)負(fù)載均衡節(jié)點(diǎn)。當(dāng)所有的負(fù)載均衡節(jié)點(diǎn)均已經(jīng)達(dá)到上限時(shí),則自動(dòng)增加負(fù)載均衡節(jié)點(diǎn)以。負(fù)載調(diào)度算法如下:
Step1:調(diào)度模塊新增應(yīng)用節(jié)點(diǎn)nodej。
Step2:從LB中統(tǒng)計(jì)尚未達(dá)到調(diào)度節(jié)點(diǎn)上限的負(fù)載均衡節(jié)點(diǎn)個(gè)數(shù)n。如果n<p,則轉(zhuǎn)向Step3;否則轉(zhuǎn)向Step4。
Step3:新增負(fù)載均衡節(jié)點(diǎn)nodenew,加入到集合LB中,并轉(zhuǎn)向Step2。
Step4:從未達(dá)到調(diào)度節(jié)點(diǎn)上限的負(fù)載均衡節(jié)點(diǎn)中選出P個(gè)節(jié)點(diǎn),組成集合 LBj。LBj={nodei|di<dmax}
Step5:建立負(fù)載調(diào)度關(guān)系子集Rj。
Step6:更新負(fù)載均衡層和應(yīng)用層之間的調(diào)度關(guān)系集 R =R∪Rj。
為驗(yàn)證彈性負(fù)載均衡服務(wù)的有效性,本文使用了CloudSim[7]進(jìn)行了仿真實(shí)驗(yàn)。仿真實(shí)驗(yàn)?zāi)M了對(duì)于web服務(wù)系統(tǒng),從1000到10000用戶(hù)的并發(fā)訪問(wèn)。訪問(wèn)包括請(qǐng)求頁(yè)面文件以及用戶(hù)的交互行為。單用戶(hù)訪問(wèn)間隔為5秒。用戶(hù)請(qǐng)求超時(shí)時(shí)間設(shè)為2秒,即系統(tǒng)未在2秒內(nèi)作出響應(yīng),則認(rèn)為該訪問(wèn)失敗。
仿真實(shí)驗(yàn)根據(jù)本文提出的模型和策略,實(shí)現(xiàn)了基于云計(jì)算的彈性負(fù)載均衡服務(wù)(Elastic Load Balance,ELB),提供web系統(tǒng)負(fù)載均衡服務(wù)。作為對(duì)比,本文實(shí)現(xiàn)了由單一負(fù)載均衡節(jié)點(diǎn)構(gòu)成的負(fù)載均衡服務(wù)(Single Load Balance,SLB)和基于分片調(diào)度的負(fù)載均衡服務(wù)(Slice Load Balance,SLLB)。ELB系統(tǒng)采用交叉調(diào)度模型,是對(duì)本文提出的彈性負(fù)載均衡策略的實(shí)現(xiàn)。ELB系統(tǒng)可以根據(jù)系統(tǒng)的負(fù)載任意擴(kuò)展負(fù)載均衡節(jié)點(diǎn)的數(shù)量和應(yīng)用節(jié)點(diǎn)的數(shù)量。SLB系統(tǒng)由一個(gè)負(fù)載均衡節(jié)點(diǎn)和若干應(yīng)用節(jié)點(diǎn)組成。SLB系統(tǒng)只能依據(jù)系統(tǒng)的負(fù)載,擴(kuò)展應(yīng)用節(jié)點(diǎn)的數(shù)量,負(fù)載均衡節(jié)點(diǎn)無(wú)法擴(kuò)展。SLLB系統(tǒng)同ELB系統(tǒng)相似,區(qū)別在于SLLB系統(tǒng)使用基于分片調(diào)度的模型,每個(gè)應(yīng)用節(jié)點(diǎn)只從屬于一個(gè)負(fù)載均衡節(jié)點(diǎn)。
實(shí)驗(yàn)中,負(fù)載均衡系統(tǒng)的節(jié)點(diǎn)資源配置如表1所示。單個(gè)用戶(hù)平均請(qǐng)求數(shù)據(jù)量為1MB。應(yīng)用節(jié)點(diǎn)處理單個(gè)請(qǐng)求消耗CPU平均時(shí)間為0.2秒,平均消耗內(nèi)存2.1MB。
表1 負(fù)載均衡系統(tǒng)資源配置
負(fù)載均衡系統(tǒng)的性能主要通過(guò)以下兩個(gè)指標(biāo)進(jìn)行評(píng)估:
系統(tǒng)的吞吐量(Throughput),指在單位時(shí)間內(nèi)通過(guò)系統(tǒng)成功傳送的數(shù)據(jù)量。
系統(tǒng)的可用性(Service ability),指在實(shí)驗(yàn)的時(shí)間區(qū)間內(nèi)訪問(wèn)服務(wù)成功的概率,用以表示系統(tǒng)提供服務(wù)的能力。通過(guò)統(tǒng)計(jì)服務(wù)訪問(wèn)系統(tǒng)時(shí)的成功次數(shù)(Success Request,SR)和失敗的訪問(wèn)次數(shù)(Failure Request,F(xiàn)R),計(jì)算得到系統(tǒng)的可用性。
本文實(shí)驗(yàn)了在不同并發(fā)數(shù)下,對(duì)于系統(tǒng)進(jìn)行持續(xù)訪問(wèn)。得出從1000并發(fā)到10000不同并發(fā)數(shù)下,系統(tǒng)的狀態(tài)和性能。每組實(shí)驗(yàn)的仿真時(shí)間均設(shè)置為24小時(shí)。三個(gè)系統(tǒng)均采用公式(4)的彈性規(guī)則,規(guī)則參數(shù)一致。仿真結(jié)果如圖3、圖4所示。
▲ 圖3:系統(tǒng)吞吐量隨并發(fā)數(shù)的變化
▲ 圖4:系統(tǒng)可用性隨并發(fā)數(shù)的變化
由實(shí)驗(yàn)結(jié)果可以看出,單節(jié)點(diǎn)的負(fù)載均衡系統(tǒng)在并發(fā)量達(dá)到3000左右時(shí),系統(tǒng)的吞吐量不再隨并發(fā)量增加而有顯著增長(zhǎng)。單一的負(fù)載均衡節(jié)點(diǎn)吞吐量已經(jīng)到達(dá)上限,無(wú)法支持更多的請(qǐng)求轉(zhuǎn)發(fā),整個(gè)系統(tǒng)出現(xiàn)了性能瓶頸。同時(shí)由于并發(fā)數(shù)的增加,系統(tǒng)無(wú)法及時(shí)處理,系統(tǒng)的可用性在逐步降低。基于分片調(diào)度的負(fù)載均衡系統(tǒng)在并發(fā)量達(dá)到7000時(shí),雖然隨著并發(fā)數(shù)的增加,系統(tǒng)的吞吐量仍然有上升,但是由于此時(shí)系統(tǒng)的節(jié)點(diǎn)規(guī)模較大,負(fù)載均衡節(jié)點(diǎn)失效后,導(dǎo)致其后端應(yīng)用節(jié)點(diǎn)需要等候其所屬的負(fù)載均衡節(jié)點(diǎn)恢復(fù)后,才能繼續(xù)提供服務(wù)。因此隨著并發(fā)量的增加,可用性有一段較為明顯的下降。
與之對(duì)比,本文提出的面向云計(jì)算的彈性負(fù)載均衡系統(tǒng)的負(fù)載均衡節(jié)點(diǎn)和應(yīng)用節(jié)點(diǎn)能夠隨著并發(fā)數(shù)的增加,自動(dòng)擴(kuò)展,從而使得系統(tǒng)的吞吐量與并發(fā)數(shù)能夠呈線性增長(zhǎng)。同時(shí),由于引入了交叉調(diào)度的模型,系統(tǒng)的可用性并沒(méi)有隨并發(fā)數(shù)的增加而降低,而是一直維持在95%左右。較之SLB和SLLB系統(tǒng),本文提出的彈性負(fù)載均衡系統(tǒng)提供了穩(wěn)定可靠的服務(wù)。
在大規(guī)模、超大規(guī)模的部署環(huán)境中,單節(jié)點(diǎn)構(gòu)成的負(fù)載均衡層會(huì)成為整個(gè)系統(tǒng)性能瓶頸。針對(duì)此問(wèn)題,本文提出了基于云計(jì)算的彈性負(fù)載均衡服務(wù)將彈性負(fù)載均衡作為一種公共服務(wù)提供出來(lái)。為對(duì)負(fù)載均衡層和應(yīng)用層進(jìn)行統(tǒng)一管理,本文建立了集群管理模型和交叉調(diào)度模型,以提升系統(tǒng)的自動(dòng)化管理能力和系統(tǒng)的可靠性。引入了失效節(jié)點(diǎn)替換策略,設(shè)計(jì)了基于規(guī)則匹配的彈性伸縮算法和基于交叉調(diào)度模型的負(fù)載調(diào)度算法,以實(shí)現(xiàn)負(fù)載均衡層和應(yīng)用層的彈性伸縮。最后,對(duì)于本文提出的彈性負(fù)載均衡服務(wù)進(jìn)行了實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,彈性負(fù)載均衡服務(wù)隨著系統(tǒng)并發(fā)量的增加,可以有效提升系統(tǒng)的吞吐量并保持系統(tǒng)的高可用性,防止了負(fù)載均衡層的性能瓶頸問(wèn)題。