◆鮮 偉 胡曉勤
?
基于OSPF等價路由的LVS集群負載均衡技術的研究
◆鮮 偉 胡曉勤
(四川大學計算機學院 四川 610000)
LVS(Linux Virtual Server)作為負載均衡軟件目前已經普遍的用于各類企業信息化系統中。本文簡要地介紹了LVS和OSPF等價路由,并針對大規模網絡的環境提出了一種結合LVS與OSPF的解決方案。該方案實現了多臺LVS All-active,可以用于解決目前常用的LVS主備模式下性能不足的問題。
LVS;OSPF;等價路由;負載均衡
隨著中國互聯網的發展,各類電商企業為了吸引客戶采取了各種的營銷策略,例如定時搶購,而這對企業的網絡系統帶來了巨大挑戰。目前LVS集群常部署在HA模式下,當面對海量的突發流量,LVS集群不堪重負而導致整體宕機。本文提出了一種LVS All active模式的的解決方案-基于OSPF等價路由的LVS集群負載均衡技術,從而解決上面所述的類似問題。
Linux虛擬服務器(Linux Virtual Server,LVS)是一個虛擬的服務器集群系統,用于實現負載平衡。項目在1998年5月由章文嵩成立,是中國國內最早出現的自由軟件項目之一[1]。LVS是基于Linux內核框架netfilter開發的,在傳輸層實現連接請求動態分發來實現負載均衡,可將一組服務器組成一個高可用、高性能的虛擬服務器。
LVS的重要組件包括兩部分,第一個組件ipvs,位于linux內核層;另一個組件叫ipvsadm,位于應用層。應用層的程序通過調用ipvsadm實現對ipvs的控制和管理。LVS的核心部分作為單獨的模塊存在,可以動態加載。LVS根據用戶要求的負載均衡算法,動態地載入對應的算法模塊。

圖1 LVS工作原理圖
LVS 集群采用 IP 負載均衡技術,將用戶請求按照一定策略分發到后端的 Server 上,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。在特定的場景下,整個服務器集群的結構對客戶是透明的,而且無需修改客戶端和服務器端的程序[2]。
如圖1所示,前端一個稱為負載均衡器的服務器,負責監聽和接受客戶端向VIP發出的請求,之后通過設定的調度算法,選出最佳的一個后端服務器,再將請求分發給該后端服務器。
LVS常用的負載均衡調度算法有輪詢、加權輪詢、最小連接數、加權最小連接數、基于局部性的最少連接、帶復制的基于局部性最少連接、目標地址散列調度和源地址散列調度[3]。
LVS 屬于一種軟件負載均衡方式與硬件負載均衡方式比如F5 Big-IP LTM,不同之處在于LVS 沒有 Node 和 Profile概念,而且LVS只提供 4 層的負載均衡,目前無法支持七層負載均衡。
OSPF(開放最短路徑優先)協議屬于內部網關協議,運行在一個自主系統內部。OSPF 是一種基于鏈路狀態算法的路由選擇協議,它可以解決RIP(路由信息協議)的一些局限性,例如:較小的路由范圍、較長的路由收斂時間和不能反映網絡特征的度量。而且,OSPF能處理更大的路由表來支持更多的路徑[4]。故目前OSPF常勝任于大型局域網。
OSPF默認使用4條負載均衡鏈路,最多可調整為支持8條等價鏈路負載均衡。當單條鏈路流量負載過高時,可以使用OSPF的等價路由負載均衡的特性,將流量分配到多條鏈路從而大幅增加鏈路帶寬。
目前各類網企業網絡系統中,主流的集群架構是使用LVS+keeplive方案,即HA主備模式。這種解決方案是使用多臺LVS服務器部署為主備模式,一臺LVS作為主用進行實時負載均衡的連接調度,另外一臺或多臺LVS通過VRRP(Virtual Router Redundancy Protocol)協議,對主用LVS狀態進行實時監控,一旦主LVS出現異常,VIP(虛擬IP)等資源將在數秒內切換至某臺備用的LVS調度器,從而保證了系統的高可靠性和業務的連續性。
但是隨著業務量的增長,隨之網絡流量出現了劇烈增長,HA主備模式的弊端不斷顯現,逐漸無法適應目前業務增長。具體地講,其弊端主要表現為:HA模式在任一時刻僅一臺LVS調度器提供調度分發服務,主用的單節點LVS負載過重無法支撐海量請求連接時,導致主節點LVS宕機,同時備節點LVS同樣無法承受這些巨量的請求連接,從而將導致整個集群系統癱瘓。
為了應對目前互聯網企業中海量的連接請求,可以采用LVS+OSPF集群模式,該方案可使多臺LVS服務器同時active狀態。
該方案利用開源的軟路由軟件Quagga[5],在負載均衡節點上安裝此軟件,并啟用OSPF協議,與對接的三層交換機建立OSPF鄰居,進而將VIP地址宣告進OSPF域。通過調整鏈路的cost值,三層交換機將學習到去往VIP的多條等價負載均衡鏈路。OSPF等價路由特性最多可以支持8臺LVS實現ALL-Active的集群服務。

圖2 LVS+OSPF集群模式
該技術具體工作流程如下:
如圖2所示,每臺LVS一個接口與三層交換機上連,另一個接口下連多臺RS。三層交換機與LVS安裝的軟路由軟件Quagga分別啟用OSPF,并彼此建立OSPF鄰接關系。每臺LVS將各自的VIP宣告進OSPF域,最終三層交換機路由表將有多條通往VIP的等價路由。前端LVS與后端RS使用DR(directly routing)模式[6]。
當客戶端向VIP發起一個TCP連接請求,數據包必將路由到三層交換機,三層交換機查詢路由表,通往目的地址VIP有多條等價路徑,通過對源IP地址、源端口、目的IP地址和目的端口進行hash,將TCP連接分配到集群中的某一臺前端LVS上,LVS將請求分發到后端某一臺后端Real server(RS),后端RS完成處理后將數據直接返回給用戶,完成整個過程。
該解決方案的好處在于:首先,LVS可以自由橫向擴展,最多擴展到8臺前端LVS同時active;另外,不存在LVS備機,提高了設備利用率;最后,高可用性進一步提升,某臺LVS宕機后,其他active接替其處理。
為了驗證該方案可行性和集群性能,將分別進行HA模式和多活LVS模式對比實驗測試。本次實驗中,將使用Microsoft Web Application Stress Tool(簡稱WAS),一種WEB壓力測試工具。
實驗環境,我們利用一臺Dell PowerEdge 710服務器上進行測試,物理機采用ESXi 64位版本為6.5的系統,處理器為8顆Intel Xeon CPU E5620 @240GHZ處理,16GB內存。在ESXI中多個虛擬機,虛擬機中都使用Centos7.2系統,每個虛擬機使用1顆vCPU、2G內存。
分別部署HA模式和多活LVS模式,使用WAS分別對集群進行Web壓力測試。測試結束后,WAS會產生一個report,包括對各項性能進行了詳細分析,其中一個重要指標是TTLB(Time To First Byte),它反應了業務的平均響應時間。基于報告我們得到實驗結果,如下圖所示,圖3顯示了當連接數較小的時候,并發連接數在100到400時,多活LVS模式與HA模式在TTLB指標差別微弱。但是隨著增加連接數,多活LVS模式的TTLB指標明顯優于HA模式。這是由于多臺LVS服務器同時分擔了連接數的調度分發。

圖3 LVS的HA模式與多活模式TTLB指標對比
本文首先對LVS和OSPF進行了簡要介紹,進一步介紹了目前企業中常用的LVS HA模式的負載均衡技術,并分析了該技術的在目前移動互聯網情況下的弊端,進而提出了基于OSPF的LVS集群解決方案-多活LVS集群模式。最后通過實驗,驗證了本文介紹的方案在性能方面的更加優越。
[1]wikipedia.https://en.wikipedia.org/wiki/Linux_ Virtual_Server.
[2]騰訊云. https://www.qcloud.com/community/ article/238341.
[3]ZhnagWS.LVSclusterLoaddispatch[EB/OL].[2016-03-10].http://www.linuxvirtualserver.org/zh/lvs4.html.
[4]楊嵐蘭,唐寧九.基于IPv6的OSPF技術及實現[D].四川大學, 2005.
[5]quagga. http://www.nongnu.org/quagga.
[6]章文崇山. http://www.linuxvirtualserver. org/zh/ lvs3.html.