孫喬,鄧卜僑,王志強,裴旭斌
(1. 北京國電通網(wǎng)絡(luò)技術(shù)有限公司,北京 100070;2. 國網(wǎng)浙江省電力公司信息通信分公司,浙江 杭州 310007)
一種基于分布式服務(wù)器集群的可擴展負載均衡策略技術(shù)
孫喬1,鄧卜僑1,王志強2,裴旭斌2
(1. 北京國電通網(wǎng)絡(luò)技術(shù)有限公司,北京 100070;2. 國網(wǎng)浙江省電力公司信息通信分公司,浙江 杭州 310007)
提出了一種基于軟件定義網(wǎng)絡(luò)的分布式數(shù)據(jù)庫負載均衡算法,將數(shù)據(jù)、控制、應(yīng)用分離的同時計算服務(wù)器集群中單個服務(wù)器的實際負載。通過查詢流量采樣記錄來決策最少連接的服務(wù)器路徑,減少了訪問請求的響應(yīng)時間,提高了系統(tǒng)吞吐量和容錯能力,實現(xiàn)了充分利用服務(wù)器資源的目的。內(nèi)網(wǎng)中的分布式數(shù)據(jù)庫實驗對通用負載均衡技術(shù)和基于軟件定義網(wǎng)絡(luò)的負載均衡技術(shù)進行了比較,在不同服務(wù)器集群的負載狀態(tài)下,后者的平均響應(yīng)時間小于前者,并得到了更好的負載均衡效果。
可擴展負載均衡策略;軟件定義網(wǎng)絡(luò);自適應(yīng)流量采樣;分布式服務(wù)器集群
互聯(lián)網(wǎng)技術(shù)的快速發(fā)展使大型互聯(lián)網(wǎng)服務(wù)提供商的服務(wù)器集群面臨更嚴重的挑戰(zhàn)。隨著用戶和網(wǎng)絡(luò)帶寬的增長,服務(wù)器需要在短時間內(nèi)處理大量訪問請求。如果服務(wù)器不能及時處理用戶訪問請求,增加用戶的等待時間,則會影響用戶體驗,大大降低服務(wù)質(zhì)量。這使服務(wù)器成為網(wǎng)絡(luò)的新瓶頸,從而迫使研究人員開始研究如何提高服務(wù)器性能。對于這些通過網(wǎng)絡(luò)連接起來的數(shù)據(jù)庫而言,必須能夠?qū)崟r處理大量的用戶請求,而且必須能向用戶提供高質(zhì)量服務(wù),這就要求系統(tǒng)能使每個數(shù)據(jù)庫高效運行,充分發(fā)揮它們的作用。
為了提高服務(wù)器性能,企業(yè)采取了一系列措施,如提高CPU處理速度、增加服務(wù)器緩存容量、使用高速磁盤陣列以及構(gòu)建服務(wù)器集群。簡單地升級硬件系統(tǒng)不僅會導(dǎo)致現(xiàn)有資源閑置,而且當業(yè)務(wù)繼續(xù)擴大時,企業(yè)同樣將面臨困難局面。通過建立服務(wù)器集群,企業(yè)可以將訪問請求轉(zhuǎn)發(fā)到多個服務(wù)器。這種方法在一定程度上提高了服務(wù)器性能。然而,該解決方案有一個新問題,當服務(wù)器集群接收到一個服務(wù)器應(yīng)該響應(yīng)的訪問請求時,如果控制系統(tǒng)不能合理分配訪問請求,會出現(xiàn)服務(wù)器之間的負載不均衡情況。如何才能提高系統(tǒng)的響應(yīng)速度、穩(wěn)定性和擴展性,并且保護最初的硬件投資,避免大量用戶請求對系統(tǒng)帶來的沖擊,一個解決方案就是負載均衡技術(shù)。
負載均衡的主要目標是通過硬件或者軟件的策略來決定由哪個數(shù)據(jù)庫執(zhí)行用戶發(fā)出的請求。負載均衡機制在后端數(shù)據(jù)庫間分發(fā)用戶請求,以達到減少系統(tǒng)瓶頸、增強系統(tǒng)響應(yīng)能力的目的。因此,負載均衡對網(wǎng)絡(luò)環(huán)境下的異構(gòu)數(shù)據(jù)庫系統(tǒng)提升性能與效率具有重要意義。
負載均衡常見的方法是在服務(wù)器集群前部署一個負載均衡器,因此它可以為幾個服務(wù)器合理分配負載以充分利用服務(wù)器資源。負載均衡技術(shù)可以有效解決服務(wù)器之間的負載不均衡問題,從而減少了訪問請求的響應(yīng)時間,提高系統(tǒng)吞吐量和容錯能力。經(jīng)典的負載均衡技術(shù)需要使用昂貴的硬件設(shè)備,而且不能實現(xiàn)流量負載的精確控制。這些限制使傳統(tǒng)負載均衡技術(shù)不適合大規(guī)模應(yīng)用。
通常的負載均衡技術(shù)需要較多硬件費用的投入,且無法進行負載定量控制,因此無法實現(xiàn)在較大規(guī)模的分布式數(shù)據(jù)庫應(yīng)用場景中。軟件定義網(wǎng)絡(luò)(software defined networking,SDN)技術(shù)的出現(xiàn)給管理者提供了具有低成本和靈活操作優(yōu)勢的流量管理技術(shù)。軟件定義網(wǎng)絡(luò)是計算機網(wǎng)絡(luò)管理員通過提取低級功能來管理網(wǎng)絡(luò)服務(wù)的新方法。它把傳統(tǒng)的網(wǎng)絡(luò)體系結(jié)構(gòu)中的控制平臺和轉(zhuǎn)發(fā)平臺分開,運行在控制平臺的控制器可以通過管理開關(guān)流程表實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)的控制[1-3]。
本文提出了一種基于軟件定義網(wǎng)絡(luò)的分布式數(shù)據(jù)庫負載均衡算法,將數(shù)據(jù)、控制、應(yīng)用分離的同時計算服務(wù)器集群中單個服務(wù)器的實際負載,通過查詢流量采樣記錄來決策最少連接的服務(wù)器路徑,減少了訪問請求的響應(yīng)時間,提高了系統(tǒng)吞吐量和容錯能力,實現(xiàn)了充分利用服務(wù)器資源的目的。
由于互聯(lián)網(wǎng)資源及可用性的迅速發(fā)展,分布式數(shù)據(jù)庫計算應(yīng)用一直呈現(xiàn)指數(shù)級增長,在業(yè)界被廣泛構(gòu)建和使用。隨著分布式數(shù)據(jù)庫規(guī)模的擴大,其服務(wù)器集群需要處理更多、更大體量的查詢等請求,如何保持性能的穩(wěn)定性是十分重要的問題。負載均衡方法被認為是利用并行和分布式系統(tǒng)的全部資源的先決條件之一。
負載均衡允許在一個或多個服務(wù)器、數(shù)據(jù)中心、硬盤驅(qū)動器或其他計算資源之間分配工作負載,從而可提供一種機制,用于在位于數(shù)據(jù)中心的任意數(shù)量的應(yīng)用程序部署中分發(fā)應(yīng)用程序請求。負載均衡機制可以大致分為集中式或分散式、動態(tài)或靜態(tài)、周期性或非周期性。負載均衡技術(shù)的研究包括很多內(nèi)容,如在最小執(zhí)行時間中,如何在節(jié)點不同負載條件下將命令分配給預(yù)期執(zhí)行速度最快的節(jié)點,如何提高如分布式數(shù)據(jù)挖掘等數(shù)據(jù)密集型應(yīng)用程序中的計算性能等現(xiàn)實應(yīng)用問題[4-6]。
在如圖 1所示的服務(wù)器負載均衡模型的計算方式中,負載均衡可以改善多個計算資源之間的工作負載分配。負載均衡旨在優(yōu)化資源使用、最大化吞吐量、最小化響應(yīng)時間,并避免任何單一資源的過載。用戶的訪問請求首先通過互聯(lián)網(wǎng)發(fā)送到負載均衡器,而不是直接發(fā)送到服務(wù)器集群。負載均衡器通過使用指定算法選擇最優(yōu)服務(wù)器并轉(zhuǎn)發(fā)請求到服務(wù)器。使用具有負載均衡而不是單個組件的多個組件可以通過冗余來增加可靠性和可用性。負載均衡通常涉及專用軟件或硬件,如多層交換機或域名系統(tǒng)服務(wù)器進程。負載均衡與通道綁定不同之處在于負載均衡在網(wǎng)絡(luò)套接字(OSI模型層4)基礎(chǔ)上劃分網(wǎng)絡(luò)接口之間的流量,而通道綁定意味著在每個數(shù)據(jù)分組較低級別的物理接口之間或數(shù)據(jù)鏈路的基礎(chǔ)上,使用最短路徑橋接協(xié)議[7-9]。

圖1 服務(wù)器負載均衡模型
負載均衡算法通??梢苑譃殪o態(tài)算法和動態(tài)算法。靜態(tài)負載均衡算法不考慮服務(wù)器的負載狀態(tài),所以它適合可以提前預(yù)測負荷狀態(tài)的情況。靜態(tài)算法主要包括Round-Robin算法、比率算法和優(yōu)先級算法。Round-Robin算法中,訪問請求根據(jù)到來序列順序分配給每個服務(wù)器;比率算法中,根據(jù)預(yù)設(shè)比設(shè)定每個服務(wù)器相應(yīng)的負載比例;優(yōu)先級算法中,當負載不均衡時,備份服務(wù)器將被啟用。
動態(tài)負載均衡算法是指負載均衡器可以動態(tài)分配負載,以根據(jù)服務(wù)器的負載狀態(tài)優(yōu)化服務(wù)器。典型動態(tài)算法主要包括最少連接算法、預(yù)測算法和響應(yīng)時間算法。最少連接數(shù)算法的負載均衡器定期檢測服務(wù)器和用戶之間已建立的連接數(shù),當一個新的訪問請求到達時,負載均衡器將該請求轉(zhuǎn)發(fā)至少連接到服務(wù)器;預(yù)測算法的控制器可以通過預(yù)測模型預(yù)測下一個周期的服務(wù)器負載狀態(tài);響應(yīng)時間算法的負載均衡器通過發(fā)送探測指令估計每個服務(wù)器的負載狀態(tài)。
由于傳統(tǒng)網(wǎng)絡(luò)的局限性,負載均衡技術(shù)的發(fā)展逐漸遇到瓶頸。大多數(shù)負載均衡器為特定應(yīng)用或產(chǎn)品定制,但其代碼的可重用性和不同架構(gòu)的適用性不佳。此外,用于負載均衡的復(fù)雜軟件或硬件系統(tǒng)會增加企業(yè)的運營成本。
軟件定義網(wǎng)絡(luò)起源于2006年美國斯坦福大學的研究課題,并于2009年被正式提出。軟件定義網(wǎng)絡(luò)的概念是:軟件定義網(wǎng)絡(luò)利用分層的思想將數(shù)據(jù)與控制相分離,在控制層包括具有邏輯中心化和可編程的控制器,可掌握全局網(wǎng)絡(luò)信息,方便管理配置網(wǎng)絡(luò)和部署新協(xié)議等;在數(shù)據(jù)層包括dumb交換機,交換機僅提供簡單的數(shù)據(jù)轉(zhuǎn)發(fā)功能,可以快速處理匹配的數(shù)據(jù)分組,適應(yīng)流量日益增長的需求。兩層之間采用開放的統(tǒng)一接口進行交互,控制器通過標準接口向交換機下發(fā)統(tǒng)一標準規(guī)則,交換機僅需按照這些規(guī)則執(zhí)行相應(yīng)的動作即可。軟件定義網(wǎng)絡(luò)技術(shù)具有控制與傳輸分離、集中式控制和軟件可定義的特征[10]。因此軟件定義網(wǎng)絡(luò)技術(shù)的基本特性增加了網(wǎng)絡(luò)部署的靈活性和網(wǎng)絡(luò)的可編程性,因此可以滿足快速高效的網(wǎng)絡(luò)需求[11]。
由于傳統(tǒng)網(wǎng)絡(luò)負載的高成本使得負載均衡技術(shù)很難得到廣泛應(yīng)用,如圖2所示的OpenFlow技術(shù)提供了一個具有低成本、操作靈活等優(yōu)點的流通管理技術(shù)。已經(jīng)有一些研究關(guān)注OpenFlow網(wǎng)絡(luò)中的負載均衡問題,另一些研究則提出了另一種負載均衡解決方案:通過使用多個OpenFlow控制器來處理多服務(wù)的負載,但是這些方法仍然無法實現(xiàn)真正的負載均衡[12,13]。

圖2 OpenFlow負載均衡結(jié)構(gòu)
為了獲得每個服務(wù)器的負載 L、計算能力 C和優(yōu)先級 P,需要對計算服務(wù)器集群中單個服務(wù)器的實際負載進行統(tǒng)計。本文采用的統(tǒng)計算法是每0.1 s對每個服務(wù)器計算一次上述的L、C和P值,并將其定義為 S=L·C·P的服務(wù)優(yōu)先級統(tǒng)計結(jié)果存儲在服務(wù)優(yōu)先級數(shù)據(jù)庫中。當用戶向服務(wù)器發(fā)送請求時,此服務(wù)需求同時進入負載統(tǒng)計的計算路徑,并與服務(wù)優(yōu)先級數(shù)據(jù)庫中的所有S值進行比對,找到S值大于用戶服務(wù)需求的服務(wù)器,然后使用輪詢方法將用戶的請求發(fā)送到這些服務(wù)器上。其流程如圖3所示。
為了應(yīng)對軟件定義網(wǎng)絡(luò)通常存在的可擴展性問題,還需要采用基于軟件定義網(wǎng)絡(luò)的流量采樣方法,對流量進行部分采樣并對數(shù)據(jù)流進行記錄,便于通過查詢流量采樣記錄決策最少連接的服務(wù)器路徑。其具體步驟如下。
步驟 1 檢查新數(shù)據(jù)分組是否已經(jīng)到達交換機并處于流量監(jiān)控操作模式下。
步驟 2 如果符合任何一個操作模式,則對數(shù)據(jù)分組的計數(shù)器進行更新,并將數(shù)據(jù)分組導(dǎo)向下一個目標路徑。
步驟 3 如果不符合,則查詢是否符合被采樣的規(guī)則,如果與其中的某個規(guī)則匹配,則將其引導(dǎo)至下一個路徑并同時發(fā)給控制器,且在記錄表中增加信息以對后續(xù)數(shù)據(jù)流進行采樣。

圖3 單個服務(wù)器實際負載統(tǒng)計方法
一般來說,通過采用OpenFlow控制器方式,可以將管理決策都發(fā)送至交換機來存儲和收集流量統(tǒng)計信息,并在每個交換機上以計數(shù)器形式存儲全部流信息的記錄。但現(xiàn)有 OpenFlow技術(shù)的TCAM條目數(shù)量和處理能力無法支持過大的流量統(tǒng)計記錄,因此在采集流量測量時實施流量采樣記錄,以達到獲得較細粒度的數(shù)據(jù)并降低OpenFlow控制器操作次數(shù)的目的。當交換機空閑或超時,系統(tǒng)就進行測量并實施流統(tǒng)計,其流程如圖4所示。
事實上,上述統(tǒng)計方式對于較大時間跨度的流量統(tǒng)計數(shù)據(jù)來說是非實時的。當需要在具有高度波動流量的動態(tài)環(huán)境中獲得準確的測量結(jié)果時,需要增加交換機端口自適應(yīng)函數(shù),即通過輪流監(jiān)聽TCP或UDP等端口,在源端口發(fā)出數(shù)據(jù)后,在某些流量超過閾值的目標端口,將其數(shù)據(jù)分組自適應(yīng)調(diào)整到其他流量較低的目標端口,可以避免由于源端口和目標端口沖突而增加的計算負擔。
為了評價上述方法的性能,在現(xiàn)有網(wǎng)絡(luò)環(huán)境中進行了評估與測試。實驗具體配置為:64臺服務(wù)器IBM-x3650M4-2U(2CPU,6核12線程Xeon E5-2620,48 GB內(nèi)存,2 TB硬盤)分別作為DataNode,操作系統(tǒng)為Ubuntu11.10及Windows7,均預(yù)裝FTP服務(wù)。將其中一臺服務(wù)器定義為主服務(wù)器并部署了內(nèi)網(wǎng)企業(yè)網(wǎng)站,網(wǎng)站的文本、圖像、視頻等數(shù)據(jù)資源分別存放在多個服務(wù)器上,通過改變訪問網(wǎng)站的訪問量來模擬負載均衡的效果。
服務(wù)器負載取決于負載指標,負載指標是衡量服務(wù)器負載狀態(tài)的特征值,用于描述服務(wù)器的忙閑程度,記錄服務(wù)器處理服務(wù)的能力,一般有CPU處理能力、CPU利用率、CPU就緒隊列長度、內(nèi)存、磁盤容量、網(wǎng)絡(luò)帶寬、當前連接數(shù)等[13]。本文選取有代表性的CPU利用率和網(wǎng)絡(luò)上行速度作為負載指標,通過不同的采樣率下的指標來比較一般負載均衡方法與無端口自適應(yīng)/有端口自適應(yīng)流量采樣負載均衡方法的效果。在24 h內(nèi)對該網(wǎng)絡(luò)環(huán)境中的性能進行統(tǒng)計,其結(jié)果如圖5和圖6所示。
從圖5可以看出,在CPU利用率最小值方面,提出的流量采樣負載均衡方法比一般的負載均衡方法存在一定優(yōu)勢,尤其是采樣率相對較高的情況下;而有端口自適應(yīng)流量采樣負載均衡方法在CPU利用率最大值這一指標上體現(xiàn)出的負載均衡程度存在明顯優(yōu)勢。

圖4 基于軟件定義網(wǎng)絡(luò)的流量采樣流程
圖6則顯示出,采樣負載均衡方法與一般的負載均衡方法相比,在采樣率較低時差異不大;隨著采樣率的增加,有端口自適應(yīng)流量采樣負載均衡方法比無端口自適應(yīng)流量采樣負載均衡方法和一般負載均衡方法在各項指標上都表現(xiàn)出網(wǎng)絡(luò)上行速度指標有增加的趨勢。

圖5 CPU利用率最小值和最大值比較

圖6 網(wǎng)絡(luò)上行速度最小值和最大值比較
提出了一種基于軟件定義網(wǎng)絡(luò)的分布式數(shù)據(jù)庫負載均衡解決方案,為了減少控制器的開銷和交換機的計算代價,提出了一種基于OpenFlow的受限流量采樣方法。實驗結(jié)果表明,與一般的負載均衡方案相比,本文提出的方法在降低計算代價和提高負載均衡效果上有一定優(yōu)勢。下一步將研究如何進一步提高檢索統(tǒng)計數(shù)據(jù)的精確性。
[1] ZHANG H, GUO X. SDN-based load balancing strategy for server cluster[C]//2014 IEEE 3rd International Conference on Cloud Computing and Intelligence Systems (CCIS), Nov 27-29,2014, Shenzhen, China. New Jersey: IEEE Jersey, 2014: 662-667.
[2] 張朝昆, 崔勇, 唐翯祎, 等. 軟件定義網(wǎng)絡(luò) (SDN) 研究進展[J].軟件學報, 2015, 26(1): 62-81. ZHANG C K, CUI Y, TANG H Y, et al. State-of-the-art survey on software-defined networking(SDN)[J]. Journal of Software, 2015, 26(1): 62-81.
[3] 劉同. 負載均衡技術(shù)在數(shù)據(jù)庫集群系統(tǒng)中的應(yīng)用與實現(xiàn)[D].長沙: 國防科學技術(shù)大學, 2009. LIU T. Application and realization of load balancing technology in database cluster system[D]. Changsha: National University of Defense Technology, 2009.
[4] DAS S K, SEN S K, JAYARAM R. A dynamic load balancing strategy for channel assignment using selective borrowing in cellular mobile environment[J]. Wireless Networks, 1997, 3(5): 333-347.
[5] DASGUPTA K, MANDAL B, DUTTA P, et al. A genetic algorithm based load balancing strategy for cloud computing [J]. Procedia Technology, 2013(10): 340-347.
[6] DAM S, MANDAL G, DASGUPTA K, et al. An ant colony based load balancing strategy in cloud computing [M]. Berlin: Springer International Publishing, 2014.
[7] MONDAL B, CHOUDHURY A. Simulated annealing (SA) based load balancing strategy for cloud computing[J]. International Journal of Computer Science and Information Technologies, 2015, 6(4): 3307-3312.
[8] IZAGIRRE A, MAKOWSKI A M. Light traffic behavior under the power-of-two load balancing strategy: the case of heterogeneous servers[J]. arXiv preprint arXiv:1701.06004, 2017.
[9] Load_balancing [EB/OL]. (2017-03-01)[2017-06-07]. https://en. wikipedia.org/wiki/Load_balancing.
[10] 王力, 趙季紅, 曲樺, 等. 軟件定義承載網(wǎng)中基于負載均衡的虛擬網(wǎng)絡(luò)資源分配算法[J]. 電信科學, 2015, 31(11): 32-38. WANG L, ZHAO J H, QU H, et al. Virtual network resource allocation algorithm based on load balance in carrier-SDN[J]. Telecommunications Science, 2015, 31(11): 32-38.
[11] LIU J, LAI Y, DIAO Z, et al. A trusted access method in software-defined network[J]. Simulation Modelling Practice and Theory, 2017(74): 28-45.
[12] TAHAEI H, SALLEH R, KHAN S, et al. A multi-objective software defined network traffic measurement[J]. Measurement, 2017(95): 317-327.
[13] 楊偉. 基于時間序列預(yù)測的 IP控制網(wǎng)關(guān)集群的設(shè)計與實現(xiàn)[D].蘇州: 蘇州大學, 2006. YANG W. Design and implementation of IP control gateway cluster based on time series prediction[D]. Suzhou: Soochow University, 2006.
A scalable load balancing strategy based on distributed server cluster
SUN Qiao1, DENG Buqiao1, WANG Zhiqiang2, PEI Xubin2
1. Beijing GuoDianTong Network Technology Co., Ltd., Beijing 100070, China 2. Information&Telecommunication Branch of State Grid Zhejiang Electric Power Company, Hangzhou 310007, China
A distributed database load balancing algorithm based on software defined networking was proposed, which separated the data, control and application to calculate the actual load of a single server in the server cluster. By querying the streams sampling record, the minimum number of server paths were determined, the request response time was reduced, the system throughput and fault tolerance were improved, and the full use of the purpose of server resources was achieved. The general load balancing technology was compared with the load balancing technology based on the software defined networking in the internal network of the distributed database experiment, the result shows that in the load state of the different server clusters, the average response time of the latter is smaller than that of the former, and can get better load balancing effect.
extensible load balancing strategy, software defined networking, adaptive stream sampling, distributed server cluster
s: Science and Technology Project of State Grid (No.SGBJDK00KJJS1500180), Science and Technology Project of State Grid Information& Telecommunication Group Co., Ltd. (No.SGITG-KJJSKF[2015]0010)
TN929.52
:A
10.11959/j.issn.1000-0801.2017264

孫喬(1978-),男,北京國電通網(wǎng)絡(luò)技術(shù)有限公司中心副總監(jiān),主要研究方向為實時庫及自主關(guān)系數(shù)據(jù)庫。

鄧卜僑(1985-),男,北京國電通網(wǎng)絡(luò)技術(shù)有限公司技術(shù)總監(jiān),主要從事關(guān)系數(shù)據(jù)庫及分布式關(guān)系數(shù)據(jù)庫研發(fā)工作。

王志強(1966-),男,國網(wǎng)浙江省電力信息通信分公司副總工程師,主要研究方向為電力信息新技術(shù)應(yīng)用。

裴旭斌(1973-),男,國網(wǎng)浙江省電力信息通信分公司數(shù)據(jù)庫運維專職,主要研究方向為數(shù)據(jù)庫應(yīng)用技術(shù)。
2017-06-07;
:2017-08-31
國家電網(wǎng)公司科技基金資助項目(No.SGBJDK00KJJS1500180);國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司科技基金資助項目(No.SGITG- KJ-JSKF[2015]0010)