摘 要: 闡述了集群虛擬服務(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)也無(wú)法承擔(dān)。在此情況下,,如果放棄現(xiàn)有設(shè)備單純將硬件升級(jí),,會(huì)造成現(xiàn)有資源的浪費(fèi)。因此,,當(dāng)前和未來(lái)的網(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偽裝,,接下來(lái)創(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)文的能力過低,無(wú)法與實(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)域的仿真建?;蚍治鲋小?BR> 在仿真模型中,,負(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