国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Nginx的動態(tài)權(quán)重負載均衡技術(shù)研究

2024-12-05 00:00:00鄭松奕陳國良蔣正亮張裕祥
現(xiàn)代信息科技 2024年20期

摘 要:負載均衡策略在保障Web服務(wù)器集群穩(wěn)定運行和性能方面是不可或缺的。在眾多的負載均衡技術(shù)中,Nginx得到了廣泛應(yīng)用,常被大規(guī)模應(yīng)用于反向代理服務(wù)前端。通過對Nginx負載均衡算法的學習研究,設(shè)計實現(xiàn)了一種改進的動態(tài)權(quán)重負載均衡算法。該算法利用Redis緩存機制,實時采集并存儲后端Web服務(wù)器的CPU利用率、內(nèi)存利用率、網(wǎng)絡(luò)帶寬和磁盤I/O等性能指標信息。然后,通過熵值法計算各項性能指標的系數(shù),并動態(tài)地修改后端Web服務(wù)器的權(quán)重。實驗結(jié)果顯示,與加權(quán)輪詢算法和最小連接數(shù)算法相比,新算法在高并發(fā)情況下具有更好的響應(yīng)時間和吞吐量。

關(guān)鍵詞:負載均衡;動態(tài)權(quán)重;服務(wù)器集群;熵值法;Nginx

中圖分類號:TP368.5 文獻標識碼:A 文章編號:2096-4706(2024)20-0067-05

Research on Dynamic Weight Load Balancing Technology Based on Nginx

ZHENG Songyi, CHEN Guoliang, JIANG Zhengliang, ZHANG Yuxiang

(Network and Educational Technology Center, Jinan University, Guangzhou 510632, China)

Abstract: The load balancing strategies are indispensable in ensuring the stable operation and performance of Web server clusters. Among numerous load balancing technologies, Nginx has been widely used and is often applied on a large scale in the front-end of reverse proxy services. Through the study of Nginx load balancing algorithm, an improved dynamic weight load balancing algorithm is designed and implemented. The algorithm uses the Redis cache mechanism to collect and store the CPU utilization, memory utilization, network bandwidth, disk I/O and other performance index information of the back-end Web server in real time. Then, the coefficient of each performance index is calculated by the entropy method, and the weight of the back-end Web server is dynamically modified. The experimental results show that the new algorithm has better response time and throughput in the case of high concurrency compared with the Weighted Round Robin algorithm and the Least Connections algorithm.

Keywords: load balancing; dynamic weight; server cluster; entropy method; Nginx

0 引 言

隨著Web應(yīng)用和服務(wù)的訪問量激增,Web服務(wù)器集群承擔了越來越多的請求壓力。為了保障和提高Web服務(wù)器集群的整體服務(wù)效能,負載均衡技術(shù)在Web服務(wù)器集群管理中得到了廣泛應(yīng)用。

針對負載均衡的解決方案有硬件及軟件負載均衡。硬件負載均衡能提供更好的高可用性、性能和可擴展性,業(yè)界主流的硬件負載均衡包括F5、A10等。但硬件負載均衡成本過高,對于大部分用戶單位來說,使用Nginx這種免費且功能強大的開源軟件負載均衡工具可能是更為合適的選擇。Nginx能夠有效地降低系統(tǒng)資源的使用率,同時保持較高的并發(fā)數(shù),并且容易進行擴充,常被用來作為Web服務(wù)器端的負載均衡器[1],解決高并發(fā)場景下后端服務(wù)器對于請求的處理。

目前常見的負載均衡算法有輪詢、加權(quán)輪詢、最小連接、加權(quán)最小連接等[2-3]。由于負載均衡技術(shù)的廣泛應(yīng)用,國內(nèi)外諸多研究學者對其進行了深入研究與優(yōu)化。文獻[4]提出了通過依據(jù)負載權(quán)重來選擇節(jié)點集的分布負載方法。文獻[5]創(chuàng)新性提出了哈希負載平衡算法,使Web集群的負載平衡效果得到有效的提高。文獻[6]提出了依據(jù)集群系統(tǒng)的值來選擇相應(yīng)的服務(wù)器的算法,該算法能夠依據(jù)不同的用戶請求類型來確定不同的服務(wù)器性能評估標準。文獻[7]將深度學習的長短期記憶網(wǎng)絡(luò)算法引入了負載均衡技術(shù)中,用于權(quán)重的自適應(yīng)改變。

通過對Nginx負載均衡技術(shù)的學習研究,在加權(quán)輪詢算法的基礎(chǔ)上,設(shè)計實現(xiàn)了一種改進的動態(tài)權(quán)重負載均衡算法。該算法主要包含3個方面:

1)利用Redis緩存機制進行數(shù)據(jù)交換,使用CPU利用率、內(nèi)存使用率、磁盤I/O利用率、網(wǎng)絡(luò)帶寬等更全面的負載指標[8]作為計算后端服務(wù)器動態(tài)權(quán)重的依據(jù)。

2)考慮到了后端服務(wù)器間硬件性能存在差異,引入了權(quán)重系數(shù)以區(qū)分不同硬件對處理請求的性能影響程度,并采用熵值法進行權(quán)重系數(shù)計算。

3)對后端服務(wù)器集群是否均衡狀態(tài)進行實時判斷以減少計算,實現(xiàn)動態(tài)調(diào)整后端服務(wù)器的負載情況,有效達到負載均衡的目的。此外、如果所有的后端服務(wù)器都超過負載閾值,則向管理員發(fā)出告警,由管理員介入評估處理。

1 改進的動態(tài)權(quán)重算法

改進的動態(tài)權(quán)重算法系統(tǒng)模型包括三個模塊,即負載信息采集模塊、負載信息處理模塊和動態(tài)權(quán)重調(diào)整模塊,具體情況如圖1所示。

負載信息采集模塊運行在各臺后端服務(wù)器中,周期性的采集后端服務(wù)器的各項負載信息并寫入Redis中。負載信息的采集周期不能隨意設(shè)置,采集周期設(shè)置過小會增加后端服務(wù)器資源消耗,引起服務(wù)器權(quán)重更新的震蕩;而如果采集周期設(shè)置過大,則可能導致采集到的負載數(shù)據(jù)不及時或不準確,對負載平衡策略產(chǎn)生負面影響,從而降低系統(tǒng)性能。經(jīng)過實驗測試,選取了10秒作為本算法的采集周期。

負載信息處理模塊和動態(tài)權(quán)重調(diào)整模塊部署在動態(tài)負載均衡服務(wù)器上。

負載信息處理模塊是從Redis讀取最新的后端服務(wù)器各項負載信息數(shù)據(jù)并根據(jù)算法對每臺服務(wù)器的權(quán)重進行計算,同時將權(quán)重計算結(jié)果寫入Redis中供其他模塊調(diào)用。

動態(tài)權(quán)重調(diào)整模塊從Redis獲取每臺服務(wù)器的權(quán)重信息,對負載不均衡的服務(wù)器進行權(quán)重的修改,最后根據(jù)算法合理地選擇某一臺后端服務(wù)器處理請求。

各個模塊之間的數(shù)據(jù)交換通過Redis進行,有利于提高系統(tǒng)處理請求的響應(yīng)速度,總體算法流程如圖2所示。

1.1 服務(wù)器初始化權(quán)重計算

初始化權(quán)重反映的是后端服務(wù)器節(jié)點在開始時刻的性能情況。設(shè)集群后端服務(wù)器的CPU、內(nèi)存、磁盤I/O和網(wǎng)絡(luò)帶寬的剩余負載性能分別使用PCPU、Pmem、Pio、Pnet表示,集群內(nèi)所有后端服務(wù)器的CPU、內(nèi)存、磁盤I/O和網(wǎng)絡(luò)帶寬的剩余負載性能之和分別使用TCPU、Tmem、Tio、Tnet表示,根據(jù)式(1~4)可以計算集群所有服務(wù)器節(jié)點的剩余負載性能總和:

(1)

(2)

(3)

(4)

由于不同硬件對服務(wù)器性能產(chǎn)生的影響有所差異,因此需要對各個性能指標進行加權(quán)處理[9]。節(jié)點的初始化權(quán)重可根據(jù)式(5)進行計算[9-10]:

(5)

其中:為服務(wù)器節(jié)點i的初始化權(quán)重;A為調(diào)節(jié)成為一個整數(shù)的調(diào)節(jié)常量,從而減小因舍棄小數(shù)位導致的誤差,本文A取值為1 000;、、、為服務(wù)器節(jié)點CPU、內(nèi)存、磁盤I/O、網(wǎng)絡(luò)帶寬的權(quán)重系數(shù),并且滿足式(6)的約束:

(6)

對于、、、權(quán)重系數(shù)的計算,傳統(tǒng)方法大多采用的是層次分析法,偏主觀性,難以精確衡量各個硬件對服務(wù)器性能的影響,本算法中使用熵值法進行計算。

1.2 熵值法計算權(quán)重系數(shù)

熵值法是計算指標權(quán)重的經(jīng)典算法之一,用來判斷某個指標的離散程度。在本文算法中采用熵值來度量各項指標的離散程度,指標的熵值越小,對服務(wù)器性能的影響越大,即權(quán)重系統(tǒng)越大。假設(shè)有n臺服務(wù)器節(jié)點,每臺服務(wù)器節(jié)點有k個負載性能指標(CPU、內(nèi)存、磁盤I/O、網(wǎng)絡(luò)帶寬等),令xij為第i臺服務(wù)器的第j個指標Xi = {xi1,…,xik},Yi為Xi標準化后的值Yi = {yi1,…,yik},權(quán)重系數(shù)主要計算步驟如下[10-11]:

1)對原始數(shù)據(jù)組進行標準化處理,消除各指標的量綱差異,把各指標數(shù)值壓縮在[0—1]區(qū)間,數(shù)據(jù)標準化方法如下:

(7)

其中,yij為第i臺服務(wù)器的第j個指標的標準化值。

2)計算第j項指標的熵值。設(shè)pij為第i臺服務(wù)器第j項指標占集群服務(wù)器第j項指標的比重,Ej為第j項指標的熵值,則:

(8)

(9)

3)計算各項指標權(quán)重系數(shù)wj:

(10)

本算法中首先獲取后端服務(wù)器的各項指標的實時數(shù)據(jù)作為訓練數(shù)據(jù),然后根據(jù)式(7)得到標準化值,接著循環(huán)遍歷各后端服務(wù)器,使用式(8)與式(9)計算得出各個指標熵值,最后根據(jù)式(10)計算各項指標的權(quán)系數(shù)、、、。

1.3 負載均衡值設(shè)計

隨著請求訪問量的變化,集群各后端服務(wù)器處理請求所消耗資源的不同,各后端服務(wù)器的性能負載情況也隨之發(fā)生變化,從而需要動態(tài)的更新服務(wù)器的權(quán)重。但是頻繁的更新各后端服務(wù)器權(quán)重,會導致負載均衡服務(wù)器不斷地重新計算和調(diào)整請求分配,增加了負載均服務(wù)器的開銷[9]。

因此,算法需要根據(jù)實際情況評估服務(wù)器集群負載均衡狀態(tài)以決定是否進行權(quán)重調(diào)整,兼顧負載均衡效果和系統(tǒng)性能。本文使用式(11)來計算節(jié)點i的負載性能:

(11)

其中,Ui為節(jié)點的資源的負載性能,Ci、Mi、Ii、Ni為節(jié)點i當前的CPU、內(nèi)存、磁盤I/O和網(wǎng)絡(luò)帶寬實時負載性能。Ui很好地展示了各個服務(wù)器的實時負載情況。通過分析,本文使用服務(wù)器資源使用率βi來反映當前服務(wù)器集群中各臺服務(wù)器的使用情況,如式(12)所示:

(12)

基于服務(wù)器資源使用率βi,使用式(13)來計算評估當前服務(wù)器集群的負載均衡狀態(tài)[12]:

(13)

其中,βavg為服務(wù)器集群的資源利用率的平均值。σ為表征負載均衡值,反映了服務(wù)器集群的負載均衡情況,服務(wù)器集群的負載均衡程度越好,則σ值越??;反之,服務(wù)器集群的負載均衡程度越差,σ值越大。

1.4 動態(tài)權(quán)重的調(diào)整

本文算法中通過βi來調(diào)整服務(wù)器節(jié)點的權(quán)值[13]。一般來說βi的值為1,但是實際應(yīng)用中,要關(guān)注βi和1的差值,其絕對值增大就代表負載分配的不均衡。本文根據(jù)βi列出公式對最開始的權(quán)重修改,求得了使用率均衡下的DWi,即新的權(quán)值:

(14)

式(14)中,B為一個常數(shù),用于調(diào)節(jié)權(quán)重步長,本文中取值為5。當βi<1時,服務(wù)器負載較輕,當請求到來時,可以在目前的權(quán)重上加上B·βi;當βi>1時,服務(wù)器負載較重,當請求到來時,可以在目前的權(quán)重上減去B·βi。

2 實驗分析

2.1 實驗環(huán)境及參數(shù)設(shè)置

本文實驗環(huán)境包含1臺Redis服務(wù)器、1臺測試客戶端(安裝siege用于測試后端服務(wù)器性能)、1臺Nginx負載均衡服務(wù)器及3臺后端服務(wù)器[14]。為了保證后端服務(wù)器具備差異化的響應(yīng)處理能力,微調(diào)了3臺后端服務(wù)器的配置使其具有不同負載性能。實驗環(huán)境配置信息如表1所示。

2.2 結(jié)果分析

實驗測試了以下3項:

1)測試服務(wù)器集群與單臺服務(wù)器在不同請求并發(fā)數(shù)下的響應(yīng)時間。

2)測試集群內(nèi)改進的動態(tài)權(quán)重算法(簡稱動態(tài)權(quán)重算法)、輪詢算法(Round Robin Algorithm, RR)、最小連接數(shù)算法(Least Connections Algorithm, Least-conn)在不同的請求并發(fā)數(shù)下的響應(yīng)時間。

3)測試集群內(nèi)上述3種算法在不同的請求并發(fā)數(shù)下的吞吐量。

記錄10次實驗數(shù)據(jù)并取均值。得到了在不同請求并發(fā)數(shù)下,服務(wù)器集群與單臺服務(wù)器的響應(yīng)時間、集群內(nèi)各算法的響應(yīng)時間,以及集群內(nèi)各算法的吞吐量的對比情況,具體結(jié)果如圖3至圖5所示。

如圖3所示,當請求并發(fā)數(shù)小于200時,無論是單臺服務(wù)器還是服務(wù)器集群,其響應(yīng)時間的差異并不明顯;然而,一旦請求并發(fā)數(shù)超過200,單臺服務(wù)器的響應(yīng)時間會迅速增長,而利用負載均衡技術(shù)的服務(wù)器集群的響應(yīng)時間則保持小幅度的平穩(wěn)增長。

如圖4所示,平均響應(yīng)時間總體而言隨著請求并發(fā)數(shù)的增加而升高的,但動態(tài)權(quán)重算法的平均響應(yīng)時間低于其他兩種算法。動態(tài)權(quán)重算法的總的平均響應(yīng)時間分別比RR算法、Least-conn算法低了10.09%、6.3%。

由圖5可以得出,三種算法的吞吐量總體隨著并發(fā)數(shù)的增加而增加,當并發(fā)量高于1 200時三種算法的吞吐量隨著并發(fā)數(shù)的增加有一定程度的減少,但是動態(tài)權(quán)重算法的吞吐量減少的幅度最為平緩,而且高于其他兩種算法。

綜上所述,本文提出的動態(tài)權(quán)重算法,在平均響應(yīng)時間和吞吐量兩個方面都優(yōu)于其他兩種算法,在一定程度上提升了服務(wù)器的性能。

此外,在處理服務(wù)節(jié)點的負載信息時,如果所有服務(wù)節(jié)點的負載超出設(shè)定的閾值,會通過微信向服務(wù)器集群管理員發(fā)送告警通知,請求評估處理,如圖6所示。

3 結(jié) 論

本文通過學習研究Nginx的負載均衡算法,設(shè)計實現(xiàn)了一種改進的動態(tài)權(quán)重算法。動態(tài)權(quán)重算法使用Redis進行緩存多種性能指標,然后使用熵值法進行性能指標的權(quán)重系數(shù),并根據(jù)服務(wù)器集群的負載均衡狀態(tài)動態(tài)修改集群內(nèi)各后端服務(wù)器的權(quán)重。實驗結(jié)果表明,動態(tài)權(quán)重算法在高并發(fā)請求下,能合理有效地將請求分發(fā)到合適的后端服務(wù)器節(jié)點進行處理,提高了響應(yīng)速度,提升了服務(wù)器集群的整體性能。

參考文獻:

[1] DYMORA P,MAZUREK M,SUDEK B. Comparative Analysis of Selected Open-Source Solutions for Traffic Balancing in Server Infrastructures Providing WWW Service [J].ENERGIES,2021,14(22):1-23.

[2] MA C,CHI Y H. Evaluation Test and Improvement of Load Balancing Algorithms of Nginx [J].IEEE Access,2022,10:14311-14324.

[3] 梁劍.Nginx負載均衡技術(shù)的研究 [J].太原師范學院學報:自然科學版,2019 (2):78-80

[4] 張玉芳,魏欽磊,趙膺.基于負載權(quán)值的負載均衡算法 [J].計算機應(yīng)用研究,2012,29(12):4711-4713.

[5] 鄧珍榮,唐興興,黃文明,等.一種Web服務(wù)器集群負載均衡調(diào)度算法 [J].計算機應(yīng)用與軟件,2013,30(10):53-56+101.

[6] 王永輝.基于Nginx高性能Web服務(wù)器性能優(yōu)化與負載均衡的改進與實現(xiàn) [D].成都:電子科技大學,2015.

[7] LINP, YANG J, SHI X. Improved Load Balancing Algorithm Based on Long Short-Term Memory Networks[C]//Proceedings of the 7th International Conference on Computer Science and Application Engineering. 2023: 1-6.

[8]劉佳祎,崔建明,智春.基于Nginx服務(wù)器的動態(tài)負載均衡策略[J].桂林理工大學學報,2020,40(2):403-408.

[9]譚暢,譚歆,胡磊,等.云中心基于Nginx的動態(tài)權(quán)重負載均衡算法[J].重慶郵電大學學報:自然科學版,2021,33(6):991-998.

[10] 王釗,劉釗遠.一種改進的流媒體集群動態(tài)負載均衡調(diào)度算法 [J].計算機與數(shù)字工程,2018,46(2):241-246.

[11] 劉甜甜,谷曉燕,陳夢彤.基于熵值法改進Stacking的文本情感分析 [J].科學技術(shù)與工程,2023,23(23):10008-10014.

[12] 丁逸.基于層次策略的動態(tài)負載均衡算法研究 [D].南京:東南大學,2005.

[13] 吳俊鵬,劉曉東.一種基于集群的動態(tài)負載均衡算法研究 [J].電子設(shè)計工程,2021,29(16):75-78.

[14] 曲乾聰,王俊.基于負載反饋的分布式數(shù)字集群動態(tài)負載均衡算法 [J].計算機應(yīng)用研究,2022,39(2):526-530+542.

作者簡介:鄭松奕(1986—),男,漢族,廣東揭陽人,助理工程師,碩士,研究方向:機器學習、軟件工程、網(wǎng)絡(luò)管理、計算機網(wǎng)絡(luò)與網(wǎng)絡(luò)安全;通信作者:陳國良(1984—),男,漢族,廣東英德人,高級工程師,本科,研究方向:網(wǎng)絡(luò)管理、網(wǎng)絡(luò)安全、系統(tǒng)管理、軟件工程;蔣正亮(1987—),男,漢族,廣東清遠人,工程師,碩士,研究方向:計算機網(wǎng)絡(luò)與網(wǎng)絡(luò)安全、算力網(wǎng)絡(luò);張裕祥(1989—),男,漢族,廣東韶關(guān)人,工程師,碩士,研究方向:通信工程、網(wǎng)絡(luò)安全。

永州市| 长乐市| 城步| 玛纳斯县| 府谷县| 南宁市| 新巴尔虎左旗| 新干县| 股票| 梨树县| 隆安县| 丘北县| 车险| 闻喜县| 松溪县| 大冶市| 兴安县| 大英县| 射洪县| 丰顺县| 咸宁市| 泰宁县| 新和县| 高州市| 苏尼特左旗| 肥乡县| 香格里拉县| 白玉县| 扬中市| 宜宾市| 高淳县| 安岳县| 庐江县| 崇左市| 高陵县| 满洲里市| 勐海县| 邯郸市| 平定县| 乐亭县| 盐源县|