王超,祝永志
(曲阜師范大學 信息科學與工程學院,山東 日照 276800)
摘要:Linux虛擬服務器(Linux Virtual Server,LVS)技術是一種廣泛應用于企業集群中的負載均衡技術,目前關于LVS的研究主要是基于Web服務器集群負載均衡性能方面。在一些實際應用場景中,LVS可以直接與數據庫集群相結合。將LVS與數據庫集群結合,提出一種對LVS架構下數據庫集群性能進行測試的方案,并利用HP LoadRunner對負載均衡算法的數據庫集群進行負載測試實驗,通過數據分析比較,得出LVS提供的算法中較適合數據庫集群的調度算法。
關鍵詞:Linux虛擬服務器;數據庫集群;負載均衡;性能測試;算法分析
中圖分類號:TP3115文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.04.004
引用格式:王超,祝永志.基于LVS的數據庫集群負載均衡性能測試與分析[J].微型機與應用,2017,36(4):10-13.
0引言
進入大數據時代,網絡中的數據規模呈現出爆炸式的增長模式,面對愈來愈復雜的數據服務需求,傳統的單點數據庫根本無法滿足要求,此時迫切需要一種具有高性能、高可用性優勢的技術來解決這一問題。數據庫集群的出現從根本上解決了復雜的數據服務需求問題。由于數據庫集群所具有的獨特優勢,使其得到愈來愈廣泛的應用。集群負載均衡是數據庫集群系統的關鍵技術,優秀的負載均衡技術能有效提高集群性能,提高集群硬件的利用率。
作為企業級負載均衡器的Linux虛擬服務器,由于其支持對TCP請求做負載均衡,因此LVS架構可以用于做數據庫集群的負載均衡。目前,對于LVS算法性能的研究多是基于Web服務器集群的,并有實驗證明了LVS架構與數據庫集群(MySQL Cluster)結合的技術可行性[1],但是并沒有分析比較適應數據庫集群的負載均衡算法,目前尚未找到最適合數據庫集群的負載均衡算法。
為了進一步提高實驗數據的準確性,在本文的測試過程中引入了IP Spoof和變量參數化技術,從而更好地提高數據的有效性。
1平臺介紹
1.1MySQL Cluster
MySQL Cluster是由SUN Micro System公司研發推出的,是將MySQL數據庫集群化的產品。MySQL Cluster支持運行在無共享結構(Share Nothing Architecture,SNA)環境中的集群,集群對硬件配置要求低,且多采用分布式設計[2]。相比于Oracle的分布式數據庫(Real Application Cluster,RAC)集群系統,MySQL Cluster具有搭建簡單、運營成本低等優勢,受到個人用戶和中小型企業的青睞。
1.2Linux虛擬服務器
作為一款開源的負載均衡軟件,Linux虛擬服務器的負載均衡架構已被廣泛應用于企業Web服務器集群系統中。
目前,LVS系統已經實現了3種架構模式和8種負載均衡算法。LVS擁有工作在網絡層上的IPVS和工作在應用層的KTCPVS內容請求分發技術[3]。作為輕量級的負載均衡軟件,負載均衡器本身消耗資源很少,能有效地實現請求的調度,Linux虛擬服務器作為服務器的負載均衡器結構如圖1所示。本文基于現有對于數據庫集群和Linux虛擬服務器的研究,將兩者相結合,并在此基礎上對二者結合的效果做出測試和分析。
1.3測試軟件HP LoadRunner
HP Loadrunner是一款比較成熟的商用工業級標準的測試工具,由于它可以用較少的硬件資源對成千上萬的用戶并發行為進行模擬,因此常被用來進行軟件測試,并對系統性能進行監測,如對Windows、Linux等操作系統的性能實時監測[4]。本文使用該軟件模擬用戶行為,對遠程集群發出SQL請求,用于測試負載均衡器對SQL請求的分發性能以及數據庫集群的綜合性能。
2測試原理
LVS負載均衡架構中包含三種基礎架構搭建模式:(1)VS/TUN模式(需要真實服務器支持IP tunneling協議)通過IP通道的方式實現請求均衡分發;(2)VS/NAT模式(負載均衡器存在的通信壓力有可能成為整個系統性能的瓶頸)通過網絡地址轉換實現任務交付;(3)VS/DR方式將處理后的結果直接交付給用戶,在通用網絡中此種模式響應信息能較快返回[5]。在本次測試中為了減少系統誤差對實驗結構的影響,更快實現結果返回,實驗架構采用VS/DR模式。
截止到目前,LVS負載均衡器已經實現了輪詢調度算法、加權輪詢調度算法、最小連接調度算法、加權最小連接算法、基于局部性的最少鏈接調度算法、帶復制的基于局部性最少鏈接調度算法、目標地址散列調度算法、源地址散列調度算法[6]共8種負載均衡調度算法。其中,由于基于局部的性最少鏈接調度算法和帶復制的局部性最少鏈接調度算法多在Cache集群中[7] 應用,因此本次測試未在數據庫集群中使用。
在MySQL Cluster中,通常使用NDB(Network Database)存儲引擎來實現數據集群的數據節點之間的整合,數據節點之間數據的同步主要是通過復制的方式來實現,在測試中通過該機制實現各個節點數據的一致性[2]。
IP欺騙(IP spoof),在HP Loadrunner中提供了IP Wizard軟件,用戶可用以調整用戶IP設置,通過設置IP欺騙可以允許一臺主機同時使用多個相異的IP地址。同時使用變量參數化方式保證測試用戶的互異性。Loadrunner在初始化用戶的階段即可根據用戶信息和IP的差異創建多個不同的TCP會話[8]。
設置負載測試生成節點,通過增加訪問用戶的數目,增加并發訪問壓力,分析每次性能測試的結果,本實驗使用并發測試的主要目的是根據數據分發情況測試LVS負載均衡算法的效果,并根據用戶響應時間關系判斷請求的處理效率,評估算法優劣。
3測試實驗
3.1實驗配置
由于完整的MySQL數據庫集群需具有管理節點(Master Node)、數據節點(Data Node)和SQL節點(SQL Node)三種節點[9],為了提高數據庫結構的完整性,本實驗將三種節點用于集群中。在該系統中的負載均衡器所在的服務器同時作為數據庫集群的管理節點,數據節點與SQL節點同主機作為真實服務器,配置集群中的各臺主機的IP地址如下:
LVS均衡器/管理節點真實IP:192.168.1.141
負載均衡器虛擬IP:192.168.1.250
DB Node 01 IP:192.168.1.142
DB Node 02 IP:192.168.1.143
DB Node 03 IP:192.168.1.144
為更明顯地測試并比較出負載均衡算法的實際使用效果,這里使用的數據庫節點的性能較低,實驗設置的真實服務器的CPU性能對等 ,節點的RAM分別安裝為512 MB、1 024 MB、2 048 MB,節點之間使用高速路由器相連接。根據MySQL數據庫集群搭建方法[10]搭建如圖2所示的實驗拓撲結構。
根據LVS配置規則[11]在負載均衡器上配置數據轉發規則,配置完成后在管理節點用ipvsadm-l命令查看內配置內容:
->RemoteAddress:Port Forward weight ActiveConn
InactiveConn
->192.168.1.142:mysql Route1 0
0
->192.168.1.143:mysql Route1 0
0
->192.168.1.144:mysql Route1 0
0
3.2LoadRunner配置
在HP LoadRunner的庫文件中創建包含60名用戶信息的參數文件username.dat,在腳本中使用lr_eval_string()函數調用此參數文件,用戶參數列表的循環調用方式設置為UniqueOnce方式。對MySQL數據庫驅動和函數文件進行導入,并編輯虛擬用戶的action腳本。
為確保用于測試的用戶獨立性和時間結果的有效性,測試時需要開啟軟件的IP spoof功能,每臺測試機通過使用LoadRunner提供的軟件組件IP Wizard添加IP地址到本地網卡,在Controller中開啟專家模式,并選擇啟用IP欺騙功能,在測試機上創建具有不同IP地址的LoadGenerator,并在Vuser中對虛擬用戶綁定IP地址。
3.3實驗過程
(1)在數據庫中創建60個互異數據庫用戶,并分別給用戶執行授權操作。
(2)在數據庫中創建共享分布式數據庫數據表create table tb01(val int) ENGINE = ndbcluster,執行SQL請求語句insert into tb01 values (44)。
(3)MySQL數據庫默認支持的最大的連接數為100,為避免實驗中受到最大連接數的影響,設置連接數為最大16 384。
(4)設置數據庫的連接超時時間為1 s,以保證測試用戶能有效訪問數據庫,完成SQL語句執行。
(5)在6臺計算機上同時運行虛擬用戶測試腳本,啟動虛擬用戶執行SQL語句,測試完成一種算法之后在負載均衡器上依次切換不同的負載均衡算法,統計用戶數目和響應時間數據。
4結果與分析
4.1實驗數據
在上述實驗環境中對LVS常用的負載均衡調度算法(輪詢調度算法(rr),加權輪詢調度算法(wrr),最小連接調度算法(lc),加權最小連接調度算法(wlc),源地址散列調度算法(sh),目的地址散列調度算法(dh))依次進行負載測試。由于測試生成的數據集數據較為離散,對測試結果以30 s為間隔生成的數據劃取連續的10個時間間隔(t0,t1)(t1,t2)…(t9,t10),去掉數據突增干擾點,求區間時間平均值分別為:ave1,ave2,…,ave10,根據關系式(1)計算出響應時間均值。
通過使用以上方式對原始數據計算,將計算結果匯總如表1所示。
4.2數據分析
根據表1中的測試試驗數據繪制6種算法用戶數目響應時間圖,如圖3、圖4所示。
設定數據中的用戶響應時間為resTime,通信時間為connTime,數據處理時間為exeTime,則時間量之間滿足關系式(2)。
resTime=connTime+exeTime(2)
根據此關系,數據庫集群的各個節點處于同一個通信集群中,其通信時間connTime可視為常量,節點之間的通信時間延穩定且值比較小,據此可推得用戶的查詢響應時間和數據處理時間呈正比關系。
參考表1中的數據,測試每種負載均衡算法,獲取到的數據滿足關系:Tlc>Tdh>Tsh>Trr>Twrr>Twlc
實驗數據顯示,用戶響應時間與用戶數量U呈線性增長趨勢,則用戶響應時間與用戶數量比滿足關系Tlc/U>Tdh/U…>Twlc/U,其算法處理效率ε滿足εlc>εdh…>εwlc。
根據以上分析可知,在排除通信對于響應時間的影響情況下,SQL請求的處理時間直接影響用戶響應時間。在非對稱集群環境中,集群中節點性能存在差異,輪詢調度算法和最小連接算法由于不能根據節點的實際性能調度,在實際使用中的效果不能完全發揮集群的性能。相比之下,加權最小連接調度算法和加權輪詢調度算法在實行調度時都能夠根據節點的實際硬件性能有效完成,其中加權最小連接調度算法的調度還能夠根據節點的實時連接數目有效調節。在用戶基數較少時,由于加權最小連接算法和加權輪詢調度算法會涉及權值計算,消耗一定的時間,而使用輪詢調度算法的調度直接交付SQL請求,執行效率較高;在用戶基數較大時,加權最小連接調度算法能根據服務器集群的實際性能進行調度,提高了集群的利用率。
5結論
本文提出了LVS架構下數據庫集群負載均衡算法性能的測試方案,通過HP LoadRunner軟件對LVS架構下的MySQL集群性能進行測試,分析用戶響應時間與用戶并發數的關系,驗證了LVS架構對數據庫集群的負載調度的有效性。根據對試驗數據的分析得出:在非對稱集群環境中多用戶并發的情況下,加權最小連接調度算法能有效提高調度效率,從而提升數據庫集群性能和節點硬件資源的利用率。
參考文獻
[1] 談書才,劉青青.基于Replication和LVS的MySQL分布式數據庫研究[J].中國科技信息,2015(10):61-62.
[2] 李紅艷.基于NDB引擎的MySQL Cluster的部署規則及測試[D].濟南:山東大學,2015.
[3] 邱建新.LVS集群技術在教學資源庫平臺中的應用[J].微型機與應用,2013,32(23):80-82.
[4] 熊婧,夏仲平,林軍,等.基于CPU/OS的信息系統性能測試方案研究[J].計算機工程,2015,41(12):82-85.
[5] Wei Qun, Xu Guangli, Li Yuling.Research on cluster and load balance based on Linux Virtual Server,ICICA 2010: International Conference on Information Computing and Applications[C].Berlin Heidelbeng: Springer,2010.
[6] Zhang Wensong. Job scheduling algorithms in Linux Virtual Server [EB/OL]. (201102-08) [2016-06-25] http:// www. linuxvirtualserver.org/docs/scheduling.html.
[7] 劉斌,徐精明,代素環,等.基于Linux虛擬服務器的負載均衡算法[J].計算機工程,2011,37(23):279281.
[8] 修佳鵬,楊正球,劉雪梅.軟件性能測試及工具應用[M]. 北京:清華大學出版社,2014.
[9] BARON S,PETER Z,VADIM T.High Performance MySQL [M].Sebastopol:O’Reilly Media Inc,2008.
[10] 唐漢明,翟振興,關寶軍,等.深入淺出MySQL[M].北京:人民郵電出版社,2014.
[11] Zhang Wensong.Virtual server via direct routing[EB/OL]. (2011-02-08)[2016-06-25]http://www.linuxvirtualserver.org/ VSDRouting.html.