楊 波,蕭 陽,鄧 欣,王鑫章,崔澤昊,彭 程
(中海油能源發展股份有限公司采油服務分公司 天津 300451)
信息技術的發展加快了網絡的普及,各種各樣的網絡服務信息系統應運而生[1],這些系統在給用戶提供良好服務的同時也面臨著嚴重的負載均衡問題。研究表明[2],目前超過八成的網絡服務信息系統的主要業務流量均已超出了自身的承受能力,給網絡服務信息系統的運行帶來很大的壓力[3],甚至部分系統承載過高,直接崩潰,帶來難以估計的損失,面對這種情況,需要定期進行自適應負載均衡測試[4],并根據測試結果控制網絡負載,直至滿足系統的運行需求,降低系統的運行損失。
常規的網絡服務信息系統負載自適應均衡測試方法主要利用均衡測試器進行負載均衡測試[5],但這些均衡測試器存在極限值,隨著負載總量的增加,測試的效率逐漸低下[6],測試的延時也越來越差,無法滿足目前網絡服務信息系統的負載自適應均衡測試需求,因此,本文結合網絡服務信息系統的運行現狀[7],設計了新的網絡服務信息系統負載自適應均衡測試方法,為降低網絡維護損失,提高網絡服務信息系統的運行可靠性做出了一定的貢獻。
為了提高自適應負載均衡測試效果,需要提高負載均衡測試利用率,合理地分配測試節點[8],提高測試速度,保證測試的有效性,因此本文設計的負載均衡測試方法搭建了負載自適應均衡架構,為后續的測試做基礎,如下圖1所示。
由圖1可知,在負載自適應均衡的過程中,客戶端需要不斷生成本地服務器,發送均衡請求,再由相應的服務器接收請求,完成測試反饋,但在測試的過程中,服務器的CPU占用率及內存會發生一定的改變,因此需要定期進行計算[9],判斷服務器的負載均衡情況,再結合客戶端請求比例完成負載均衡測試。
根據搭建的自適應負載均衡架構,可以細化設計內部的測試服務器,首先設計DNS服務器,該服務器可以實時進行域名解析[10],實現負載轉換,因此在設計該服務器時需要結合客戶端交互現狀,使用local進行訪問,實現負載均衡,該服務器內部的功能解析示意圖如下圖2所示。
由圖2可知,該服務器可以進行內部域名轉換,實時調整測試參數,提高測試效率。為了降低測試資源的內部占比,提高測試的有效性,本文設計的方法結合BIND軟件對該服務器進行了二次開發,賦予每個IP相應的均衡權值,在保證權值分配特性的基礎上完成改進,從而提高了負載均衡測試信號的收發速度。
在負載均衡測試的過程中,需要不斷與互聯網連通記錄測試結果,因此本文對原有的Web服務器進行了優化,即使用Python搭建測試架構內的Web服務器,再按照相應的比例訪問負載信息,得到負載均衡指標。使用上述設計的服務器可以有效進行負載均衡測試,降低測試延時,提高測試的有效性。
僅使用與負載均衡相關的測試服務器無法從根本上提高測試的有效性,因此本文設計了符合測試需求的負載均衡測試算法。在負載均衡測試的過程中,需要不斷判斷各個服務器之間的流量負載關系,計算負載利用率,從而完成均衡測試,這個過程也可以用一種權值評價函數來表示,本文根據權值評價函數的動態化分配特征,設置了初始的服務器節點,設計了節點測試服務式S,如下(1)所示。
公式(1)中,C(Si)代表服務器節點,Csum代表測試常量,W(Si)代表均衡條件,此時可以假設均衡的負載均處于常態化狀態,對上述節點服務式進行簡化,簡化后的服務式S0如下(2)所示。
根據公式(2)的計算結果,結合負載均衡加權最小連接原則可知,在測試的各個階段都需要計算均衡內核,保證測試權值始終在一個范圍內,基于此,可以判斷節點之間的均衡關系Q,如下(3)所示。
公式(3)中,C(Sm)代表服務器被調用的均衡節點,此時測試節點均需要滿足上述測試關系,為避免測試服務器超載,還需對現有的函數進行優化描述,描述式如下(4)所示。
公式(4)中,n代表測試次數,經過若干次測試發現,上述設計的負載均衡算法存在幾個明顯的問題,首先該算法計算出的權重于實際服務器節點處理的能力存在一定差異,因此其無法準確地描述節點的均衡狀況,因此其存在較大的測試誤差,面對這種情況,本文對上述負載均衡算法進行了優化,首先在原有算法的基礎上設置了一個負載均衡周期性參數,接下來分析此時的信息反饋情況,若此時的反饋加權值為0則證明此時的權值合格,反之需要持續進行修改,直至權值變成0,此時可以結合網絡服務信息系統內部現狀設計權值表達函數f(s),如下(5)所示。
公式(5)中,k1、k2均代表節點的利用率,且二者的和始終為1,此時該表達函數存在均衡極值,因此需要額外設置一個邊界條件式W,如下(6)所示。
公式(6)中,F(Si)代表周期性權值表達函數,在實際的負載均衡測試中,網絡服務信息系統和內存可能會同時達到峰值,此時的CPU空閑概率最低,無法為用戶提供相應的服務,因此還需要結合用戶的使用標準重新對權值表達函數進行定義,定義式G如下(7)所示。
公式(7)中,m(Si)代表IPVS調度參數,使用該公式可以有效地判斷網絡服務信息系統內部的自適應負載均衡狀況,完成負載均衡測試。
在進行負載均衡測試時,經常會受測試總量影響,降低測試效率,帶來較高的均衡測試延時,因此本文根據上文中設計的負載自適應均衡測試算法,構建了負載自適應均衡測試模型E,如下(8)所示。
公式(8)中,b代表均衡判斷參數,使用該模型可以有效地收集網絡流量負載信息,再根據計算的權值進行任務參考分配,并與原有的負載權值進行對比,若計算的權值高于原有權值,則需要使用IPVS進行調度改變,反之則需要保持原有的調度值不變,此時可以設計模型服務器端的處理流程,如下圖3所示。
由圖3可知,經過上述模型服務器端處理的負載均衡數據存在三種不同的狀態,即用戶狀態、系統內部狀態、系統空閑狀態,三個狀態的負載均衡狀況存在一定的差異,因此本文利用了/proc/meminfo文件,獲取了相關的信息,計算了內存空閑率,如下(9)所示。
公式(9)中,MemFree代表網絡服務信息系統的內部總空間,MemTotal代表低位空閑內存,此時可以根據計算出的內存空間利用率設置負載測試的通信原則,由于負載調度服務器與各個服務器之間都存在UDP通信原則,因此可以預先設定一個初始的時間間隔,按照該時間間隔發表參考權值請求,設置相應的測試端口,再將測試的值與參考值進行對比,輸出到測試結果分析中心,經過多次測試發現,不同的負載權值具有不同的處理能力,為了更好地進行負載均衡測試,在面臨較新的測試負載時需要預先將其與IPVS進行調度對比,判斷負載的調度狀態,再結合計算出的權值進行負載均衡測試。
在測試的過程中,測試服務器會不停地接收來自用戶的測試請求,此時為了提高測試效率,有效降低測試延時,需要設置一個Server Pool集群節點,來自用戶的測試請求可以先儲存在Server Pool集群節點中,再進行一一轉換,傳輸到均衡測試中心,這樣所有測試數據的基礎格式全部一致,輸出的測試代碼也一致,其測試起來更容易,消耗的測試時間較短,產生的負載均衡測試延時自然較低,但在測試的過程中,如果存在LVS轉換誤差,需要立即更新測試服務器地址,重新設置集群中點,最大程度上保證測試結果的有效性,實現實時負載均衡測試。
為了驗證本文設計的信息系統負載自適應均衡測試方法的測試效果,本文將其與常規的負載自適應均衡測試方法對比,進行實驗,如下。
為了提高實驗的可靠性,本文使用節點模式搭建實驗環境,設置了符合要求的測試服務器,該測試服務器由一臺主服務器和多臺子服務器組成,需要結合實驗測試需求進行統一配置,設置合理的測試參數。首先根據用戶的使用需求設置負載連接特征,配置符合該特征的連接參數,接下來再設置不同連接特征的負載指令,計算其占總指令的比重,從而確定主服務器和各個子服務器的實時狀態及各個服務器的資源分配率,此時結合負載的任務處理過程,搭建負載均衡測試實驗示意圖,如下圖4所示。
由圖4可知,用戶發布的任務會通過請求任務隊列進行排序,確定消耗負載的總數量,再通過服務器隊列進行等待,從而分配到各個服務器當中。為了提高實驗的測試效果,在用戶發送請求后,處理中心需要對發送的請求預處理,按照順序進行排列,降低任務分配的難度。本實驗總共設置了10個不同類型的并發請求,這些并發請求分配的任務總數及其負載消耗權重如下表1所示。

表1 并發請求參數
由表1可知,設置的并發請求參數滿足主服務器及子服務器的連接調度需求,可以進行后續的自適應負載均衡測試。
本實驗使用LVS體系搭建實驗架構,設置了VS/NAT、VS/TUN、VS/DR幾種不同的轉換模式,直接由發送中心傳輸需要測試的負載,發送相應數據包,降低任務響應延時,提高了實驗的測試效率。除此之外,測試實驗室內設置了一臺性能良好的PC機,能迅速形成一個待測局域網環境,并與外部環境交叉互聯,為了便于測試,本實驗還配置了一個虛擬的測試IP地址,供測試端進行訪問,本實驗設置的服務器硬件配置如下表2所示。

表2 服務器硬件配置
由表2可知,上述服務器滿足LVS集群需求,可以在此基礎上設置一個CentOS 6.3操作中心,不斷檢查互聯網的連接狀態,為后續的負載均衡測試做基礎。
在開始測試前,還需要選擇Linux2.6進行IPVS集成,并使用ipvsadm管理負載資源配置模塊,上述步驟完畢后,為了保證測試的可靠性,還需要額外進行IPVS操作檢查,即使用modprobe-l|grep ipvs檢查測試環境的支持狀態,安裝ipvsadm測試文件,在通過CentOS 6.3終端執行ln-s kernels/2.6.32-279.el6.i686 linux測試命令,完成測試,測試結果表明,搭建的測試空間滿足ipvsadm測試文件的測試支持要求,證明搭建的測試空間具有有效性。
在上述實驗準備的基礎上可以進行負載均衡測試,即分別使用本文設計的負載自適應均衡測試方法及常規的負載自適應均衡測試方法進行負載均衡測試,并使用上述搭建的實驗環境記錄兩者的測試延時,實驗結果如下表3所示。

表3 實驗結果
由表3可知,本文設計的負載自適應均衡測試方法在多次測試中的測試延時始終較低,而常規的負載均衡測試方法的測試延時始終較高,證明設計的負載均衡測試方法的測試效果較好,滿足負載均衡測試的實時性需求,具有有效性。
綜上所述,隨著信息技術的發展,我國的互聯網越來越普及,相關的服務信息系統數量越來越多,但受用戶量影響,各個服務信息系統的負載越來越高,急需進行負載均衡測試,常規的負載均衡測試方法的測試延時較高,不滿足目前信息系統的運行需求,因此本文設計了一種新的自適應負載均衡測試方法,進行實驗,結果表明,設計的自適應負載均衡測試方法的測試延時較短,具有實時性,有一定的應用價值,為維護網絡服務信息系統的穩定性做出了一定貢獻。