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