?

一種資源受限環境下的軟件負載均衡策略

2021-05-19 01:35張思豪田建宇劉銀良劉衛新劉經天
網絡安全與數據管理 2021年5期
關鍵詞:輪詢權值集群

張思豪,田建宇,劉銀良,劉衛新,劉經天

(北方自動控制技術研究所,山西 太原030006)

0 引言

網絡化體系作戰已經成為未來戰爭的主要作戰手段,該體系對特定用途的信息系統要求更為嚴苛,需要在復雜度與規模提升的前提下,保證系統維護升級的簡便性,將作戰力量、單元、作戰要素等條件融合,對可調度資源實現有效應用。在網絡體系服務化推進作戰平臺應用方面,我國與以美國為代表的傳統軍事與信息強國之間仍存在較大的差距,商用面向服務架構(Service-Oriented Architecture,SOA)在資源受限環境服務化軟件管理方面短板明顯,存在帶寬占用大、內存空間消耗高、編解碼周期長的問題。

服務的訪問和調度是資源受限環境下服務軟件管理的核心,針對該條件下軟件管理的需求,需要設計出靈活、易用、高效的訪問與調度策略。這就需要服務器集群方式實現資源受限環境下服務的合理調度,保障業務平臺正常運轉,實現資源受限條件下的負載均衡,保證業務平臺和軟件服務的可靠性。

目前,用于作戰的指揮控制信息系統服務資源愈發多樣化,核心節點設備需要承擔的數據交互任務呈現出遠程化、高頻率的特點,原先的單一Web服務器遠遠無法滿足需求。本文基于戰術級資源受限的服務化模型,在現有Nginx 的默認輪詢算法及最小連接數算法的基礎上提出改進,以提高資源受限下的高并發條件中集群的負載能力。

1 資源受限環境下的服務模型描述

針對資源受限環境下的服務化需要,定義MS={B,S,C,J}的四元數組描述其模型,其中B表示服務模型基本信息,S表示服務質量信息,C表示服務的功能信息,J表示資源受限約束條件。采用多維框架對資源受限服務建立模型描述[1],實現對資源受限服務的輕量化描述。模型描述如圖1 所示。

圖1 資源受限服務統一描述模型

圖2 資源受限服務負載均衡示意圖

2 資源受限環境下的負載均衡算法

負載均衡策略就是為了解決如何在實現同樣功能的多個服務主機之間實現資源合理分配,避免出現一臺設備過忙而其他設備卻未能充分發揮其作用的問題。負載均衡策略主要考慮以下4 個方面問題[1-2]:

(1)為了擴展帶寬和增加吞吐量,加強資源處理能力,設計由分布式的資源受限服務資源實例共同組成的資源受限服務資源集群。

(2)按照負載均衡算法向服務注冊管理中心(Service Register Center,SRC)查詢定位資源服務,為用戶綜合選擇出最為合適的服務資源實例。

(3)在出現單點失效的情況下,通過SRC 通知及時改變請求該服務資源的實例定位,提高系統對突發情況的處理能力。

(4)動態采用負載的動態均衡算法改變服務連接,請求端可以適時變換選擇服務資源實例。

服務資源的負載均衡流程如圖2 所示。

負載均衡算法分為靜態負載均衡算法和動態負載均衡算法[3]。靜態負載均衡算法是在服務器工作之前事先給定了的分配方案,實際服務器在工作過程中按照該方案進行分配訪問負載,忽略系統在工作過程中產生的各個服務器的性能狀態的改變[4]。常見的靜態負載均衡算法有:簡單隨機算法、權重輪循算法、一致Hash 算法等。但是在實際服務器提供服務的情況下,集群中的服務器的性能會隨著服務進程不斷發生變化。而且可提供服務的節點數也會處于動態的變化之中[5]。

動態負載均衡算法根據集群實時運行情況下的節點性能變化對分配策略做出調整,其應用范圍比靜態負載均衡算法更加廣泛。但是在起步階段動態負載均衡算法將會消耗比靜態算法更多的服務器資源,增加系統開銷。比較典型的動態負載均衡算法包括美國的SINGH H 提出的基于動態調整的負載平衡Web 服務器系統[6]、印度的KAUR K 等人研究的基于蟻群算法實現負載均衡的方法[7]、DING Z X 研究的適用于異構網絡的動態算法[8]以及吉林大學的張堯等人研究的根據權值變化動態分配的負載均衡算法[9]。

以上研究多是基于權重輪詢算法提出的改進,在提升服務器集群的負載能力上都發揮了一定的作用。然而目前基于異構網絡搭建的服務器集群影響因素不再單一,且服務器性能的不同也導致了動態負載能力的變化,所以需要綜合考慮各因素對服務器負載能力的影響,依據實際運行過程真實的負載情況以及節點性能變化,調整各節點訪問負載的順序及比例。

綜上,考慮目前動態負載均衡算法的不足之處,為進一步改善服務器負載能力,本文將基于集群服務對加權最小連接負載均衡算法提出相應改進。

3 基于權重的動態算法分析

3.1 加權最小連接數算法

加權最小連接數調度算法(Weighted Least Connection,WLC)是在最小連接數算法(Least Connection,LC)基礎上加入權重比得到的。最小連接數算法的工作原理是當客戶端有新的訪問請求時,通過預設算法將該連接分配給當前連接數最小的服務器,建立訪問連接時節點訪問量加1,結束訪問時訪問量減1[10]。而加權最小連接數調度算法不再將連接數當做判定負載量的唯一依據,而是將節點連接數與節點權重比綜合考慮,將訪問請求分發給最小訪問壓力的服務器,此節點訪問連接數加1。權值的大小將根據節點的性能進行調整,即:

其中,pi用來表示各服務器節點訪問壓力指標;Ni表示當前節點現有連接數,m表示集群中所有訪問總數,wi表示各節點分配的權重值。因為在當前一輪的計算比較過程中,m固定,因此式(1)可以簡化為:

加權最小連接數調度算法的缺點:只考慮各節點連接絕對數字,但連接數相同不代表負載均衡,忽略了連接占用節點資源大小情況[11];且分配次序混亂,加大了資源消耗;依據設備硬件及經驗進行權值設定,無法基于實際情況動態調整權值。

3.2 加權輪詢算法

加權輪詢算法(Weighted Round-Robin,WRR)在輪詢算法(Round-Robin,RR)的基礎上改進得到,可以分為普通輪詢算法和平滑輪詢算法[12]。輪詢算法是把客戶端的訪問請求依次輪流分配給集群內部各節點,從節點1 開始,直到節點N,然后再重新開始循環。而加權輪詢算法基于輪詢算法未考慮各節點處理能力差異、 安裝的業務應用不同等問題,根據節點實時性能的差異分配不同權值,然后再進行輪詢服務。

與前面加權最小連接數調度算法相反,加權輪詢算法沒有考慮集群內及各節點連接數和響應速度等指標,不能對節點的動態負載變化做出適應性的調整。

4 基于加權最小連接的改進算法設計

4.1 改進思想

集群內的各節點的實時負載情況處于動態變化中,所以在加權最小連接數算法的基礎上提出的改進算法的基本思想為:改變加權最小連接算法中節點權值固定的缺點,基于性能的動態變化,設定某個固定時間間隔(10 s~15 s)對節點的性能指標參數進行一次新的采集,作為動態權值分配的依據[13]。具體實現方式為:在每個節點實時負載確定的情況下,根據采集到的動態性能指標參數,計算各個節點的實時性能極值,各節點實時性能極值與實時負載的差值代表節點剩余處理能力,將各節點的剩余處理性能相比,用來確定當前各節點權值大小。

為了避免服務器出現滿負載的情況,需要先設定一個負載比例來確定節點實施壓力是否超標。當負載比例的值接近或者達到設定值時,停止給該節點分配訪問請求。

4.2 改進算法步驟

將改進算法進行步驟總結如下:

(1)定長間隔收集節點的各個性能指標參數;

(2)計算各個節點的實時負載情況L(Si)和負載極值M(Si);

(3)計算負載比例V(Si),比較負載比例與設定值V,判斷是否為該節點分配新的訪問請求。其中:

圖3給出了m取值為3~8時在不同誤比特率下完成識別所需的數據量.可以看出,在相同數據量下,m越小,誤碼適應能力越好;在相同誤比特率下,m越小,識別所需數據量越小.

(4)計算各節點剩余處理性能N(Si),并將其作為權值依據,其中:

(5)將各節點的剩余處理性能N(Si)相比,得到權值比例N(S1):N(S2)…N(Sn-1):N(Sn),并依據權值比例確定權值Q(Si)分配訪問請求。

改進算法流程如圖3 所示。

圖3 改進算法流程

4.3 性能指標參數分析

為了得到前面判定權重比例所需要的各數據量,基于最小連接算法的改進算法需要選擇必要的參數用于性能指標的計算。查閱相關資料:CPU 的利用率決定節點的處理能力的大小,網絡帶寬使用率決定著數據量的傳輸能力,節點內存使用率直接反映當前進程的內存開銷情況[14]。因此將選取上述幾個參數來計算節點性能。

完成對上述性能指標的收集,需要計算的數據包括各節點負載極值M(Si)、節點的實時負載情況L(Si)、節點負載比例V(Si)、各節點的權值Q(Si)。

(1)負載極值M(Si)

首先用Ac(i)、Aw(i)、Ar(i)、Au(i)分別表示單個周期內i節點的CPU 處理能力、網絡帶寬、磁盤讀寫速度以及節點內存的使用率。在某節點中不同參數對性能影響不同,因此取Ac(i)、Aw(i)、Ar(i)參數的權重值分別為R1、R2、R3,得到各節點的負載極值M(Si)的計算公式為:

(2)實時負載情況L(Si)

(3)節點負載比例V(Si)

負載比例用來決定是否再給該服務器分配請求,當負載比例達到設定值時,說明此節點負載已經不足以應對新的訪問請求,將會停止給該節點發送新的連接。負載比例的計算如式(3)所示。

(4)各節點的權值Q(Si)

權值的分配依賴于集群內負載均衡模塊的負載均衡器,負載均衡器的另一個作用是收集前文所提的各節點當前性能參數。根據以上所得到的各參數,權值計算由式(8)表示:

5 實驗驗證

本實驗采用Nginx 負載均衡策略,由七臺裝有虛擬機的服務器集群搭建實驗環境,其中兩臺用于向集群發送訪問請求,一臺裝有Nginx 作為反向代理負載均衡器,其余作為服務器集群節點進行處理訪問請求。實驗集群環境如表1 所示,搭建測試環境如圖4 所示。

表1 實驗集群環境

圖4 集群測試環境搭建

Nginx 采用fastcgi 運行方式將HTTP 訪問請求轉發到PHP 進程形成PHP 的獨立進程與Nginx 進行通信[15]。

并發測試工具選用Httperf+Autobench[16],Httperf軟件工具用于產生不同大小的工作負載。Autobench是一款基于Httperf 開發的perf 腳本工具,可以根據參數設置自動進行并發測試,其配置如下:

autobench --single_host --host1 192.168.168.162--port1 80 --uri1 /index.php --quiet--low_rate 0 --high_rate 2000 --rate_step 200 --num_call 10 --num_conn 500 --timeout 5 -file results.tsv

該配置表示從100 個并發連接開始,每次遞增200 個,最大并發連接數為2 000。每個連接中的請求數為10,響應終止時間設置為5 s,超出5 s 服務器節點未響應則視為響應失敗。結果將會自動保存為.tsv 格式,并可以用Excel 打開并畫圖。

根據對節點性能參數影響的大小,在計算負載極值M(Si)和實時負載情況L(Si)時分別給予CPU處理能力Ac(i)、網絡帶寬Aw(i)、磁盤讀寫速度Ar(i)、節點內存的使用率Au(i)初始權重為(0.4 0.3 0.2 0.1),算法動態權值獲取部分代碼如下,其中mi,mj 分別表示連續兩周期最大負載連接個數。

基于以上配置及測試環境,本實驗采用對比驗證的方式,收集Nginx 默認輪詢算法、加權最小連接數算法及改進的動態加權最小連接數算法在不同并發數下的響應時間及成功連接數。最后將負載均衡器中收集到的數據進行整理,結果如表2 所示。

表2 三種算法響應時間及成功連接數

分析表2 可知,當并發量小于600 時,對比測試的默認輪詢算法、加權最小連接算法與改進算法幾乎沒有差距。該并發量下三種算法都能很好地滿足負載均衡需求。當測試并發量超過600 時,三種算法的響應時間由原來的同步穩定逐漸增大并有了直觀的性能差距:默認輪詢算法的響應時間及實際連接數不如另外兩種算法,加權最小連接算法次之,改進算法最優。而且在測試并發量超過1 000時,改進算法的響應時間及實際連接數的優勢變得十分明顯。

經過200~2 000 并發量測試,基于以上數據分析,定義0~600 為低并發量,600 ~1 000 為中并發量,1 000 以上為高并發量。分析表2 數據可以得到以下結論:基于加權最小連接算法改進的動態加權算法,在低并發量下其平均響應時間較默認輪詢算法延遲了2.53%,較加權最小連接算法延遲了4.72%,這是由于動態加權最小連接數算法占用節點性能較前兩者有增加,其響應時間稍微延長。優化效果最為明顯的高并發區間其平均響應時間較默認輪詢算法提高了18.44%,較加權最小連接算法提高了12.45%。整個測試條件下改進算法平均響應時間較默認輪詢算法提高了17.17%,較加權最小連接算法提高了11.29%。

6 結論

本文針對戰術級作戰信息系統在資源受限環境下實現服務化的需要,結合資源受限環境特點,建立了戰術級指揮控制系統服務化軟件的服務模型,在分析了常見負載均衡算法的基礎上,提出了基于加權最小連接算法的改進算法。經過實驗數據分析,該改進算法可以在資源受限的高并發條件下有效地提高集群的負載能力。由于研究時間及水平所限,該算法仍有許多不足之處,比如時間周期T僅簡單地依據文獻及經驗來進行設置,未考慮到其最優解。在未來的研究中,可以考慮加入神經算法的分析來進一步改進算法性能。

猜你喜歡
輪詢權值集群
一種融合時間權值和用戶行為序列的電影推薦模型
CONTENTS
海上小型無人機集群的反制裝備需求與應對之策研究
基于等概率的ASON業務授權設計?
一種無人機集群發射回收裝置的控制系統設計
Python與Spark集群在收費數據分析中的應用
基于權值動量的RBM加速學習算法研究
勤快又呆萌的集群機器人
基于多維度特征權值動態更新的用戶推薦模型研究
依托站點狀態的兩級輪詢控制系統時延特性分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合