負載平衡技術在算力網路中的應用

2023.10.03

負載平衡技術在算力網路中的應用

在大力建設算力網絡的大背景下,隨著SDN思潮的深入推進、網絡集群的部署,負載平衡成為了一種不可或缺的技術,它在雲,網,邊都起了至關重要的作用。本文將對常見的幾種負載平衡技術進行介紹,同時對各種技術的不足之處進行思考。

Part 01、ECMP 

ECMP是一個逐跳的、基於流的負載平衡策略,當路由器發現同一目的位址出現多個最優路徑時,會更新路由表,為此目的位址添加多條規則,對應於多個下一跳,且可同時利用這些路徑轉送數據,增加頻寬。ECMP演算法被多種路由協定支持,例如:OSPF、ISIS、EIGRP、BGP等。在資料中心架構VL2中也提到使用ECMP作為負載平衡演算法[1]

簡單來說,ECMP是基於路由層面所實現的負載平衡,基於IP層進行負載有許多優點,如下:

(1)部署配置簡單,可以基於許多協定自身特性實現負載,無需額外配置。

(2)提供多種流量調度演算法方式,可以基於雜湊也可以基於權重和輪詢方式。

簡單的方式同時意味著存在許多缺陷,具體如下:

(1)可能加劇鏈路堵塞。因為ECMP不會判斷原先鏈路是否已經堵塞,都會將流量進行負載,這樣子會導致原先堵塞的鏈路更加堵塞。

(2)很多情況下負載效果不好。ECMP無法區分多條網路後的流量空閒情況以及ECMP在流量差距大的情況下負載效能差。

這種基於網路三層的負載方式雖然易於使用和部署,但是無法滿足業務層面的使用,無法保持會話,故下面筆者會介紹幾種網路四層以上的負載方式。

Part 02、LVS負載  

LVS(Linux Virtual Server)即Linux虛擬伺服器,是由章文嵩博士主導的開源負載平衡項目,目前LVS已被整合到Linux核心模組中。此專案在Linux核心中實現了基於IP的資料請求負載平衡調度方案,終端互聯網用戶從外部存取公司的外部負載平衡伺服器,終端用戶的Web請求會發送給LVS調度器,調度器根據自己預設的演算法決定將該請求發送給後端的某台Web伺服器,例如,輪詢演算法可以將外部的請求平均分發給後端的所有伺服器,終端用戶存取LVS調度器雖然會被轉發到後端真實的伺服器,但如果真實伺服器連接的是相同的存儲,提供的服務也是相同的服務,最終用戶不管是訪問哪台真實伺服器,得到的服務內容都是一樣的,整個集群對用戶而言都是透明的。最後根據LVS工作模式的不同,真實伺服器會選擇不同的方式將用戶需要的資料傳送到終端用戶,LVS工作模式分為NAT模式、TUN模式、以及DR模式【2 

圖1 LVS結構圖

與ECMP不同的是LVS是基於會話的四層負載平衡,LVS會基於上下行五元組對不同的流進行會話保持,再結合LVS的長期發展, LVS具有非常多的優勢

(1)抗負載能力強。LVS只在網路四層做分發,不會過多的消耗CPU和記憶體資源。

(2)配置要求低。簡單配置就能夠正常使用。

(3)健壯性強。發展時間長,業界的部署方案非常多,穩定性高。

同時,LVS也存在許多不足:

(1)功能不夠豐富。配置簡單的同時導致LVS缺少更多的功能,缺少故障遷移,增加恢復等功能。 

(2)NAT模式效能受限,當然這也是許多四層負載所面臨的問題,筆者會在後續提出思考。

Part 03、NGINX負載 

NIGINX除了作為一個高效能的HTTP伺服器,同時能夠提供反向代理WBE伺服器的功能,也意味著部署NGINX作為一台負載平衡伺服器是可行的。當然,業界已經非常廣泛的在使用NGINX作為負載平衡伺服器,服務集群,主備鏈路等。

NGINX和LVS類似,都是基於四層以上的負載平衡,能夠維持會話。同時因為NGINX工作在網路七層,相較於LVS負載,NGINX對網路的依賴會更小。

相較於LVS負載平衡,NGINX具有以下優勢:

(1)對網路依賴小。只要網路能通就能做負載,不像LVS部分模式需要特定的網路環境。

(2)安裝簡單,配置部署快。

(3)NIGINX負載可以偵測到伺服器內部故障。簡單來說,上傳檔案時發生故障,NIGINX會自動將上傳切到另一台負載設備處理,LVS無法如此使用。

同樣的,NGINX也存在一些缺點:

(1)缺少雙機熱備方案,多數情況下單機部署存在一定風險。(2)功能調整度高,變相導致它的維護成本和難度高於LVS。

Part 04、思考與探究  

綜合以上幾種常見的負載技術的優缺點,其實不難發現各有各的好處,然而在實際使用過程中,筆者發現這幾種方式都很難滿足高性能跨網負載,即在做FULL- NAT的前提下實現跨城域網路的負載,簡單來說,就是在實驗多節點雲化部署時,這些方案都存在一定的效能貧瘠。

基於此,經過查閱相關資料,筆者發現Cisco開源的VPP專案提供了一種高效能負載平衡器的方式,基於DPDK收發包,VPP的高效能處理,經過二次開發可以實現跨網高效能負載,目前已經取得一定成效。下一期將針對此高效能四層跨網負載平衡技術展開介紹與討論。

未來,智慧家庭營運中心將在實現高效能跨網負載平衡器上進行更多的研究,歡迎更多的開發架構人員投入在高效能跨網負載平衡器的功能開發和場景探究中。