MonitorDaemon將各個服務(wù)器的綜合負(fù)載值和當(dāng)前權(quán)值算出一組新的權(quán)值,若新權(quán)值和當(dāng)前權(quán)值的差值大于設(shè)定的閥值,MonitorDaemon將該服務(wù)器的權(quán)值設(shè)置到內(nèi)核中的IPVS調(diào)度中,而在內(nèi)核中連接調(diào)度一般采用加權(quán)輪叫調(diào)度算法或者加權(quán)最小連接調(diào)度算法。
動態(tài)反饋負(fù)載均衡算法
考慮服務(wù)器的實時負(fù)載和響應(yīng)情況,不斷調(diào)整服務(wù)器間處理請求的比例,來避免有些服務(wù)器超載時依然收到大量請求,從而提高整個系統(tǒng)的吞吐率。圖1顯示了該算法的工作環(huán)境,在負(fù)載調(diào)度器上運行MonitorDaemon進程,MonitorDaemon來監(jiān)視和收集各個服務(wù)器的負(fù)載信息。MonitorDaemon可根據(jù)多個負(fù)載信息算出一個綜合負(fù)載值。
MonitorDaemon將各個服務(wù)器的綜合負(fù)載值和當(dāng)前權(quán)值算出一組新的權(quán)值,若新權(quán)值和當(dāng)前權(quán)值的差值大于設(shè)定的閥值,MonitorDaemon將該服務(wù)器的權(quán)值設(shè)置到內(nèi)核中的IPVS調(diào)度中,而在內(nèi)核中連接調(diào)度一般采用加權(quán)輪叫調(diào)度算法或者加權(quán)最小連接調(diào)度算法。
連接調(diào)度
當(dāng)客戶通過TCP連接訪問網(wǎng)絡(luò)訪問時,服務(wù)所需的時間和所要消耗的計算資源是千差萬別的,它依賴于很多因素。例如,它依賴于請求的服務(wù)類型、當(dāng)前網(wǎng)絡(luò)帶寬的情況、以及當(dāng)前服務(wù)器資源利用的情況。一些負(fù)載比較重的請求需要進行計算密集的查詢、數(shù)據(jù)庫訪問、很長響應(yīng)數(shù)據(jù)流;而負(fù)載比較輕的請求往往只需要讀一個HTML頁面或者進行很簡單的計算。
請求處理時間的千差萬別可能會導(dǎo)致服務(wù)器利用的傾斜(Skew),即服務(wù)器間的負(fù)載不平衡。例如,有一個WEB頁面有A、B、C和D文件,其中D是大圖像文件,瀏覽器需要建立四個連接來取這些文件。當(dāng)多個用戶通過瀏覽器同時訪問該頁面時,最極端的情況是所有D文件的請求被發(fā)到同一臺服務(wù)器。
所以說,有可能存在這樣情況,有些服務(wù)器已經(jīng)超負(fù)荷運行,而其他服務(wù)器基本是閑置著。同時,有些服務(wù)器已經(jīng)忙不過來,有很長的請求隊列,還不斷地收到新的請求。反過來說,這會導(dǎo)致客戶長時間的等待,覺得系統(tǒng)的服務(wù)質(zhì)量差。
簡單連接調(diào)度
簡單連接調(diào)度可能會使得服務(wù)器傾斜的發(fā)生。在上面的例子中,若采用輪叫調(diào)度算法,且集群中正好有四臺服務(wù)器,必有一臺服務(wù)器總是收到D文件的請求。這種調(diào)度策略會導(dǎo)致整個系統(tǒng)資源的低利用率,因為有些資源被用盡導(dǎo)致客戶的長時間等待,而其他資源空閑著。
實際TCP/IP流量的特征
文獻說明網(wǎng)絡(luò)流量是呈波浪型發(fā)生的,在一段較長時間的小流量后,會有一段大流量的訪問,然后是小流量,這樣跟波浪一樣周期性地發(fā)生。文獻揭示在WAN和LAN上網(wǎng)絡(luò)流量存在自相似的特征,在WEB訪問流也存在自相似性。這就需要一個動態(tài)反饋機制,利用服務(wù)器組的狀態(tài)來應(yīng)對訪問流的自相似性。