劉立斌
基于負載均衡技術的研究及展望
劉立斌
隨著人們互聯網技術的顯著提升,對網絡性能的要求也越來越高,但是由于網絡服務器的處理能力有限,對服務器的過多的請求會超出其承受的負載上限,最終會導致服務質量差,負載均衡技術的出現在一定程度上緩解了網絡性能的壓力,本文主要介紹了負載均衡及其一些技術并對其未來進行了一定的展望。
負載均衡;負載均衡算法;OpenFlow;SDN
互聯網的快速發展正在不斷影響著人們的方方面面,尤其隨著直播、視頻以及大型游戲的火熱開展,網絡當中的負載量一直在高速地增長,網絡數據中心的應對能力也在不斷地變強。雖然網絡帶寬也一直在不斷地飛快增長,但并不能應對人們對網絡性能的要求,導致了過長的響應、排隊等待等許多問題。網絡中的流量不能均衡地分配是導致此現象的一個主要緣由,這使得有的網絡節點處于超負荷工作狀態,而有的節點卻處于沒有任務需要處理。而我們每天都在手機甚至電腦中使用的一些需要上網的一些程序隨時都可能向數據中心網絡中注入流量,如何均衡數據中心的非常大的負載,充分利用網絡流量負載是一個急需解決的普遍性現象。通過合理分配流量的負載均衡技術的出現在一定程度上解決數據中心的負載平衡,從而提高整個網絡的使用效率。
負載均衡是將現有的工作負載均衡的分配到數個計算單元的一種技術,計算機、網絡鏈路、磁盤驅動器以及計算機集群等都可以作為計算單元。負載均衡的目標是優化資源的使用來解決網絡擁塞問題,極大程度上地提高其吞吐量,降低其響應時間以及盡量避免過載情況的出現。負載均衡技術可以明顯地提高網絡以及系統的性能。負載均衡技術處理接收到的要求是將它們分配到許多不同的節點去,當某個節點出現不能工作的狀況或者出現沒有響應狀況時,將不能處理的流量派發到別的工作良好的節點來處理,有效的避免了網絡一些重要組成部分可能出現某個單個節點沒有用的可能性。
負載均衡主要分為硬件實現和軟件實現。其中,硬件負載均衡實現負載均衡主要是使用負載均衡器,但是硬件負載需要特別的芯片來達到其比較高的性能,這就造成了它高昂的價格從而導致了它的局限性。而軟件實現是使用與其相關的軟件,同時調用和其有關聯的協議,來實現負載均衡的效果。這種方法的配置十分的簡單,部署更加方便,價格相對于硬件實現來說是非常低廉的,目前更受歡迎的是H a p ro x y、LVS、N gin x等。普遍來說學術界的負載均衡研究更側重于軟件實現方面,通過不斷改進負載均衡調度算法,從而提高系統的整體利用率。然而,由于傳統網絡架構的制約,這些解決方案無法同時滿足靈活高效的要求,并沒有非常強的通用性,故怎么提高靈活性和通用性已成為目前的研究方向。
根據反饋區別,負載均衡技術可以分為動態負載均衡技術和靜態負載均衡技術兩個類別。靜態負載均衡技術提前根據系統的綜合能力、性能或曾經的實踐情況等靜態參數來制定讓系統得以均衡的方案。靜態負載均衡技術一旦運用后,系統不會關心以后的工作狀態是好是壞,只會一如既往地遵循剛開始使用的方案來進行均衡的負載。靜態負載均衡技術這種方法可以說是比較容易,系統花費比較小,但是對方案的設計要求非常高,需要考慮到以后所有可能出現的問題。動態負載均衡技術主要是基于當前的狀態情況反饋來調整負載的分配,即便動態負載均衡方法更靈活,性能比靜態負載均衡方式更好,但是動態負載均衡這種方法由于過度的復雜,導致系統花費非常較大,這使動態負載均衡的性能優勢被它非常大的復雜性和花費可能所嚴重影響;由于處理對象的不同,負載均衡還可以分為兩大類:服務器負載均衡技術和網絡鏈路負載均衡技術。服務器負載均衡最重要的是對服務器集群的設置,并使用域名系統服務等技術來實現均衡的負載。有許多形式的針對網絡鏈路負載均衡,如在數據鏈路層中,鏈路聚合技術可以用于在不同物理路徑上分配網絡流量,以達到負載均衡;在網絡層,可以根據報文源I P地址以及目的I P地址等主要內容來選擇不同的路徑上的轉發來實現負載均衡的目的。
負載平衡的實現主要是通過找到目前工作量最低的節點,然后會將新的任務請求發到該節點,從而達到任務數與其處理之間的均衡,提高整個系統的性能。一般常見的負載均衡算法有:輪詢法、加權輪詢法、最小連接調度算法、加權最小連接算法、散列法等。下面我們來簡單地介紹一下這些算法。
輪詢法原理非常明了,輪詢法內的每個節點都擁有同樣的處理能力,每個節點都能獨自的對外進行服務。輪詢法具有一個循環鏈表,每一個有能力能力提供業務的節點都被包含在里面;當有一個新的業務到來時,每一個節點會被依次分配業務,一直周而復始,而且在該方法中,每一個節點分配到業務是等概的。輪詢法最大的不足之處是它想當然地認為每一個節點性能都是一樣的,沒有思考其性能不同時的情況,但是當存在節點間性能相差比較懸殊的時候,如果還不考慮性能差異而仍然依次率給每個節點分配相同的業務,極大程度上會對較差性能節點造成較大的損傷。因此該方法非常不適合節點之間性能相差較大的系統中。由于輪詢法思路比較簡潔明了,它經常和別的一些方法混合使用。
加權輪詢法被提出是為了應對上面介紹的輪詢法的不足。加權輪詢法不僅繼承了輪詢法的優點,還解決了它的不足之處,提出了權值這一概念定義,每個節點的權值大小表示該節點的性能的優劣:權值越大代表節點的性能越好,可以接受的業務量也能越多;權值越小,節點的性能就越差,能接受的業務量對應也就越少;當權值等于0時表示該節點沒有能力對外提供業務。加權輪詢法的基本想法為:負載均衡器根據權值的大小輪流為各個節點分配任務,權值大的可以分配的多一點而權值小的相應也就少分一點,也就是說根據每一個節點權值的大小決定每個節點所分到的業務量,從而增加了整個系統的性能。
該算法是一種比較靈活的算法,用正在活躍的能夠連接的節點數目來衡量系統的承受能力,把一個剛發送過來的的連接要求分發到現在這個時刻在節點之間連接數目為最小的一個節點。最小連接調度算法引進了一種新的概念--調度器:能夠統計每一個節點在當前這個時刻已經連接了的總數量,當有一個要求被調度到某一個節點時,該節點連接總數的位數就會增加1,當某個節點的連接斷開或者很長時間沒有響應時,調度器記錄的這個節點的連接數目就會減少1。
加權最小連接算法和加權輪詢法一樣引入了權值這一概念,每個節點權值大小代表著加權最小連接算法的處理能力的強弱。加權最小連接算法是把其節點建立的連接數盡可能的與該節點的權值大小相對應,權值大的節點內就可以分擔更多的負載,而權值小點的節點就承擔較小的負載。
散列法主要是通過散列函數來提高系統的利用率,其主要原理為:當系統受到報文任務請求時,散列函數會通過對該任務中報文的某個字段進行處理運算,最后由處理得到的結果確定應由哪個節點處理該報文,另外源I P地址和目的I P地址是散列函數最常用的處理字段。散列法能確保同一條網絡流的報文能夠被映射到同一節點來處理,還對UD P等無連接任務具有非常好的效果。散列法能夠很優秀地保證業務分配的合理性以及統一性,缺點是對散列函數的選取非常嚴格,被使用的散列函數需要其地址盡可能在其空間上嚴格均勻地分布。
由于傳統網絡架構的局限性,在傳統網絡中實現的負載均衡通常靈活性較差,不能很好地使用網絡中的資源與計算的資源,軟件定義網絡(So f t w are De f ined N et w ork,SD N)概念的提出完全改變了傳統網絡的體系架構的不足,為這問題的解決提供了思路。SD N是一種將控制層和轉發層分離的新型網絡架構,交換機只負責數據流的轉發,降低了網絡交換機的負載,控制層的功能全部由運行于服務器上的控制器實現。控制器需要下發流表到交換機才能支持轉發層設備的有效運行,而控制層與轉發層之間的通信需要遵守一定的規則,目前較普遍的是采用O p en Fl o w協議來實現信息交互。
對于負載均衡服務而言,SD N和O p en Fl o w這種控制轉發分離的架構通過控制器作為核心,監測網絡中的流量、實時調度流量,非常適合為網絡提供負載均衡服務,并且近年來O p en Fl o w技術在對網絡的革新和發展的推動中發揮了非常大的影響。
O p en Fl o w網絡的主要組成有O p en Fl o w交換機、控制器和O p en Fl o w協議等。O p en Fl o w交換機是整個O p en Fl o w網絡的核心部件,主要管理數據層的轉發并實現數據層的功能;控制器則負責路徑選擇、計算等功能,實現控制層的功能;O p en Fl o w協議相當于是O p en Fl o w交換機和控制器間交流的一種介質。三者之間的關系是:通過安全通道O p en Fl o w交換機與外部控制器進行通信,安全通道中傳輸的是負責傳輸控制以及管理信息的O p en Fl o w協議。

圖1 OpenFlow交換機
O p en Fl o w交換機主要由三部分組成:一個或者多個流表、執行分組查找和轉發的組表和連接O p en Fl o w交換機到控制器接口的安全信道;控制器在O p en Fl o w網絡架構中的主要任務是對其網絡內流量的處置和掌握,一般來說控制器完成的工作為:(1)網絡鏈路發現;(2)策略制定和路徑選擇;(3)流表項的下發;O p en Fl o w協議主要用來完成O p en Fl o w交換機與控制器之間的通信。

圖2 OpenDayLight控制器層次示意圖
基于O p en Fl o w的負載均衡技術同時具有硬件負載和軟件負載的優點,即基于O p en Fl o w的負載均衡不僅所需要的成本低而且所需要的配置也非常簡單。基于O p en Fl o w的負載均衡都是在O p en Fl o w控制器上完成的,如N O X/P O X、O p enDayLight等控制器,根據對交換機相同時間間隔的流量統計得到數據從而得出網絡負載狀況,然后由此改變系統內部的負載狀況,更好地完成對網絡負載的均衡。
本文調研了現有的幾種簡單負載均衡算法:P l ug-n-Serve負載均衡算法、持多服務的O p en Fl o w負載均衡算法、基于通配符規則匹配的負載均衡算法、動態負載均衡算法DL B。
P l ug-n-Serve負載均衡算法:該負載均衡算法不僅想到了網絡處于擁擠時的可能性,還考慮到了服務器處于較大負載時的情況,該模型根據網絡內節點的實時狀況和應答所需要的綜合響應時間,有效地給網絡節點分配請求。因為P l ug-n-Serve負載均衡模型是為了校園網絡中的負載達到均衡而設計出來的,所以P l ug-n-Serve負載均衡模型沒有想到在數據中心網絡的情形,而數據中心應該具備對社會內的各種場所提供業務,并不能局限于校園網絡中的工作量,這是該算法的主要不足之處。
支持多服務的O p en Fl o w負載均衡算法:該算法基于O p en Fl o w負載均衡使用不一樣的控制器去應對不一樣的應答要求,而且不一樣的控制器還可以使用不一樣的負載均衡算法。這種主要應對不同的服務進行了不同的操作,但也沒有針對數據中心的情形,而且數據中心內帶寬使用效率在每一個鏈路上都有可能有所差異;在邊緣層或者匯聚層上,如果在一個非常短的時間內遇到了大量的流量應該會造成網絡擁塞現象的出現。
基于通配符規則匹配的負載均衡算法:以發起請求的客戶機I P地址前綴作為通配符,在一顆二叉樹上分配通配符到對應的服務器,形成一條規則,若干規則形成一個規則集以流表形式裝載到O p en Fl o w交換機上,由規則集控制交換機的轉發,降低了控制器介入的次數,降低了請求的平均延時。該方案雖以數據中心網絡為目標場景,但目前僅在兩臺交換機的簡單網絡中進行了驗證,還無法適應復雜的實際數據中心網絡拓撲。
動態負載均衡算法DL B:該動態負載均衡算法以流為基本單位,并遵循深度優先的策略,從源節點出發的所有流都只會向更高層傳輸,除非該流已經到達了它應該到達的最高層節點,之后該流才會向底層前進直到到本次所需要到達的目的節點。
隨著科技的不斷發展和生活的逐漸進步,人們對網絡性能的需求只會越來越大,現有負載均衡算法仍然存在著許多不足之處,會慢慢的滿足不了人們對網絡性能的要求,我們需要從不同的角度以及方面來提出一個個更加適應人們需求的更加動態的負載均衡算法,使網絡負載能夠更好的均衡分在網絡中。
[1] 周瑩蓮,劉甫.服務器負載均衡技術研究[J].計算機與數字工程,2010,38(04):11-14+35.
[2] 羅擁軍,李曉樂,孫如祥.負載均衡算法綜述[J].科技情報開發與經濟,2008,(23):134-136.
[3] 周松泉.一種新的服務器集群負載均衡算法[D].南昌航空大學,2012.
[4] 張遠.基于OpenFlow的負載均衡研究[D].北京工業大學,2014.
[5] 左青云,陳鳴,趙廣松,邢長友,張國敏,蔣培成.基于OpenFlow的SDN技術研究[J/OL].軟件學報,2013,24(5):1078-1097.
[6] 楊夢婷.基于OpenFlow的SDN網絡仿真平臺設計與DoS攻擊檢測[D].北京郵電大學,2015:1-74.
[7] 張園園.利用oponflow技術實現網絡負載均衡[J].中國科技論文在線,2010,(12).
F062.4
A
1008-4428(2017)10-140-03
劉立斌,男,遼寧省遼中縣人,吉林大學電子與通信工程領域工程碩士,高級工程師,現任中移鐵通有限公司江蘇分公司總經理。