摘 要: 闡述了集群虛擬服務(wù)器的工作原理和三種負(fù)載均衡方式,通過實(shí)例討論了虛擬服務(wù)器的仿真和建模方法,創(chuàng)建了測(cè)試和仿真系統(tǒng)性能的輸入和系統(tǒng)模型,并依據(jù)Q-Q圖和累積分布函數(shù)校驗(yàn)了其概率分布。
關(guān)鍵詞: 集群 虛擬服務(wù)器 負(fù)載均衡 仿真 建模 概率分布
隨著互聯(lián)網(wǎng)訪問量和數(shù)據(jù)流量的快速增長(zhǎng),新的應(yīng)用層出不窮。盡管Internet服務(wù)器處理能力和計(jì)算強(qiáng)度相應(yīng)增大,但業(yè)務(wù)量的發(fā)展超出了先前的估計(jì),以至過去按最優(yōu)配置建設(shè)的服務(wù)器系統(tǒng)也無法承擔(dān)。在此情況下,如果放棄現(xiàn)有設(shè)備單純將硬件升級(jí),會(huì)造成現(xiàn)有資源的浪費(fèi)。因此,當(dāng)前和未來的網(wǎng)絡(luò)服務(wù)不僅要提供更豐富的內(nèi)容、更好的交互性、更高的安全性,還要能承受更高的訪問量,這就需要網(wǎng)絡(luò)服務(wù)具有更高性能、更大可用性、良好可擴(kuò)展性和卓越的性價(jià)比。于是,集群虛擬服務(wù)器技術(shù)和負(fù)載均衡機(jī)制應(yīng)運(yùn)而生。
集群虛擬服務(wù)器[1]可以將一些真實(shí)服務(wù)器" title="真實(shí)服務(wù)器">真實(shí)服務(wù)器集中在一起,組成一個(gè)可擴(kuò)展、高可用性和高可靠性的統(tǒng)一體。負(fù)載均衡[2]建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,提供了一種廉價(jià)、有效和透明的方法建立服務(wù)器集群系統(tǒng),擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬,增加吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高網(wǎng)絡(luò)的靈活性和可用性。使用負(fù)載均衡機(jī)制,大量的并發(fā)訪問或數(shù)據(jù)流量就可以分配到多臺(tái)節(jié)點(diǎn)設(shè)備上分別處理。系統(tǒng)處理能力得到大幅度提高,大大減少用戶等待應(yīng)答的時(shí)間。
實(shí)際應(yīng)用中,虛擬服務(wù)器包含的真實(shí)服務(wù)器越多,整體服務(wù)器的性能指標(biāo)(如應(yīng)答延遲、吞吐率等)越高,但價(jià)格也越高。在集群中通道或其他部分也可能會(huì)進(jìn)入飽和狀態(tài)。因此,有必要根據(jù)實(shí)際應(yīng)用設(shè)計(jì)虛擬服務(wù)器的仿真模型" title="仿真模型">仿真模型,依據(jù)實(shí)際系統(tǒng)的測(cè)量數(shù)據(jù)確定隨機(jī)變量" title="隨機(jī)變量">隨機(jī)變量的概率分布類型和參數(shù),通過分位點(diǎn)-分位點(diǎn)圖即Q-Q圖(Quantile-Quantile Plot)和累積分布函數(shù)(Cumulative Distribution Functions)等方法校驗(yàn)應(yīng)答或傳播延遲" title="傳播延遲">傳播延遲等性能指標(biāo)的概率分布,通過仿真軟件和工具(如Automod[3])事先分析服務(wù)器的運(yùn)行狀態(tài)和性能特點(diǎn),使得集群系統(tǒng)的整體性能穩(wěn)定,提高虛擬服務(wù)器設(shè)計(jì)的客觀性和設(shè)計(jì)的可靠性,降低服務(wù)器建設(shè)的投資風(fēng)險(xiǎn)。
1 集群虛擬服務(wù)器的體系結(jié)構(gòu)
一般而言,首先需要在集群虛擬服務(wù)器上建立互聯(lián)網(wǎng)協(xié)議偽裝(Internet Protocol Masquerading)機(jī)制,即IP偽裝,接下來創(chuàng)立IP端口轉(zhuǎn)發(fā)機(jī)制,然后給出在真實(shí)服務(wù)器上的相關(guān)設(shè)置。圖1為集群虛擬服務(wù)器的通用體系結(jié)構(gòu)。集群虛擬服務(wù)器通常包括:真實(shí)服務(wù)器(Real Servers)和負(fù)載均衡器" title="負(fù)載均衡器">負(fù)載均衡器(Load Balancer)。
由于虛擬服務(wù)器的網(wǎng)絡(luò)地址轉(zhuǎn)換方式是基于IP偽裝的,因此對(duì)后臺(tái)真實(shí)服務(wù)器的操作系統(tǒng)沒有特別要求,可以是Windows操作系統(tǒng),也可以是Linux或其他操作系統(tǒng)。
負(fù)載均衡器是服務(wù)器集群系統(tǒng)的惟一入口點(diǎn)。當(dāng)客戶請(qǐng)求到達(dá)時(shí),均衡器會(huì)根據(jù)真實(shí)服務(wù)器負(fù)載情況和設(shè)定的調(diào)度算法從真實(shí)服務(wù)器中選出一個(gè)服務(wù)器,再將該請(qǐng)求轉(zhuǎn)發(fā)到選出的服務(wù)器,并記錄該調(diào)度。當(dāng)這個(gè)請(qǐng)求的其他報(bào)文到達(dá)后,該報(bào)文也會(huì)被轉(zhuǎn)發(fā)到前面已經(jīng)選出的服務(wù)器。因?yàn)樗械牟僮鞫荚诓僮飨到y(tǒng)核心空間中完成,調(diào)度開銷很小,所以負(fù)載均衡器具有很高的吞吐率。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,客戶看到的是單一的虛擬服務(wù)器。
負(fù)載均衡集群的實(shí)現(xiàn)方案有多種,其中一種是Linux虛擬服務(wù)器LVS(Linux Virtual Server)方案。LVS實(shí)現(xiàn)負(fù)載均衡的技術(shù)有三種:網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation)、直接路由(Direct Routing)和IP隧道(IP Tunneling)。
網(wǎng)絡(luò)地址轉(zhuǎn)換按照IETF標(biāo)準(zhǔn),允許一個(gè)整體機(jī)構(gòu)以一個(gè)公用IP地址出現(xiàn)在Internet上。通過網(wǎng)絡(luò)地址轉(zhuǎn)換,負(fù)載均衡器重寫請(qǐng)求報(bào)文的目標(biāo)地址,根據(jù)預(yù)設(shè)的調(diào)度算法,將請(qǐng)求分派給后端的真實(shí)服務(wù)器;真實(shí)服務(wù)器的應(yīng)答報(bào)文通過均衡器時(shí),報(bào)文的源地址被重寫,把內(nèi)部私有網(wǎng)絡(luò)地址翻譯成合法網(wǎng)絡(luò)IP地址,再返回給客戶,完成整個(gè)負(fù)載調(diào)度過程。
直接路由的應(yīng)答連接調(diào)度和管理與網(wǎng)絡(luò)地址轉(zhuǎn)換的調(diào)度和管理相同,但它的報(bào)文是直接轉(zhuǎn)發(fā)給真實(shí)服務(wù)器。在直接路由應(yīng)答中,均衡器不修改、也不封裝IP報(bào)文,而是將數(shù)據(jù)幀的媒體接入控制MAC(Medium Access Control)地址改為選出服務(wù)器的MAC地址,再將修改后的數(shù)據(jù)幀在局域網(wǎng)上發(fā)送。因?yàn)閿?shù)據(jù)幀的MAC地址是選出的服務(wù)器,所以服務(wù)器肯定可以收到該數(shù)據(jù)幀,從中獲得該IP報(bào)文。當(dāng)服務(wù)器發(fā)現(xiàn)報(bào)文的目標(biāo)地址在本地的網(wǎng)絡(luò)設(shè)備時(shí),服務(wù)器處理該報(bào)文,然后根據(jù)路由表應(yīng)答報(bào)文,直接返回給客戶。
IP隧道是將一個(gè)IP報(bào)文封裝在另一個(gè)IP報(bào)文中的技術(shù)。該技術(shù)可以使目標(biāo)為某個(gè)IP地址的數(shù)據(jù)報(bào)文被封裝和轉(zhuǎn)發(fā)到另一個(gè)IP地址。用戶利用IP隧道技術(shù)將請(qǐng)求報(bào)文封裝轉(zhuǎn)發(fā)給后端服務(wù)器,應(yīng)答報(bào)文能從后端服務(wù)器直接返回給客戶。這樣做,負(fù)載均衡器只負(fù)責(zé)調(diào)度請(qǐng)求,而應(yīng)答直接返回給客戶,不需要再處理應(yīng)答包,將極大地提高整個(gè)集群系統(tǒng)的吞吐量并有效降低負(fù)載均衡器的負(fù)載。IP隧道技術(shù)要求所有的服務(wù)器必須支持IP Tunneling或IP封裝(Encapsulation)協(xié)議。
2 集群虛擬服務(wù)器報(bào)文延遲的確定
通過一個(gè)裝有5臺(tái)真實(shí)服務(wù)器并使用網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)實(shí)現(xiàn)Linux虛擬服務(wù)器的實(shí)際系統(tǒng)[4],可以得到有關(guān)請(qǐng)求和應(yīng)答報(bào)文的時(shí)戳(Time Stamp)文件。根據(jù)這些文件,能夠計(jì)算出集群虛擬服務(wù)器的仿真和建模所需數(shù)據(jù)。
為了確定隨機(jī)變量分布類型和參數(shù),應(yīng)該統(tǒng)計(jì)下列延遲:(1)從客戶到負(fù)載均衡器的傳播延遲(Transport Delay);(2)負(fù)載均衡器的應(yīng)答延遲(Response Delay);(3)從負(fù)載均衡器到真實(shí)服務(wù)器的傳播延遲;(4)真實(shí)服務(wù)器的應(yīng)答延遲;(5)從真實(shí)服務(wù)器到負(fù)載均衡器的傳播延遲;(6)負(fù)載均衡器對(duì)真實(shí)服務(wù)器的應(yīng)答延遲;(7)從負(fù)載均衡器到客戶的傳播延遲。
在實(shí)際系統(tǒng)產(chǎn)生的時(shí)戳文件中,間接地描述了上述各延遲時(shí)間。文件包含的內(nèi)容如下:
……
192.168.3.202 //IP地址
53295 //端口
1022834955.914398316 //時(shí)戳(秒)
1 //報(bào)文類型
2072754558 //序列號(hào)
192.168.3.202
53295
1022834955.914424877
4
2081793697
……
當(dāng)一個(gè)服務(wù)請(qǐng)求到達(dá)集群虛擬服務(wù)器系統(tǒng)時(shí),即產(chǎn)生帶有惟一序列號(hào)的同步請(qǐng)求報(bào)文(Synchronized Request Package),將該報(bào)文轉(zhuǎn)發(fā)到某一真實(shí)服務(wù)器,同時(shí)建立該服務(wù)器與客戶端的連接,每個(gè)這樣的連接都帶有惟一的端口號(hào);該服務(wù)器處理通過該連接的確認(rèn)請(qǐng)求報(bào)文(Acknowledgement Request Package),直到服務(wù)器收到結(jié)束請(qǐng)求報(bào)文(Finished Request Package)。對(duì)每一種類型的請(qǐng)求報(bào)文,系統(tǒng)都給予一個(gè)相應(yīng)的應(yīng)答報(bào)文。因此,在不同的報(bào)文時(shí)戳文件中,如果兩條記錄具有相同的端口號(hào)、報(bào)文類型和序列號(hào),則它們是同一個(gè)請(qǐng)求或應(yīng)答報(bào)文,對(duì)相關(guān)的時(shí)戳相減即可得到集群虛擬服務(wù)器系統(tǒng)的仿真和建模所需的延遲數(shù)據(jù)。通過所編寫的C++程序即可計(jì)算這些延遲。
3 系統(tǒng)仿真模型
上述的集群虛擬服務(wù)器實(shí)際系統(tǒng)的仿真模型如圖2所示,在負(fù)載均衡器、各通道、5臺(tái)真實(shí)服務(wù)器中通過或處理的均為請(qǐng)求或應(yīng)答報(bào)文。
4 隨機(jī)變量模型的確定
對(duì)具有隨機(jī)變量的集群虛擬服務(wù)器進(jìn)行仿真,必須確定其隨機(jī)變量的概率分布,以便在仿真模型中對(duì)這些分布進(jìn)行取樣,得到所需的隨機(jī)變量。
4.1 實(shí)際虛擬服務(wù)器的延遲數(shù)據(jù)概況
在實(shí)際虛擬服務(wù)器的負(fù)載均衡器、各通道和5臺(tái)真實(shí)服務(wù)器中,對(duì)請(qǐng)求和應(yīng)答報(bào)文都有一定的延遲。部分報(bào)文延遲的統(tǒng)計(jì)數(shù)據(jù)如表1所示。
由表1中的數(shù)據(jù)可見,報(bào)文延遲的中位數(shù)與均值差異較大,所以其概率分布不對(duì)稱;變異系數(shù)不等于1,導(dǎo)致概率分布不會(huì)是指數(shù)分布,而可能是γ分布或其他分布。
4.2 隨機(jī)變量的概率分布
圖3為第一臺(tái)真實(shí)服務(wù)器到負(fù)載均衡器之間的通道報(bào)文傳播延遲直方圖,其中t為報(bào)文延遲時(shí)間,h(t)為報(bào)文延遲區(qū)間數(shù)。由圖3可知,通道內(nèi)的報(bào)文傳播延遲數(shù)據(jù)近似服從γ分布或?qū)?shù)正態(tài)分布[5]。
描述γ分布需要兩個(gè)參數(shù):形狀(Shape)參數(shù)α和比例(Scale)參數(shù)β,這兩個(gè)參數(shù)與均值M、方差V之間的關(guān)系是非線性的:
M=αβ (1)
V=αβ2 (2)
描述對(duì)數(shù)正態(tài)分布也需要形狀參數(shù)σ和比例參數(shù)μ,這兩個(gè)參數(shù)與均值M、方差V之間的關(guān)系也是非線性的:
式(1)~(4)都可以通過最大似然估計(jì)MLE(Maximum Likelihood Estimator)方法[5]或最速下降法(Steepest Descent Method)求出。表2給出了用這兩種方法求出的從第一臺(tái)真實(shí)服務(wù)器到負(fù)載均衡器之間通道內(nèi)的報(bào)文延遲概率分布參數(shù)。
使用累積分布函數(shù)和Q-Q圖可以校驗(yàn)并進(jìn)一步確定上述通道內(nèi)報(bào)文傳播延遲的概率分布。取用表2中的參數(shù),可以得到γ分布的累積分布函數(shù),如圖4所示,其中t為報(bào)文延遲時(shí)間,F(xiàn)(t)為報(bào)文延遲的累積分布函數(shù)。為作比較,實(shí)驗(yàn)分布也畫在該圖中。γ分布和對(duì)數(shù)正態(tài)分布的Q-Q圖如圖5所示。
由圖4和圖5可以看出,γ分布較好地?cái)M合了該通道內(nèi)的報(bào)文傳播延遲數(shù)據(jù)分布。其他通道報(bào)文延遲直方圖也有類似形狀。經(jīng)計(jì)算和分析,這些通道的報(bào)文傳播延遲概率分布也近似服從γ分布。
根據(jù)表1中的數(shù)據(jù)以及相關(guān)的直方圖都難以確定在負(fù)載均衡器和真實(shí)服務(wù)器中報(bào)文延遲的理論分布,因此,采用實(shí)驗(yàn)分布[6]作為其模型。
5 模型仿真
在建立了圖1所示的集群虛擬服務(wù)器的系統(tǒng)仿真模型并確定了其隨機(jī)變量的分布特性后,可以采用由美國(guó)布魯克斯自動(dòng)化公司(Brooks Automation)開發(fā)的仿真軟件Automod輸入該模型,并通過在Automod環(huán)境中編程進(jìn)行集群虛擬服務(wù)器的仿真和分析。
在Automod的仿真過程中,可以直接利用軟件提供的資源(Resource)作為各種報(bào)文數(shù)據(jù)處理的單元;系統(tǒng)各部分的報(bào)文排隊(duì)活動(dòng)可以直接通過排隊(duì)(Queue)實(shí)現(xiàn);建立一個(gè)負(fù)載產(chǎn)生器,等效為在Internet上使用虛擬服務(wù)器的客戶。
通過采用Automod的屬性變量(Attribute Variable)可以解決負(fù)載均衡器的雙方向報(bào)文處理功能的問題。負(fù)載均衡器使用輪轉(zhuǎn)調(diào)度算法(Round Robin Scheduling),即假設(shè)所有真實(shí)服務(wù)器的處理性能均相同,依次將請(qǐng)求調(diào)度到不同的服務(wù)器。
驗(yàn)證仿真模型可以分別在實(shí)際虛擬服務(wù)器系統(tǒng)和Automod的仿真模型中從以下兩方面進(jìn)行對(duì)比:(1)在負(fù)載均衡器、各個(gè)真實(shí)服務(wù)器和通道中排隊(duì)的應(yīng)答或傳播報(bào)文數(shù)量;(2)真實(shí)服務(wù)器及負(fù)載均衡器的CPU利用率。例如,當(dāng)使用實(shí)際的應(yīng)答或傳播報(bào)文延遲數(shù)據(jù)時(shí),在Automod的仿真模型中,如果設(shè)置一個(gè)較低的資源量,則在仿真過程中就會(huì)發(fā)現(xiàn)大部分的負(fù)載都被堵在真實(shí)服務(wù)器的排隊(duì)中,即真實(shí)服務(wù)器處理報(bào)文的能力過低,無法與實(shí)際系統(tǒng)的狀況相比;如果設(shè)置一個(gè)較高的資源量,則意味著服務(wù)器的并行處理能力增加,真實(shí)服務(wù)器的利用率提高,負(fù)載就很少或不會(huì)滯留在真實(shí)服務(wù)器的排隊(duì)中。因此,在Automod中可以根據(jù)實(shí)際情況調(diào)整仿真模型的資源量大小。
如果在Automod中增加負(fù)載產(chǎn)生器的負(fù)載產(chǎn)生率,就等效為用戶訪問量增加,通過觀察排隊(duì)中的負(fù)載滯留比例,就可以發(fā)現(xiàn)系統(tǒng)的最大處理報(bào)文的能力以及系統(tǒng)各部分應(yīng)答報(bào)文可能出現(xiàn)瓶頸之處。例如,將負(fù)載產(chǎn)生率增加一倍,雖然系統(tǒng)仍然可以處理所有的報(bào)文,但各臺(tái)真實(shí)服務(wù)器的平均利用率將達(dá)80%左右。顯然,這時(shí)系統(tǒng)應(yīng)答報(bào)文的“瓶頸”為真實(shí)服務(wù)器,有必要在系統(tǒng)中增添一臺(tái)新的真實(shí)服務(wù)器。
通過一個(gè)包括5臺(tái)真實(shí)服務(wù)器的實(shí)際虛擬服務(wù)器系統(tǒng),收集并計(jì)算了仿真和建模的樣板數(shù)據(jù)。依據(jù)系統(tǒng)報(bào)文延遲的中位數(shù)、均值、變異系數(shù)和直方圖等,確定了系統(tǒng)隨機(jī)變量的概率分布;采用最大似然估計(jì)方法和最速下降法,得到了通道概率分布的具體參數(shù);根據(jù)Q-Q圖和累積分布函數(shù)進(jìn)一步校驗(yàn)并最終確定通道的概率分布形式。使用Automod軟件進(jìn)行了仿真建模和編程,借助仿真結(jié)果可以發(fā)現(xiàn)虛擬服務(wù)器的最大處理能力和可能的“瓶頸”之處。通過及時(shí)定位系統(tǒng)“瓶頸”,可以有的放矢地進(jìn)一步研究和改進(jìn)系統(tǒng),有效提高系統(tǒng)性能。所采用的仿真方法也可以用于其他領(lǐng)域的仿真建?;蚍治鲋?。
在仿真模型中,負(fù)載均衡方式和調(diào)度算法還需要進(jìn)一步增加,以便于比較不同的虛擬服務(wù)器系統(tǒng)。樣本數(shù)據(jù)也需要進(jìn)一步擴(kuò)充,以避免報(bào)文延遲的自相關(guān)性。
參考文獻(xiàn)
1 Schroeder T,Goddard S,Ramamurthy B.Scalable web server clustering technologies[J].IEEE Network,2000;14(3):38~45
2 Yong M T,Ayani R.Comparison of load balancing strategies on cluster-based web servers[J].Simulation,2001;77(5):185~195
3 Nikoukaran J.Software selection for simulation in manufac-turing:A review[J].Simulation Practice and Theory,1999;7(1):1~14
4 Chepurko A.Instrumenting a cluster-based web server for performance measuring[D].Erlangen-Nuremberg University,2002
5 Law A M,Kelton W D.Simulation modeling and analysis (Third Edition)[M].McGraw-Hill Inc,2000
6 肖田云,張燕云,陳加棟.系統(tǒng)仿真導(dǎo)論[M].北京:清華大學(xué)出版社,2000