• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于SDN的微服務(wù)負載均衡方案研究

      2020-04-15 02:49:56潘邵芹
      計算機技術(shù)與發(fā)展 2020年2期
      關(guān)鍵詞:流表限流調(diào)用

      姜 偉,潘邵芹

      (北京工業(yè)大學 信息學部,北京 100124)

      0 引 言

      隨著業(yè)務(wù)需求的多元化以及系統(tǒng)規(guī)模的不斷擴大,單體架構(gòu)的服務(wù)架構(gòu)可擴展性越來越差,系統(tǒng)變得難以維護,而微服務(wù)通過服務(wù)功能拆分、模塊功能聚合,使單體架構(gòu)的服務(wù)拆分成多個微服務(wù),提高了擴展性和可維護性[1-3],因此微服務(wù)架構(gòu)在分布式服務(wù)領(lǐng)域有著越來越重要的位置。微服務(wù)架構(gòu)目前的負載均衡策略主要在調(diào)用方控制,依賴于隨機調(diào)用或Round Robin方式,沒有考慮網(wǎng)絡(luò)負載以及調(diào)用鏈路情況[3-4]。

      SDN是目前廣受關(guān)注的新型網(wǎng)絡(luò)架構(gòu)[5-6],通過將控制平面和數(shù)據(jù)平面進行分離,提高了對網(wǎng)絡(luò)流量的控制能力,使SDN控制器能夠?qū)嵤┘毩6鹊穆窂揭?guī)劃和控制能力[7-8],是未來網(wǎng)絡(luò)的發(fā)展方向。

      文中研究基于SDN的微服務(wù)負載均衡方案,通過將微服務(wù)部署于SDN網(wǎng)絡(luò),可以借助SDN控制平面的精細化管控能力提供更細粒度的負載均衡能力,實現(xiàn)針對微服務(wù)特點的負載均衡的優(yōu)化。

      1 相關(guān)研究

      負載均衡一般會維護一個服務(wù)端清單,利用心跳檢測等手段進行清單維護,保證清單中都是可以正常訪問的服務(wù)節(jié)點。當用戶發(fā)送請求時,會先到達負載均衡器,負載均衡器根據(jù)負載均衡算法(輪詢、隨機、加權(quán)輪詢)從可用的服務(wù)端列表中取出一臺服務(wù)端的地址,根據(jù)負載情況進行轉(zhuǎn)發(fā),降低系統(tǒng)的壓力[9-12]。

      文獻[13]設(shè)計并實現(xiàn)了一種鏈路負載均衡方案,在利用SDN獲取了全局網(wǎng)絡(luò)拓撲視圖的基礎(chǔ)上,實現(xiàn)了一種最優(yōu)K條路徑算法,選擇出最優(yōu)的K條冗余鏈路,制定評價模型對于每條候選鏈路進行評估,得到最有利于當前全局網(wǎng)絡(luò)負載均衡的鏈路,最終將對應(yīng)的轉(zhuǎn)發(fā)策略部署到OpenFlow交換機的流表上。

      文獻[14]提出一種基于SDN的分布式服務(wù)器負載均衡方法,SDN控制器管理通過SDN網(wǎng)絡(luò)訪問服務(wù)器集群的進出流量,并能綜合網(wǎng)絡(luò)設(shè)備、服務(wù)器負載與用戶特定需求,部署動態(tài)可擴展的負載均衡策略。

      文獻[9]確定了在OpenFlow網(wǎng)絡(luò)中進行負載均衡需要解決的三個關(guān)鍵問題:服務(wù)器狀態(tài)的度量、網(wǎng)絡(luò)狀態(tài)的度量和路徑選擇,提出了一種基于Open Flow的負載均衡算法。該算法對網(wǎng)絡(luò)建立起全局的視圖,綜合考慮網(wǎng)絡(luò)資源與計算資源的使用狀態(tài),通過統(tǒng)一的決策,合理地進行流量分配,以達成負載均衡的目標。

      2 基于SDN的微服務(wù)負載均衡關(guān)鍵技術(shù)

      文中主要工作是研究將SDN技術(shù)應(yīng)用于微服務(wù)架構(gòu),利用SDN對網(wǎng)絡(luò)的精細化管控能力使微服務(wù)架構(gòu)達到更優(yōu)的負載均衡策略。重點研究并解決了下列問題:

      研究負載均衡由客戶端上移到控制平面:為了使負載均衡能夠在得知全網(wǎng)流量視圖的基礎(chǔ)上計算策略,而不是僅僅依靠round robin這種比較隨機的方式,需要將微服務(wù)調(diào)用的負載均衡策略選擇從客戶端上移到控制平面。

      基于調(diào)用鏈分析的微服務(wù)負載均衡:負載均衡決策上移到控制平面后,可以針對全局網(wǎng)絡(luò)視圖進行路徑?jīng)Q策,還可以根據(jù)微服務(wù)的特點,進行調(diào)用鏈路分析,不局限在兩個主機之間的網(wǎng)絡(luò)通信,而是綜合考慮整個調(diào)用鏈路的網(wǎng)絡(luò)負載情況,提升負載均衡決策的效果。

      服務(wù)限流:當服務(wù)調(diào)用量過多或服務(wù)容量不夠時,只靠負載均衡仍然可能不足以支撐微服務(wù)集群的正常工作,為避免過多的流量造成網(wǎng)絡(luò)或服務(wù)不可用,需要進行限流。

      2.1 基于SDN的微服務(wù)整體架構(gòu)

      基于SDN的微服務(wù)網(wǎng)絡(luò)組成如圖1所示。微服務(wù)的應(yīng)用服務(wù)器部署于SDN網(wǎng)絡(luò)之中,微服務(wù)之間通過應(yīng)用名進行服務(wù)調(diào)用,應(yīng)用名與ip的綁定與映射由服務(wù)注冊與發(fā)現(xiàn)機制完成,通過將服務(wù)注冊與發(fā)現(xiàn)組件嵌入到控制平面也就是SDN控制器,實現(xiàn)將微服務(wù)調(diào)用過程的負載均衡完全上移到控制平面,服務(wù)調(diào)用方不需要感知負載均衡策略,而控制平面則能夠?qū)崿F(xiàn)更精細化的負載均衡策略,可以綜合考量服務(wù)提供方主機的負載情況、網(wǎng)絡(luò)路徑的帶寬情況,進而引入調(diào)用鏈路分析,根據(jù)微服務(wù)的特點進行調(diào)用鏈路的負載均衡決策,而不僅僅限于兩臺主機之間的網(wǎng)絡(luò)通信。

      圖1 基于SDN的微服務(wù)網(wǎng)絡(luò)組成

      2.2 基于虛IP與IP改寫的服務(wù)發(fā)現(xiàn)機制

      使用SDN進行負載均衡設(shè)計,首先需要解決如何將微服務(wù)調(diào)用過程對目的節(jié)點的選擇上移到SDN控制器。為此,文中定義虛IP。虛IP與特定的服務(wù)進行綁定,調(diào)用該服務(wù)時使用虛IP,這樣調(diào)用方不需要知道被調(diào)用服務(wù)有幾臺機器,也不需要知道這些機器的IP,負載均衡策略完全對調(diào)用方透明。此外,當被調(diào)用服務(wù)節(jié)點下線、上線新機器時,調(diào)用方不需要感知。服務(wù)提供方服務(wù)節(jié)點的選取、網(wǎng)絡(luò)路徑的計算都由SDN的微服務(wù)鏈路計算與負載均衡模塊進行處理。當SDN控制器計算好網(wǎng)絡(luò)路徑后,目的服務(wù)節(jié)點也就確定下來,這時候會有IP改寫的過程,將虛IP改寫成實際服務(wù)節(jié)點的IP。

      當微服務(wù)A的某臺節(jié)點調(diào)用微服務(wù)B的服務(wù)時,主要會有以下步驟:

      (1)需要發(fā)起服務(wù)調(diào)用的機器向服務(wù)發(fā)現(xiàn)模塊進行服務(wù)發(fā)現(xiàn)請求,請求微服務(wù)B的IP;

      (2)服務(wù)發(fā)現(xiàn)模塊返回微服務(wù)B對應(yīng)的虛IP:ipB;

      (3)微服務(wù)A向ipB發(fā)起服務(wù)請求;

      (4)SDN控制器進行路徑計算,選擇微服務(wù)B的某個主機的IP,如ip2;

      (5)SDN控制器向SDN交換機下發(fā)流表進行轉(zhuǎn)發(fā)的同時對IP進行改寫(目的IP由IPB改為ip2)。

      2.3 基于調(diào)用鏈分析的負載均衡算法

      微服務(wù)架構(gòu)中,服務(wù)調(diào)用通常伴隨著下游依賴的調(diào)用,導致一個服務(wù)調(diào)用的鏈路可能會比較長,在負載均衡決策中,就不能只考慮服務(wù)調(diào)用的兩個節(jié)點之間,而應(yīng)該考慮整個調(diào)用鏈路上的負載均衡。

      圖2展示了典型微服務(wù)調(diào)用的調(diào)用鏈路。應(yīng)用A調(diào)用應(yīng)用B時,伴隨著應(yīng)用B調(diào)用應(yīng)用C,應(yīng)用C調(diào)用應(yīng)用D和E,只對應(yīng)用A到應(yīng)用B之間的鏈路做負載均衡存在弊端。圖3展示了微服務(wù)的分布式節(jié)點網(wǎng)絡(luò)聯(lián)通圖。節(jié)點{Xi|X∈(A,B,C,D…),i∈(1,2,3,4…)}分別代表微服務(wù)X的服務(wù)器節(jié)點,連接線表示某臺服務(wù)器可以通過網(wǎng)絡(luò)(可以經(jīng)過若干交換機,圖里省略了交換機)與另一臺服務(wù)器通信,在應(yīng)用A調(diào)用應(yīng)用B的服務(wù)時,存在多條鏈路可以選擇,如果只考慮A→B的鏈路,鏈路負載可能不是最佳的選擇,還可能選擇的鏈路無法完成后續(xù)調(diào)用導致調(diào)用失敗(C1→D1之間網(wǎng)絡(luò)故障無法調(diào)用成功)。

      圖2 微服務(wù)調(diào)用(A→B)引起的服務(wù)調(diào)用鏈路

      圖3 微服務(wù)調(diào)用的分布式節(jié)點示意(省略交換機)

      微服務(wù)調(diào)用有以下特點:

      (1)服務(wù)以分布式部署,服務(wù)調(diào)用沒有明確的調(diào)用目的主機,網(wǎng)絡(luò)路徑選擇是對服務(wù)之間,而不是主機之間;

      (2)局部最優(yōu)不一定表示整個調(diào)用鏈路最優(yōu);

      (3)某個網(wǎng)絡(luò)鏈路中斷如C1→D1中斷導致A→B1→C1是調(diào)不通的路徑,如果不進行調(diào)用鏈路分析,對A調(diào)用B服務(wù)進行路徑選擇時可能會選擇A→B1的路徑,導致B服務(wù)的后續(xù)調(diào)用失敗。

      基于調(diào)用鏈路分析的負載均衡算法綜合考慮整個服務(wù)調(diào)用鏈路涉及到的網(wǎng)絡(luò)負載狀況,進行綜合的路徑選擇考量。SDN控制器在處理流表請求時分析應(yīng)用之間的依賴關(guān)系,逐漸維護出微服務(wù)之間的調(diào)用鏈路,在進行微服務(wù)負載均衡路徑計算時,綜合考慮整個調(diào)用鏈路涉及到的所有網(wǎng)絡(luò)節(jié)點的負載情況,計算出更合適的路徑。

      以圖3為例,基于調(diào)用鏈路分析的微服務(wù)負載均衡路徑計算主要步驟可通過圖4簡要描述:

      (1)節(jié)點標注:計算路徑時不再抽象成無差別的網(wǎng)絡(luò)節(jié)點,明確網(wǎng)絡(luò)節(jié)點的身份:交換機、服務(wù)A、服務(wù)B……

      (2)鏈路剪枝:剪掉不符合調(diào)用邏輯的節(jié)點如A→F(服務(wù)A沒有調(diào)用服務(wù)B)、B2→E1(服務(wù)B沒有調(diào)用服務(wù)C);

      (3)以服務(wù)為基準進行費用計算。從最后一個服務(wù)開始,標注調(diào)用該服務(wù)的某臺機器需要的費用;

      (4)依次沿著調(diào)用鏈路逆向計算費用,直到調(diào)用源頭。

      圖4 基于調(diào)用鏈路分析的微服務(wù)負載均衡

      2.4 基于VLAN和流表優(yōu)先級的服務(wù)限流

      當網(wǎng)絡(luò)請求到達SDN網(wǎng)絡(luò)時,需要路由到限流服務(wù)器決定是否通過,SDN控制器通過對SDN交換機安裝流表,將網(wǎng)絡(luò)流量轉(zhuǎn)發(fā)到限流服務(wù)器,由限流服務(wù)器決定是否允許網(wǎng)絡(luò)流量通過。

      如果網(wǎng)絡(luò)流沒有觸發(fā)限流,被允許通過,限流服務(wù)器需要把數(shù)據(jù)包發(fā)送回網(wǎng)絡(luò),并按照合適的路徑傳輸給目的主機。但前文提到,需要把新進入網(wǎng)絡(luò)的數(shù)據(jù)包轉(zhuǎn)發(fā)到限流服務(wù)器,當限流服務(wù)器把數(shù)據(jù)包傳回網(wǎng)絡(luò)時,需要網(wǎng)絡(luò)能夠正確處理網(wǎng)絡(luò)數(shù)據(jù)包,不再轉(zhuǎn)發(fā)給限流服務(wù)器,而是按照正常的路徑規(guī)劃轉(zhuǎn)發(fā)到目標節(jié)點。

      為了能夠區(qū)分到達限流服務(wù)器之前的數(shù)據(jù)包和從限流服務(wù)器傳回的數(shù)據(jù)包,文中通過VLAN標記對兩種數(shù)據(jù)包進行標識。當限流服務(wù)器將數(shù)據(jù)包傳回SDN網(wǎng)絡(luò)時,需要對數(shù)據(jù)包添加VALN標記,SDN交換機和SDN控制器通過VLAN標記對兩種數(shù)據(jù)包進行區(qū)分。此技術(shù)消耗一個VLAN id即可,文中定義為VLAN 10。

      在SDN交換機的流表項匹配時,使用流表優(yōu)先級確定對網(wǎng)絡(luò)數(shù)據(jù)包的轉(zhuǎn)發(fā)決定。為此需要預先安裝另一條流表1:VLAN 10,轉(zhuǎn)發(fā)至SDN控制器,優(yōu)先級A。前文提到的默認轉(zhuǎn)發(fā)到限流服務(wù)器的流表2優(yōu)先級定義為B。優(yōu)先級A>B,當網(wǎng)絡(luò)數(shù)據(jù)包到達SDN網(wǎng)絡(luò)時,SDN交換機有兩個流表,流表1優(yōu)先級高,但此時數(shù)據(jù)包沒有VLAN 10的標記,所以不匹配流表1,但匹配流表2,從而按照流表2的轉(zhuǎn)發(fā)決定轉(zhuǎn)發(fā)到限流服務(wù)器。當限流服務(wù)器把數(shù)據(jù)包傳回SDN網(wǎng)絡(luò)時,由于添加了VLAN 10標記,從而匹配到了流表1,按照流表1的轉(zhuǎn)發(fā)決定把數(shù)據(jù)包轉(zhuǎn)發(fā)到SDN控制器,SDN控制器為其進行路徑選擇,然后安裝相應(yīng)流表(定義為流表3,優(yōu)先級C)到SDN交換機。此時流表優(yōu)先級C>A>B。所以數(shù)據(jù)包此后會按照流表3的轉(zhuǎn)發(fā)決定,被轉(zhuǎn)發(fā)到目的服務(wù)節(jié)點。

      圖5為網(wǎng)絡(luò)流被允許通過時網(wǎng)絡(luò)流的走向。其中,步驟3將網(wǎng)絡(luò)流轉(zhuǎn)發(fā)到限流服務(wù)器,限流服務(wù)器決定允許該網(wǎng)絡(luò)流正常轉(zhuǎn)發(fā),對數(shù)據(jù)包添加VLAN 10標記,然后傳回到SDN網(wǎng)路中,到達SDN交換機后,由于匹配到了流表1,且流表1的優(yōu)先級大于流表2,所以會向SDN控制器發(fā)出請求流表。步驟7控制器為交換機安裝正常轉(zhuǎn)發(fā)的流表3,該流表的優(yōu)先級最高,后續(xù)的轉(zhuǎn)發(fā)行為將按照此流表正常轉(zhuǎn)發(fā)到服務(wù)節(jié)點。

      圖5 微服務(wù)通信時的網(wǎng)絡(luò)數(shù)據(jù)流向

      3 實驗評估與分析

      3.1 測試環(huán)境搭建

      Mininet是一款廣泛使用的SDN網(wǎng)絡(luò)測試平臺,文中基于Mininet搭建網(wǎng)絡(luò)拓撲,并基于ONOS(一款分布式SDN控制器)編寫算法,微服務(wù)使用thrift框架編寫,運行于docker容器中,docker容器內(nèi)運行ubuntu操作系統(tǒng)。整個實驗的網(wǎng)絡(luò)拓撲如圖6所示,共10臺SDN交換機,由Mininet拓撲腳本建立,13臺運行微服務(wù)的主機,部署在13臺docker容器中,微服務(wù)之間的調(diào)用關(guān)系與圖5保持一致。docker容器與SDN交換機進行橋接,以進行網(wǎng)絡(luò)連通。實驗中交換機端口帶寬配置為50 M,延遲10 ms。

      圖6 實驗拓撲

      3.2 實驗結(jié)果分析

      首先將D1與S6的連接斷開,主機A1發(fā)起服務(wù)調(diào)用,使用隨機模式的負載均衡與文中提出的基于調(diào)用鏈路分析的負載均衡算法分別進行1 000次調(diào)用,重復10次試驗,結(jié)果表明文中算法的調(diào)用全部成功,隨機模式的實驗結(jié)果如圖7所示。大體上有三分之一的調(diào)用失敗,其原因為A應(yīng)用調(diào)用B應(yīng)用有3個候選機器,每個機器同等概率被調(diào)用,但主機B1的調(diào)用后續(xù)鏈路是不通的。

      圖7 實驗1隨機負載均衡算法失敗次數(shù)

      然后將D1與S6的連接恢復,延遲時間增加到100 ms,使用iperf工具進行隨機的背景流量發(fā)送,然后進行100次服務(wù)調(diào)用,對比平均調(diào)用時延,結(jié)果如圖8所示??梢娢闹刑岢龅乃惴軌蛴行Ы档驼{(diào)用時延,其原因主要是隨機負載均衡算法無法感知某個調(diào)用鏈路具體的優(yōu)劣,無法進行更優(yōu)化的路徑選擇。

      最后進行服務(wù)限流實驗,開啟20 M/s的隨機背景流量,隨后不斷加大調(diào)用頻率,出現(xiàn)大量超時后,統(tǒng)計100次調(diào)用成功的平均時延,共統(tǒng)計10次,隨后開啟限流,丟棄1/4的流量,重復實驗,結(jié)果如圖9所示。實驗表明限流功能能夠有效減少網(wǎng)絡(luò)擁堵。

      圖8 隨著流量增多服務(wù)調(diào)用延遲趨勢

      圖9 限流實驗結(jié)果

      4 結(jié)束語

      對基于SDN的微服務(wù)場景下的負載均衡與限流進行了研究,通過虛IP與IP改寫技術(shù),將微服務(wù)調(diào)用的負載均衡上移到控制平面,進而提出了基于調(diào)用鏈路分析的負載均衡算法。同時通過VLAN標記和流表優(yōu)先級機制實現(xiàn)服務(wù)限流,在服務(wù)過載時保護服務(wù)的正常服務(wù),避免服務(wù)不可用。實驗結(jié)果表明,提出的算法、策略能夠降低微服務(wù)的調(diào)用時延,提升微服務(wù)的性能。

      猜你喜歡
      流表限流調(diào)用
      基于限流可行方案邊界集的最優(yōu)支路投切
      能源工程(2020年6期)2021-01-26 00:55:22
      基于時序與集合的SDN流表更新策略
      核電項目物項調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于緩存策略的OpenFlow流表存儲優(yōu)化方案研究
      電子測試(2018年21期)2018-11-08 03:09:34
      簡析yangUI流表控制
      軟件定義網(wǎng)絡(luò)中一種兩步式多級流表構(gòu)建算法
      交通事故條件下高速公路限流研究
      上海公路(2017年1期)2017-07-21 13:38:33
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      高溫超導限流器
      丰镇市| 黔西县| 嘉义市| 兴仁县| 斗六市| 泰兴市| 舞阳县| 东方市| 景东| 中阳县| 桦南县| 贺州市| 萍乡市| 内乡县| 峨眉山市| 昌吉市| 商城县| 崇州市| 华容县| 华蓥市| 甘肃省| 拉孜县| 林州市| 曲阜市| 台东县| 岗巴县| 清涧县| 阳江市| 土默特左旗| 香格里拉县| 彭泽县| 阳高县| 曲水县| 鹤岗市| 洞头县| 五指山市| 昌乐县| 西充县| 广昌县| 清徐县| 博客|