王春娟
(陜西學(xué)前師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,陜西西安,710100)
IPVS軟件和集群管理軟件ipvsadm是LVS集群進(jìn)行負(fù)載均衡的核心部分,該軟件運(yùn)行在安裝Linux操作系統(tǒng)的調(diào)度器上,負(fù)責(zé)將用戶請(qǐng)求合理、科學(xué)地轉(zhuǎn)發(fā)到集群中負(fù)載最輕的服務(wù)器上。IPVS軟件中包含十種可用的調(diào)度算法,但只有帶權(quán)重循環(huán)算法和帶權(quán)重最小鏈接算法事先會(huì)給每臺(tái)服務(wù)器配置一個(gè)符合其處理能力的權(quán)重,下面來分析這兩種算法的核心思想。
該算法簡(jiǎn)稱WRR,存放在IPVS軟件的ip_vs_wrr.c文件中,該算法根據(jù)集群服務(wù)器處理負(fù)載的能力為每個(gè)服務(wù)器配置一個(gè)合適的權(quán)重Wi,然后將權(quán)重與循環(huán)技術(shù)一起使用來選擇下一個(gè)合適的服務(wù)器響應(yīng)用戶請(qǐng)求,該算法不考慮每個(gè)服務(wù)器當(dāng)前連接數(shù)。權(quán)重為2的服務(wù)器將收到權(quán)重為1的服務(wù)器的2倍的新連接數(shù),如果將服務(wù)器的權(quán)重Wi設(shè)置為0,就不再接收任何用戶請(qǐng)求。
該算法簡(jiǎn)稱WLC,存放在IPVS軟件的ip_vs_wlc.c文件中,帶權(quán)重最小連接算法將最小鏈接算法和每個(gè)服務(wù)器的指定權(quán)重Wi結(jié)合起來進(jìn)行服務(wù)器的選擇,調(diào)度器首先計(jì)算每個(gè)集群服務(wù)器的當(dāng)前連接數(shù)Ci,然后除以該服務(wù)器配置的權(quán)重Wi,以取得每個(gè)服務(wù)器的Ci/Wi值,取出該值最小的服務(wù)器來處理用戶的請(qǐng)求,當(dāng)服務(wù)器的權(quán)重Wi為0時(shí),不再給該服務(wù)器分配新的用戶請(qǐng)求。
(1)集群中配置的權(quán)重是根據(jù)每個(gè)服務(wù)器的硬件配置和最大處理能力事先通過管理軟件ipvsadm進(jìn)行配置的,不能根據(jù)服務(wù)器的實(shí)時(shí)處理能力進(jìn)行調(diào)節(jié);
(2)沒有綜合考慮影響服務(wù)器實(shí)時(shí)負(fù)載的因素。
為避免原有算法的不足,本文上述兩種算法的基礎(chǔ)上,提出一種改進(jìn)的算法,綜合考慮服務(wù)器的實(shí)時(shí)處理能力,用當(dāng)前連接數(shù)、CPU利用率、內(nèi)存占用率等值來衡量服務(wù)器的實(shí)時(shí)負(fù)載值,進(jìn)而動(dòng)態(tài)的調(diào)整服務(wù)器當(dāng)前的權(quán)重Wi,再結(jié)合WRR或者WLC算法來合理分配用戶請(qǐng)求,使得服務(wù)器間處理任務(wù)達(dá)到均衡,進(jìn)而提高集群的整體性能。
假設(shè)集群中的服務(wù)器表示為Si(i=1,2,……,n),Wi表示服務(wù)器原先的權(quán)重,Wi’表示更新的權(quán)重。
2.2.1 服務(wù)器Si的負(fù)載L(Si)
計(jì)算服務(wù)器Si的負(fù)載時(shí),本文考慮用CPU使用率(P(Ci))和內(nèi)存使用率(P(Mi))來衡量服務(wù)器的實(shí)時(shí)負(fù)載,L(Si)=r1*P(Ci)+r2* P(Mi),r1表示服務(wù)器CPU使用率對(duì)實(shí)時(shí)負(fù)載影響的重要程度,r2表示服務(wù)器內(nèi)存使用率對(duì)實(shí)時(shí)負(fù)載影響的重要程度,r1 和r2之和為1、可以針對(duì)集群提供的服務(wù)類型靈活地調(diào)整這兩個(gè)值。
同時(shí),為L(zhǎng)(Si)、P(Ci))和P(Mi)設(shè)置一個(gè)最大值分別為 L(Si)max、P(Ci)max和 P(Mi)max,當(dāng)服務(wù)器 Si的 L(Si)、P(Ci))和P(Mi)值超過其最大值時(shí),將該服務(wù)器新的權(quán)重Wi’設(shè)置為0。
2.2.2 服務(wù)器Si新權(quán)重Wi’
服務(wù)器Si新權(quán)重Wi’= (Wi/L(Si)max)*( L(Si)max-L(Si)),并將新的權(quán)重更新到Linux內(nèi)核中。
在搭建的LVS集群中,調(diào)度器每隔固定的周期,向真實(shí)服務(wù)器統(tǒng)一發(fā)送一個(gè)請(qǐng)求,請(qǐng)求每個(gè)服務(wù)器上報(bào)其CPU使用率(P(Ci))和內(nèi)存使用率(P(Mi)),調(diào)度器根據(jù)每個(gè)服務(wù)器上報(bào)的數(shù)值計(jì)算服務(wù)器的負(fù)載L(Si)并修改原先的權(quán)重。因而改進(jìn)算法分為調(diào)度器和真實(shí)服務(wù)器兩個(gè)部分,具體如下:
(1)真實(shí)服務(wù)器部分
接受LVS集群調(diào)度器的請(qǐng)求后,將其CPU使用率(P(Ci))和內(nèi)存使用率(P(Mi))的數(shù)值傳送給調(diào)度器。
(2)調(diào)度器部分
根據(jù)上報(bào)的數(shù)值計(jì)算服務(wù)器Si的負(fù)載L(Si)、同時(shí)從IPVS中得到服務(wù)器原先的權(quán)重Wi,計(jì)算每個(gè)服務(wù)器的新權(quán)重并將新的權(quán)重Wi’寫入IPVS內(nèi)核中。
本文搭建了LVS-NAT Web集群來驗(yàn)證改進(jìn)算法的性能,其結(jié)構(gòu)如圖1所示,
選擇2臺(tái)真實(shí)服務(wù)器來提供Web服務(wù),這兩臺(tái)服務(wù)器的硬件配置相同,在客戶端采用WAS軟件來模擬大量并發(fā)用戶對(duì)集群的訪問。
Linux內(nèi)核中包含LVS,需要在啟用LVS選項(xiàng)下編譯和安裝此內(nèi)核,通過ipvsadm來配置IP地址和調(diào)度算法,分別配置WRR和WLC算法,分別與實(shí)時(shí)更新的權(quán)重Wi’結(jié)合起來。
改進(jìn)算法中各參數(shù)r1、r2、L(Si)max、P(Ci)max和P(Mi)max的取值如表1所示。
表1 算法參數(shù)值
3.3.1 測(cè)試結(jié)果
在LVS-NAT集群中分別配置WRR和WLC算法,測(cè)試訪問鏈接數(shù)不斷增大時(shí),集群的平均響應(yīng)時(shí)間,將這兩種算法分別與實(shí)時(shí)更新的權(quán)重Wi’結(jié)合起來,測(cè)試集群的平均相應(yīng)時(shí)間。測(cè)試的結(jié)果如圖2和圖3所示。
3.3.2 測(cè)試分析
圖2 改進(jìn)算法與WRR算法平均響應(yīng)時(shí)間對(duì)比
將WRR和WLC算法和實(shí)時(shí)更新的權(quán)重Wi’結(jié)合起來,集群的平均響應(yīng)時(shí)間降低,因此集群整體處理性能進(jìn)一步提高,改進(jìn)的算法在LVS集群中有一定的應(yīng)用價(jià)值。
圖3 改進(jìn)算法與WCL算法平均響應(yīng)時(shí)間對(duì)比
[1]Karl Kopper著 沈金河,李秋霞等譯.Linux企業(yè)集群[M].北京.中國水利水電出版社,2007.3
[2]倪繼利.Linux內(nèi)核分析及編程[M].北京.電子工業(yè)出版社,2007.09.
[3]Alex Vrenios著.馬朝暉等譯.Linux集群體系結(jié)構(gòu)[M].北京.機(jī)械工業(yè)出版社,2003.1.
[4]買京京.Web服務(wù)器集群負(fù)載均衡技術(shù)研究[D].中北大學(xué),2008.
[5]古俐明.集群服務(wù)器負(fù)載均衡技術(shù)研究[J].微計(jì)算機(jī)信息,2007(12).