怎么計(jì)算WEB服務(wù)器的最大負(fù)載量?
動(dòng)態(tài)反饋負(fù)載均衡算法
動(dòng)態(tài)反饋負(fù)載均衡算法考慮服務(wù)器的實(shí)時(shí)負(fù)載和響應(yīng)情況,不斷調(diào)整服務(wù)器間處理請(qǐng)求的比例,來(lái)避免有些服務(wù)器超載時(shí)依然收到大量請(qǐng)求,從而提高整個(gè)系統(tǒng)的吞吐率。圖4.1顯示了該算法的工作環(huán)境,在負(fù)載調(diào)度器上運(yùn)行Monitor Daemon進(jìn)程,Monitor Daemon來(lái)監(jiān)視和收集各個(gè)服務(wù)器的負(fù)載信息。Monitor Daemon可根據(jù)多個(gè)負(fù)載信息算出一個(gè)綜合負(fù)載值。Monitor Daemon將各個(gè)服務(wù)器的綜合負(fù)載值和當(dāng)前權(quán)值算出一組新的權(quán)值,若新權(quán)值和當(dāng)前權(quán)值的差值大于設(shè)定的閥值,Monitor Daemon將該服務(wù)器的權(quán)值設(shè)置到內(nèi)核中的IPVS調(diào)度中,而在內(nèi)核中連接調(diào)度一般采用加權(quán)輪叫調(diào)度算法或者加權(quán)最小連接調(diào)度算法。
圖4.1:動(dòng)態(tài)反饋負(fù)載均衡算法的工作環(huán)境
連接調(diào)度
當(dāng)客戶通過(guò)TCP連接訪問(wèn)網(wǎng)絡(luò)訪問(wèn)時(shí),服務(wù)所需的時(shí)間和所要消耗的計(jì)算資源是千差萬(wàn)別的,它依賴于很多因素。例如,它依賴于請(qǐng)求的服務(wù)類型、當(dāng)前網(wǎng)絡(luò)帶寬的情況、以及當(dāng)前服務(wù)器資源利用的情況。一些負(fù)載比較重的請(qǐng)求需要進(jìn)行計(jì)算密集的查詢、數(shù)據(jù)庫(kù)訪問(wèn)、很長(zhǎng)響應(yīng)數(shù)據(jù)流;而負(fù)載比較輕的請(qǐng)求往往只需要讀一個(gè)HTML頁(yè)面或者進(jìn)行很簡(jiǎn)單的計(jì)算。
請(qǐng)求處理時(shí)間的千差萬(wàn)別可能會(huì)導(dǎo)致服務(wù)器利用的傾斜(Skew),即服務(wù)器間的負(fù)載不平衡。例如,有一個(gè)WEB頁(yè)面有A、B、C和D文件,其中D是大圖像文件,瀏覽器需要建立四個(gè)連接來(lái)取這些文件。當(dāng)多個(gè)用戶通過(guò)瀏覽器同時(shí)訪問(wèn)該頁(yè)面時(shí),最極端的情況是所有D文件的請(qǐng)求被發(fā)到同一臺(tái)服務(wù)器。所以說(shuō),有可能存在這樣情況,有些服務(wù)器已經(jīng)超負(fù)荷運(yùn)行,而其他服務(wù)器基本是閑置著。同時(shí),有些服務(wù)器已經(jīng)忙不過(guò)來(lái),有很長(zhǎng)的請(qǐng)求隊(duì)列,還不斷地收到新的請(qǐng)求。反過(guò)來(lái)說(shuō),這會(huì)導(dǎo)致客戶長(zhǎng)時(shí)間的等待,覺(jué)得系統(tǒng)的服務(wù)質(zhì)量差。
簡(jiǎn)單連接調(diào)度
簡(jiǎn)單連接調(diào)度可能會(huì)使得服務(wù)器傾斜的發(fā)生。在上面的例子中,若采用輪叫調(diào)度算法,且集群中正好有四臺(tái)服務(wù)器,必有一臺(tái)服務(wù)器總是收到D文件的請(qǐng)求。這種調(diào)度策略會(huì)導(dǎo)致整個(gè)系統(tǒng)資源的低利用率,因?yàn)橛行┵Y源被用盡導(dǎo)致客戶的長(zhǎng)時(shí)間等待,而其他資源空閑著。
實(shí)際TCP/IP流量的特征
文獻(xiàn)說(shuō)明網(wǎng)絡(luò)流量是呈波浪型發(fā)生的,在一段較長(zhǎng)時(shí)間的小流量后,會(huì)有一段大流量的訪問(wèn),然后是小流量,這樣跟波浪一樣周期性地發(fā)生。文獻(xiàn)揭示在WAN和LAN上網(wǎng)絡(luò)流量存在自相似的特征,在WEB訪問(wèn)流也存在自相似性。這就需要一個(gè)動(dòng)態(tài)反饋機(jī)制,利用服務(wù)器組的狀態(tài)來(lái)應(yīng)對(duì)訪問(wèn)流的自相似性。
動(dòng)態(tài)反饋負(fù)載均衡機(jī)制
TCP/IP流量的特征通俗地說(shuō)是有許多短事務(wù)和一些長(zhǎng)事務(wù)組成,而長(zhǎng)事務(wù)的工作量在整個(gè)工作量占有較高的比例。所以,我們要設(shè)計(jì)一種負(fù)載均衡算法,來(lái)避免長(zhǎng)事務(wù)的請(qǐng)求總被分配到一些機(jī)器上,而是盡可能將帶有毛刺(Burst)的分布分割成相對(duì)較均勻的分布。
我們提出基于動(dòng)態(tài)反饋負(fù)載均衡機(jī)制,來(lái)控制新連接的分配,從而控制各個(gè)服務(wù)器的負(fù)載。例如,在IPVS調(diào)度器的內(nèi)核中使用加權(quán)輪叫調(diào)度(Weighted Round-Robin Scheduling)算法來(lái)調(diào)度新的請(qǐng)求連接;在負(fù)載調(diào)度器的用戶空間中運(yùn)行Monitor Daemon。Monitor Daemon定時(shí)地監(jiān)視和收集各個(gè)服務(wù)器的負(fù)載信息,根據(jù)多個(gè)負(fù)載信息算出一個(gè)綜合負(fù)載值。Monitor Daemon將各個(gè)服務(wù)器的綜合負(fù)載值和當(dāng)前權(quán)值算出一組新的權(quán)值。當(dāng)綜合負(fù)載值表示服務(wù)器比較忙時(shí),新算出的權(quán)值會(huì)比其當(dāng)前權(quán)值要小,這樣新分配到該服務(wù)器的請(qǐng)求數(shù)就會(huì)少一些。當(dāng)綜合負(fù)載值表示服務(wù)器處于低利用率時(shí),新算出的權(quán)值會(huì)比其當(dāng)前權(quán)值要大,來(lái)增加新分配到該服務(wù)器的請(qǐng)求數(shù)。若新權(quán)值和當(dāng)前權(quán)值的差值大于設(shè)定的閥值,Monitor Daemon將該服務(wù)器的權(quán)值設(shè)置到內(nèi)核中的IPVS調(diào)度中。過(guò)了一定的時(shí)間間隔(如2秒鐘),Monitor Daemon再查詢各個(gè)服務(wù)器的情況,并相應(yīng)調(diào)整服務(wù)器的權(quán)值;這樣周期性地進(jìn)行??梢哉f(shuō),這是一個(gè)負(fù)反饋機(jī)制,使得服務(wù)器保持較好的利用率。 #p#page_title#e#
在加權(quán)輪叫調(diào)度算法中,當(dāng)服務(wù)器的權(quán)值為零,已建立的連接會(huì)繼續(xù)得到該服務(wù)器的服務(wù),而新的連接不會(huì)分配到該服務(wù)器。系統(tǒng)管理員可以將一臺(tái)服務(wù)器的權(quán)值設(shè)置為零,使得該服務(wù)器安靜下來(lái),當(dāng)已有的連接都結(jié)束后,他可以將該服務(wù)器切出,對(duì)其進(jìn)行維護(hù)。維護(hù)工作對(duì)系統(tǒng)都是不可少的,比如硬件升級(jí)和軟件更新等,零權(quán)值使得服務(wù)器安靜的功能很主要。所以,在動(dòng)態(tài)反饋負(fù)載均衡機(jī)制中我們要保證該功能,當(dāng)服務(wù)器的權(quán)值為零時(shí),我們不對(duì)服務(wù)器的權(quán)值進(jìn)行調(diào)整。
綜合負(fù)載
在計(jì)算綜合負(fù)載時(shí),我們主要使用兩大類負(fù)載信息:輸入指標(biāo)和服務(wù)器指標(biāo)。輸入指標(biāo)是在調(diào)度器上收集到的,而服務(wù)器指標(biāo)是在服務(wù)器上的各種負(fù)載信息。我們用綜合負(fù)載來(lái)反映服務(wù)器當(dāng)前的比較確切負(fù)載情況,對(duì)于不同的應(yīng)用,會(huì)有不同的負(fù)載情況,這里我們引入各個(gè)負(fù)載信息的系數(shù),來(lái)表示各個(gè)負(fù)載信息在綜合負(fù)載中輕重。系統(tǒng)管理員根據(jù)不同應(yīng)用的需求,調(diào)整各個(gè)負(fù)載信息的系數(shù)。另外,系統(tǒng)管理員設(shè)置收集負(fù)載信息的時(shí)間間隔。
輸入指標(biāo)主要是在單位時(shí)間內(nèi)服務(wù)器收到新連接數(shù)與平均連接數(shù)的比例,它是在調(diào)度器上收集到的,所以這個(gè)指標(biāo)是對(duì)服務(wù)器負(fù)載情況的一個(gè)估計(jì)值。在調(diào)度器上有各個(gè)服務(wù)器收到連接數(shù)的計(jì)數(shù)器,對(duì)于服務(wù)器Si,可以得到分別在時(shí)間T1和T2時(shí)的計(jì)數(shù)器值Ci1和Ci2,計(jì)算出在時(shí)間間隔T2-T1內(nèi)服務(wù)器 Si收到新連接數(shù)Ni = Ci2 - Ci1。這樣,得到一組服務(wù)器在時(shí)間間隔T2-T1內(nèi)服務(wù)器Si收到新連接數(shù){Ni},服務(wù)器Si的輸入指標(biāo)INPUTi為其新連接數(shù)與n臺(tái)服務(wù)器收到平均連接數(shù)的比值,其公式為