◆吳新松 白雪 邢曉東 匡常山
基于業(yè)務(wù)意圖的AI智能負載均衡
◆吳新松1白雪2邢曉東2匡常山1
(1.中國電子技術(shù)標準化研究院 北京 100007;2.中國電信股份有限公司云計算分公司 北京 100093)
傳統(tǒng)的負載均衡調(diào)度算法調(diào)度方式簡單,難以實現(xiàn)合理的調(diào)度,常常會因為請求分配不合理導(dǎo)致后端實服務(wù)器負載超負荷。而目前基于后端服務(wù)器狀態(tài)反饋式的負載均衡調(diào)度算法也大多只是對相關(guān)指標設(shè)置門限或采用簡單加權(quán)等簡單數(shù)學(xué)方式進行策略調(diào)度,不夠靈活。本文提出基于AI分類推薦算法的負載均衡調(diào)度策略,實現(xiàn)基于業(yè)務(wù)意圖的智能調(diào)度。
AI;負載均衡調(diào)度算法;輪詢
隨著當今互聯(lián)網(wǎng)訪問規(guī)模的增大,單臺服務(wù)節(jié)點已經(jīng)難以滿足用戶高并發(fā)訪問需求。行業(yè)里一般采用負載均衡進行流量負載的方式為用戶提供服務(wù)。而當前業(yè)內(nèi)應(yīng)用的負載均衡主要是靜態(tài)負載均衡,它們的調(diào)度算法比較簡單,例如四層負載均衡LVS中常見的算法有輪詢(Round Robin,RR)、加權(quán)輪詢(Weighted Round Robin,WRR)、最小連接數(shù)(Least Connection,LC)、源IP哈希(Source IP Hash,SH)等[1-2],而七層Nginx中的常見算法有RR,WRR,LC,SH,URL_HASH等調(diào)度算法[3],與四層類似。在使用靜態(tài)負載均衡情形下,常常會引發(fā)負載均衡后端某臺服務(wù)器資源耗盡情形,導(dǎo)致任務(wù)失效或節(jié)點崩潰,引起業(yè)務(wù)中斷。在整個調(diào)度過程中,負載均衡不能結(jié)合后端實服務(wù)器RealServer(RS)差異因素來智能進行調(diào)度,導(dǎo)致前述負載均衡過早出現(xiàn)單點資源瓶頸,所以設(shè)計一種智能合理的動態(tài)反饋式調(diào)度算法對負載均衡系統(tǒng)的穩(wěn)健運行特別重要。
而在動態(tài)反饋式負載均衡的研究中,大多學(xué)者是根據(jù)后端RS服務(wù)器的能力,人工為負載均衡設(shè)立權(quán)值以及為后端資源負載率設(shè)計門限進行調(diào)度策略計算選取[4-7],算法比較簡單,且RS硬件能力量化為權(quán)值的方式比較粗糙,不夠科學(xué)。有些文章中的調(diào)度算法會因RS不同負載指標有偏差而得出權(quán)重結(jié)果相同情況。還有學(xué)者文章提出用基于神經(jīng)網(wǎng)絡(luò)BP算法思想,但實際文章只是以類似神經(jīng)網(wǎng)絡(luò)反饋思想實現(xiàn)的基于閾值設(shè)定的反饋機制[8]。且文章算法驗證大都是通過仿真軟件進行仿真試驗,并沒有搭建實際系統(tǒng)進行驗證。
本文提出一種基于業(yè)務(wù)意圖的AI智能調(diào)度算法,能實現(xiàn)請求合理調(diào)度,保證負載均衡系統(tǒng)的穩(wěn)定運行。
本文將采取AI模型方式進行負載均衡調(diào)度,先基于業(yè)務(wù)特征對數(shù)據(jù)狀態(tài)進行特定多分類的推薦結(jié)果標注,然后選取合適的算法進行模型訓(xùn)練和評測,最終將模型部署在策略調(diào)度端進行實時的在線推理決策。
實服務(wù)器端可能涉及的狀態(tài)參數(shù)有CPU使用率、內(nèi)存使用率、磁盤I/O占用率。將這些數(shù)據(jù)進行歸一化,然后進行標注。我們按照N分類標注,比如N=5情形。模型輸入的特征有:5臺實服務(wù)器的當前CPU使用率、內(nèi)存使用率和磁盤I/O利用率狀態(tài)參數(shù)。模型輸入樣本的特征向量:
樣本對應(yīng)的標記為0-4中的1個數(shù),表示策略推薦分類結(jié)果。圖1展示本文部分標記數(shù)據(jù),
如圖1展示的11個樣本,每一列分別代表每一臺后端服務(wù)器的CPU占用比,內(nèi)存占用比和磁盤I/O占用比,表格中共顯示5臺服務(wù)器情形狀態(tài)。最后一列標簽y,代表樣本標記的服務(wù)器調(diào)度選擇結(jié)果。在這里進行樣本整體標記時盡量保證服務(wù)器冗余資源預(yù)留。在不同定制化需求下,可以標注以不同的策略進行基于業(yè)務(wù)意圖的負載均衡調(diào)度策略定制。
在模型選擇方面,本文考慮的主要因素有模型本身的準召率、時延。本文傾向于選擇簡單的機器學(xué)習模型。
模型的一般常見評判標準有精確率(Precision),召回率(Recall),準確率(Accuracy)和F1-Measure[9-10]。在AI智能負載場景下運用AI模型,主要考慮模型策略上述中的準確率指標。另外,計算時延T也是要重點考慮的指標。準確率決定負載均衡對流量負載的合理性,做到盡量均衡的負載,防止單點過載。計算時延保證在負載均衡落地場景下模型對session的首包識別速度,這個也很好理解,就是后端服務(wù)器RS負載狀態(tài)數(shù)據(jù)經(jīng)過模型的單次計算時間。
圖2 負載均衡AI調(diào)度相關(guān)模塊邏輯
圖2表示AI負載均衡基礎(chǔ)邏輯模塊架構(gòu)。負載均衡端通過統(tǒng)計后端服務(wù)負載狀態(tài)信息特征,輸入AI策略決策模塊對到來的數(shù)據(jù)流進行調(diào)度決策,路由到合適的后端設(shè)備。在模型訓(xùn)練好之后,需要結(jié)合業(yè)務(wù)情形,依賴相關(guān)工程算法將模型集成落地。
本文需要考慮兼容不同節(jié)點數(shù)量情形下流程的實現(xiàn)。假設(shè)當前負載均衡后端有個服務(wù)器節(jié)點,如果訓(xùn)練好的模型是分類模型,值的大小也是不確定的。本文將考慮這些情形下怎樣設(shè)計通用算法盡可能快的計算調(diào)度選出最佳的節(jié)點。如果模型計算時延相比其他基礎(chǔ)代碼邏輯耗時長很多,我們使用多任務(wù)模式進行結(jié)果運算,且定義每一次經(jīng)過模型分類的計算耗時約為,如果使用個CPU核進行并行計算的話,預(yù)期計算出最終調(diào)度節(jié)點的最短計算時間計算如下:
在保證這個時間復(fù)雜度前提下,我們盡可能減少模型計算次數(shù)。我們定義一個內(nèi)存堆區(qū)隊列數(shù)組,每一個數(shù)據(jù)代表對應(yīng)某一臺服務(wù)器的狀態(tài)數(shù)據(jù)。每一次模型計算都需要隊頭彈出個元素進行計算。我們采用多線程(其他粒度任務(wù)也可以考慮)不斷從隊頭消費的數(shù)據(jù)的方式來進行計算,具體當每個任務(wù)取夠個元素,馬上輸入模型進行調(diào)度計算選擇最優(yōu)實服務(wù)器,計算結(jié)束將計算結(jié)果放回隊尾。然后繼續(xù)等待隊頭元素夠個再次計算消費。直到某任務(wù)識別隊列為空,將取出的數(shù)量不到個元素的緩存內(nèi)容放入隊尾,直到最后一個未結(jié)束的任務(wù)識別隊列為空,完成最后計算結(jié)果保留為調(diào)度結(jié)果(如果此時元素數(shù)量仍然不夠的話,輸入狀態(tài)參數(shù)均為1.0或稍微再偏大的特征值樣本進行補全)。前述并行算法在對實時性要求很高的負載均衡場景充分利用硬件資源迅速進行結(jié)果運算輸出。
在本文實驗中,首先需要進行樣本標注和模型訓(xùn)練。接著搭建實際環(huán)境對調(diào)度算法進行驗證,同時和傳統(tǒng)負載均衡算法調(diào)度的效果進行對比。
實驗在VMVARE虛擬環(huán)境搭建四臺虛擬機,一臺充當模擬LB,另外三臺充當RS。相應(yīng)的配置如圖3所示。
圖3 實驗硬件配置
實驗中,LB節(jié)點中的狀態(tài)數(shù)據(jù)采集模塊對后端RS負載狀態(tài)數(shù)據(jù)進行不斷采集,并在用戶態(tài)模擬多用戶http請求行為,根據(jù)狀態(tài)數(shù)據(jù)對負載調(diào)度策略進行計算。因為實驗環(huán)境LB的CPU核數(shù)有限,實驗場景的RS數(shù)量較少,所以在1.4中使用前述算法對單進程任務(wù)進行處理。
實驗選擇運算量相對較小,分類效果比較好的支持向量機(SVM)模型,使用sklearn工具進行模型訓(xùn)練和評估。因為后端的RS配置完全一樣,所以主要將本文的負載均衡策略和傳統(tǒng)的RR輪詢策略進行對比研究。本文通過標注的上千級別樣本集進行SVM模型訓(xùn)練,經(jīng)過測試模型達到準確率83%,平均延時為0.25ms。
經(jīng)過試驗,模擬不同數(shù)量客戶端進行訪問的時候,在同等條件下關(guān)注LB端新建連接數(shù)變化,即不同算法情況下的TCP新建連接能力。在新建連接能力統(tǒng)一的情況下分析接口訪問的平均延時以及流量調(diào)度不勻時可能產(chǎn)生的單點故障情形。首先,模擬在不同客戶數(shù)對后臺每個接口分別訪問兩次情況下,觀察記錄整個過程LB端TCP新建連接數(shù)變化和接口訪問平均時延。當模擬客戶數(shù)為300、500、800和1000時候,分別如圖4的(a),(b),(c),(d)所示,AI和RR輪詢負載均衡的TCP新建連接能力起初一致(最開始處曲線斜率一樣),后面由于調(diào)度原因AI漸漸強于RR,兩種算法最終新建連接數(shù)沒有準確收斂于一個數(shù)值是因為存在連接復(fù)用情形。然后,增加客戶數(shù)樣本,統(tǒng)計不同客戶數(shù)不同負載算法下的接口訪問延時。如圖4所示,在AI算法情形下,接口平均訪問延時比RR輪詢算法縮短。同時,在實驗過程中,傳統(tǒng)RR輪詢?nèi)菀资鼓骋慌_實服務(wù)器RS出現(xiàn)負載不均衡,比如內(nèi)存不勻稱。而在內(nèi)存負載過高的RS操作系統(tǒng)中的OOM killer(Out Of Memory killer)機制為防止內(nèi)存耗盡會選擇占用內(nèi)存過大的進程殺掉,所以很多時候會導(dǎo)致被訪問服務(wù)進程崩潰[11],而AI負載均衡算法在相同訪問壓力下則沒有出現(xiàn)這種情況。
圖4 不同客戶數(shù)情形下LB端新建連接變化
圖5 AI和RR算法下接口訪問時延比較
在接下來的研究中,可以通過更大量的樣本和更加合理的樣本標注方式,嘗試簡單集成模型(Bagging和Boosting等方式)[12]和深度學(xué)習模型并對參數(shù)掃描優(yōu)化,然后進行訓(xùn)練測試評估,考慮它們的準確率和模型可解釋性[13]。
可以考慮引入RDMA(Remote Direct Memory Access)技術(shù)[14],通過旁路系統(tǒng)內(nèi)核,減少RS狀態(tài)數(shù)據(jù)采集延時和間隔。零拷貝方式為數(shù)據(jù)進行低延時傳輸,同時也會更少地影響RS實服務(wù)器資源使用。
本文提出了一種基于業(yè)務(wù)意圖的AI負載均衡智能調(diào)度策略,算法能對http請求進行合理的負載,在保證和傳統(tǒng)方法相同新建連接能力情況下,進行更優(yōu)的請求負載調(diào)度,有效減少客戶接口訪問延時。同時可以避免同等訪問壓力下傳統(tǒng)RR算法中基于流調(diào)度產(chǎn)生的負載不勻稱導(dǎo)致宕機的現(xiàn)象。用戶可以通過測試分析模型命中用戶業(yè)務(wù)意圖樣本的模型準確度和重訓(xùn)練方式,來更好的擬合用戶定義的合理調(diào)度行為,避免之前反饋式負載均衡方法中一系列簡單地加權(quán)建模和一些僵硬門限規(guī)則的組合,準確實現(xiàn)基于業(yè)務(wù)意圖的負載。
[1]王紅斌. Web服務(wù)器集群系統(tǒng)的自適應(yīng)負載均衡調(diào)度策略研究[D].長春:吉林大學(xué),2013.
[2]Zhangwensong. A distribution of Linux Virtual Server with some advanced features[EB/OL].(2016-4-19)/[2013-11].https://github.com/alibaba/LVS.
[3]戴偉,馬明棟,王得玉.基于Nginx的負載均衡技術(shù)研究與優(yōu)化[J].計算機技術(shù)與發(fā)展,2019,29(3):77-80.
[4]楊杭,張昕,趙建平.基于動態(tài)反饋的負載均衡方法研究[J].長春理工大學(xué)學(xué)報,2017,40(6):136-142.
[5]劉健,徐磊,張維明.基于動態(tài)反饋的負載均衡算法[J].計算機工程與科學(xué),2003,25(5):65-68.
[6]梁彪,黃戰(zhàn),張維明.基于實時性能動態(tài)反饋的負載均衡算法[J].計算機工程與科學(xué),2010,19(3):183-186.
[7]李坤.基于動態(tài)反饋機制的服務(wù)器負載均衡算法研究[J].電子科技,2005,28(9):45-49.
[8]王鵬,黃洪瓊.基于神經(jīng)網(wǎng)絡(luò)反饋機制的改進型負載均衡算法[J]. 現(xiàn)代計算機,2018,12(1):3-9.
[9]董亞東.面向不平衡分類的邏輯回歸算法[D]. 鄭州:鄭州大學(xué),2015.
[10]李航.統(tǒng)計學(xué)習方法[M].北京:清華大學(xué)出版社,2012:19-20.
[11]蘇煒淞.典型內(nèi)存計算系統(tǒng)的內(nèi)存開銷評測研究[D] .南京:東南大學(xué),2016.
[12]李曉波.集成分類對比:Bagging NB &Boosting NB [J]. 微電子學(xué)與計算機,2010,27(8):136-139.
[13]紀守領(lǐng),李進鋒,杜天宇,李博.機器學(xué)習模型可解釋性方法、應(yīng)用與安全研究綜述[J]. 計算機研究與發(fā)展,2019,56(10):2071-2096.
[14]邱昊械.數(shù)據(jù)中心RDMA網(wǎng)絡(luò)資源復(fù)用與應(yīng)用加速研究[D].南京:南京大學(xué),2019.