《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LVS的數(shù)據(jù)庫集群負(fù)載均衡性能測試與分析
基于LVS的數(shù)據(jù)庫集群負(fù)載均衡性能測試與分析
2017年微型機(jī)與應(yīng)用第4期
王超,祝永志
曲阜師范大學(xué) 信息科學(xué)與工程學(xué)院,山東 日照 276800
摘要: Linux虛擬服務(wù)器(Linux Virtual Server,,LVS)技術(shù)是一種廣泛應(yīng)用于企業(yè)集群中的負(fù)載均衡技術(shù),,目前關(guān)于LVS的研究主要是基于Web服務(wù)器集群負(fù)載均衡性能方面。在一些實(shí)際應(yīng)用場景中,,LVS可以直接與數(shù)據(jù)庫集群相結(jié)合。將LVS與數(shù)據(jù)庫集群結(jié)合,提出一種對LVS架構(gòu)下數(shù)據(jù)庫集群性能進(jìn)行測試的方案,,并利用HP LoadRunner對負(fù)載均衡算法的數(shù)據(jù)庫集群進(jìn)行負(fù)載測試實(shí)驗(yàn),通過數(shù)據(jù)分析比較,,得出LVS提供的算法中較適合數(shù)據(jù)庫集群的調(diào)度算法,。
Abstract:
Key words :

  王超,祝永志

 ?。ㄇ穾煼洞髮W(xué) 信息科學(xué)與工程學(xué)院,,山東 日照 276800)

        摘要Linux虛擬服務(wù)器(Linux Virtual Server,LVS)技術(shù)是一種廣泛應(yīng)用于企業(yè)集群中的負(fù)載均衡技術(shù),,目前關(guān)于LVS的研究主要是基于Web服務(wù)器集群負(fù)載均衡性能方面,。在一些實(shí)際應(yīng)用場景中,LVS可以直接與數(shù)據(jù)庫集群相結(jié)合,。將LVS與數(shù)據(jù)庫集群結(jié)合,,提出一種對LVS架構(gòu)下數(shù)據(jù)庫集群性能進(jìn)行測試的方案,并利用HP LoadRunner對負(fù)載均衡算法的數(shù)據(jù)庫集群進(jìn)行負(fù)載測試實(shí)驗(yàn),,通過數(shù)據(jù)分析比較,,得出LVS提供的算法中較適合數(shù)據(jù)庫集群的調(diào)度算法,。

  關(guān)鍵詞:Linux虛擬服務(wù)器;數(shù)據(jù)庫集群,;負(fù)載均衡,;性能測試;算法分析

  中圖分類號:TP3115文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.04.004

  引用格式:王超,,祝永志.基于LVS的數(shù)據(jù)庫集群負(fù)載均衡性能測試與分析[J].微型機(jī)與應(yīng)用,,2017,36(4):10-13.

0引言

  進(jìn)入大數(shù)據(jù)時代,網(wǎng)絡(luò)中的數(shù)據(jù)規(guī)模呈現(xiàn)出爆炸式的增長模式,,面對愈來愈復(fù)雜的數(shù)據(jù)服務(wù)需求,,傳統(tǒng)的單點(diǎn)數(shù)據(jù)庫根本無法滿足要求,此時迫切需要一種具有高性能,、高可用性優(yōu)勢的技術(shù)來解決這一問題,。數(shù)據(jù)庫集群的出現(xiàn)從根本上解決了復(fù)雜的數(shù)據(jù)服務(wù)需求問題。由于數(shù)據(jù)庫集群所具有的獨(dú)特優(yōu)勢,,使其得到愈來愈廣泛的應(yīng)用,。集群負(fù)載均衡是數(shù)據(jù)庫集群系統(tǒng)的關(guān)鍵技術(shù),優(yōu)秀的負(fù)載均衡技術(shù)能有效提高集群性能,,提高集群硬件的利用率,。

  作為企業(yè)級負(fù)載均衡器的Linux虛擬服務(wù)器,由于其支持對TCP請求做負(fù)載均衡,,因此LVS架構(gòu)可以用于做數(shù)據(jù)庫集群的負(fù)載均衡,。目前,對于LVS算法性能的研究多是基于Web服務(wù)器集群的,,并有實(shí)驗(yàn)證明了LVS架構(gòu)與數(shù)據(jù)庫集群(MySQL Cluster)結(jié)合的技術(shù)可行性[1],,但是并沒有分析比較適應(yīng)數(shù)據(jù)庫集群的負(fù)載均衡算法,目前尚未找到最適合數(shù)據(jù)庫集群的負(fù)載均衡算法,。

  為了進(jìn)一步提高實(shí)驗(yàn)數(shù)據(jù)的準(zhǔn)確性,,在本文的測試過程中引入了IP Spoof和變量參數(shù)化技術(shù),從而更好地提高數(shù)據(jù)的有效性,。

1平臺介紹

  1.1MySQL Cluster

  MySQL Cluster是由SUN Micro System公司研發(fā)推出的,,是將MySQL數(shù)據(jù)庫集群化的產(chǎn)品。MySQL Cluster支持運(yùn)行在無共享結(jié)構(gòu)(Share Nothing Architecture,,SNA)環(huán)境中的集群,,集群對硬件配置要求低,且多采用分布式設(shè)計(jì)[2],。相比于Oracle的分布式數(shù)據(jù)庫(Real Application Cluster,,RAC)集群系統(tǒng),MySQL Cluster具有搭建簡單,、運(yùn)營成本低等優(yōu)勢,,受到個人用戶和中小型企業(yè)的青睞,。

  1.2Linux虛擬服務(wù)器

  作為一款開源的負(fù)載均衡軟件,Linux虛擬服務(wù)器的負(fù)載均衡架構(gòu)已被廣泛應(yīng)用于企業(yè)Web服務(wù)器集群系統(tǒng)中,。

  目前,,LVS系統(tǒng)已經(jīng)實(shí)現(xiàn)了3種架構(gòu)模式和8種負(fù)載均衡算法。LVS擁有工作在網(wǎng)絡(luò)層上的IPVS和工作在應(yīng)用層的KTCPVS內(nèi)容請求分發(fā)技術(shù)[3],。作為輕量級的負(fù)載均衡軟件,,負(fù)載均衡器本身消耗資源很少,能有效地實(shí)現(xiàn)請求的調(diào)度,,Linux虛擬服務(wù)器作為服務(wù)器的負(fù)載均衡器結(jié)構(gòu)如圖1所示,。本文基于現(xiàn)有對于數(shù)據(jù)庫集群和Linux虛擬服務(wù)器的研究,將兩者相結(jié)合,,并在此基礎(chǔ)上對二者結(jié)合的效果做出測試和分析,。

001.jpg

  1.3測試軟件HP LoadRunner

  HP Loadrunner是一款比較成熟的商用工業(yè)級標(biāo)準(zhǔn)的測試工具,由于它可以用較少的硬件資源對成千上萬的用戶并發(fā)行為進(jìn)行模擬,,因此常被用來進(jìn)行軟件測試,,并對系統(tǒng)性能進(jìn)行監(jiān)測,如對Windows,、Linux等操作系統(tǒng)的性能實(shí)時監(jiān)測[4],。本文使用該軟件模擬用戶行為,對遠(yuǎn)程集群發(fā)出SQL請求,,用于測試負(fù)載均衡器對SQL請求的分發(fā)性能以及數(shù)據(jù)庫集群的綜合性能,。

2測試原理

  LVS負(fù)載均衡架構(gòu)中包含三種基礎(chǔ)架構(gòu)搭建模式:(1)VS/TUN模式(需要真實(shí)服務(wù)器支持IP tunneling協(xié)議)通過IP通道的方式實(shí)現(xiàn)請求均衡分發(fā);(2)VS/NAT模式(負(fù)載均衡器存在的通信壓力有可能成為整個系統(tǒng)性能的瓶頸)通過網(wǎng)絡(luò)地址轉(zhuǎn)換實(shí)現(xiàn)任務(wù)交付,;(3)VS/DR方式將處理后的結(jié)果直接交付給用戶,在通用網(wǎng)絡(luò)中此種模式響應(yīng)信息能較快返回[5]。在本次測試中為了減少系統(tǒng)誤差對實(shí)驗(yàn)結(jié)構(gòu)的影響,,更快實(shí)現(xiàn)結(jié)果返回,,實(shí)驗(yàn)架構(gòu)采用VS/DR模式。

  截止到目前,,LVS負(fù)載均衡器已經(jīng)實(shí)現(xiàn)了輪詢調(diào)度算法,、加權(quán)輪詢調(diào)度算法、最小連接調(diào)度算法,、加權(quán)最小連接算法,、基于局部性的最少鏈接調(diào)度算法、帶復(fù)制的基于局部性最少鏈接調(diào)度算法,、目標(biāo)地址散列調(diào)度算法,、源地址散列調(diào)度算法[6]共8種負(fù)載均衡調(diào)度算法。其中,,由于基于局部的性最少鏈接調(diào)度算法和帶復(fù)制的局部性最少鏈接調(diào)度算法多在Cache集群中[7] 應(yīng)用,,因此本次測試未在數(shù)據(jù)庫集群中使用,。

  在MySQL Cluster中,通常使用NDB(Network Database)存儲引擎來實(shí)現(xiàn)數(shù)據(jù)集群的數(shù)據(jù)節(jié)點(diǎn)之間的整合,,數(shù)據(jù)節(jié)點(diǎn)之間數(shù)據(jù)的同步主要是通過復(fù)制的方式來實(shí)現(xiàn),在測試中通過該機(jī)制實(shí)現(xiàn)各個節(jié)點(diǎn)數(shù)據(jù)的一致性[2],。

  IP欺騙(IP spoof),在HP Loadrunner中提供了IP Wizard軟件,,用戶可用以調(diào)整用戶IP設(shè)置,,通過設(shè)置IP欺騙可以允許一臺主機(jī)同時使用多個相異的IP地址。同時使用變量參數(shù)化方式保證測試用戶的互異性,。Loadrunner在初始化用戶的階段即可根據(jù)用戶信息和IP的差異創(chuàng)建多個不同的TCP會話[8],。

  設(shè)置負(fù)載測試生成節(jié)點(diǎn),通過增加訪問用戶的數(shù)目,,增加并發(fā)訪問壓力,,分析每次性能測試的結(jié)果,本實(shí)驗(yàn)使用并發(fā)測試的主要目的是根據(jù)數(shù)據(jù)分發(fā)情況測試LVS負(fù)載均衡算法的效果,,并根據(jù)用戶響應(yīng)時間關(guān)系判斷請求的處理效率,,評估算法優(yōu)劣。

3測試實(shí)驗(yàn)

  3.1實(shí)驗(yàn)配置

  由于完整的MySQL數(shù)據(jù)庫集群需具有管理節(jié)點(diǎn)(Master Node),、數(shù)據(jù)節(jié)點(diǎn)(Data Node)和SQL節(jié)點(diǎn)(SQL Node)三種節(jié)點(diǎn)[9],,為了提高數(shù)據(jù)庫結(jié)構(gòu)的完整性,本實(shí)驗(yàn)將三種節(jié)點(diǎn)用于集群中,。在該系統(tǒng)中的負(fù)載均衡器所在的服務(wù)器同時作為數(shù)據(jù)庫集群的管理節(jié)點(diǎn),,數(shù)據(jù)節(jié)點(diǎn)與SQL節(jié)點(diǎn)同主機(jī)作為真實(shí)服務(wù)器,配置集群中的各臺主機(jī)的IP地址如下:

  LVS均衡器/管理節(jié)點(diǎn)真實(shí)IP:192.168.1.141

  負(fù)載均衡器虛擬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

  為更明顯地測試并比較出負(fù)載均衡算法的實(shí)際使用效果,,這里使用的數(shù)據(jù)庫節(jié)點(diǎn)的性能較低,,實(shí)驗(yàn)設(shè)置的真實(shí)服務(wù)器的CPU性能對等 ,節(jié)點(diǎn)的RAM分別安裝為512 MB、1 024 MB,、2 048 MB,,節(jié)點(diǎn)之間使用高速路由器相連接。根據(jù)MySQL數(shù)據(jù)庫集群搭建方法[10]搭建如圖2所示的實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu),。

  

002.jpg

  根據(jù)LVS配置規(guī)則[11]在負(fù)載均衡器上配置數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則,配置完成后在管理節(jié)點(diǎn)用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)用方式設(shè)置為UniqueOnce方式,。對MySQL數(shù)據(jù)庫驅(qū)動和函數(shù)文件進(jìn)行導(dǎo)入,,并編輯虛擬用戶的action腳本。

  為確保用于測試的用戶獨(dú)立性和時間結(jié)果的有效性,,測試時需要開啟軟件的IP spoof功能,,每臺測試機(jī)通過使用LoadRunner提供的軟件組件IP Wizard添加IP地址到本地網(wǎng)卡,在Controller中開啟專家模式,,并選擇啟用IP欺騙功能,,在測試機(jī)上創(chuàng)建具有不同IP地址的LoadGenerator,,并在Vuser中對虛擬用戶綁定IP地址。

  3.3實(shí)驗(yàn)過程

 ?。?)在數(shù)據(jù)庫中創(chuàng)建60個互異數(shù)據(jù)庫用戶,,并分別給用戶執(zhí)行授權(quán)操作。

 ?。?)在數(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ù)庫默認(rèn)支持的最大的連接數(shù)為100,,為避免實(shí)驗(yàn)中受到最大連接數(shù)的影響,設(shè)置連接數(shù)為最大16 384,。

 ?。?)設(shè)置數(shù)據(jù)庫的連接超時時間為1 s,以保證測試用戶能有效訪問數(shù)據(jù)庫,,完成SQL語句執(zhí)行,。

  (5)在6臺計(jì)算機(jī)上同時運(yùn)行虛擬用戶測試腳本,,啟動虛擬用戶執(zhí)行SQL語句,,測試完成一種算法之后在負(fù)載均衡器上依次切換不同的負(fù)載均衡算法,統(tǒng)計(jì)用戶數(shù)目和響應(yīng)時間數(shù)據(jù),。

4結(jié)果與分析

  4.1實(shí)驗(yàn)數(shù)據(jù)

  在上述實(shí)驗(yàn)環(huán)境中對LVS常用的負(fù)載均衡調(diào)度算法(輪詢調(diào)度算法(rr),,加權(quán)輪詢調(diào)度算法(wrr),最小連接調(diào)度算法(lc),,加權(quán)最小連接調(diào)度算法(wlc),,源地址散列調(diào)度算法(sh),目的地址散列調(diào)度算法(dh))依次進(jìn)行負(fù)載測試,。由于測試生成的數(shù)據(jù)集數(shù)據(jù)較為離散,,對測試結(jié)果以30 s為間隔生成的數(shù)據(jù)劃取連續(xù)的10個時間間隔(t0,t1)(t1,t2)…(t9,t10),去掉數(shù)據(jù)突增干擾點(diǎn),,求區(qū)間時間平均值分別為:ave1,ave2,…,,ave10,,根據(jù)關(guān)系式(1)計(jì)算出響應(yīng)時間均值。

  {C``8P9]BHU6GY3)~~UUB2B.png

  通過使用以上方式對原始數(shù)據(jù)計(jì)算,,將計(jì)算結(jié)果匯總?cè)绫?所示,。

004.jpg

  4.2數(shù)據(jù)分析

  根據(jù)表1中的測試試驗(yàn)數(shù)據(jù)繪制6種算法用戶數(shù)目響應(yīng)時間圖,如圖3,、圖4所示,。

  

003.jpg

  設(shè)定數(shù)據(jù)中的用戶響應(yīng)時間為resTime,,通信時間為connTime,數(shù)據(jù)處理時間為exeTime,則時間量之間滿足關(guān)系式(2),。

  resTime=connTime+exeTime(2)

  根據(jù)此關(guān)系,,數(shù)據(jù)庫集群的各個節(jié)點(diǎn)處于同一個通信集群中,其通信時間connTime可視為常量,,節(jié)點(diǎn)之間的通信時間延穩(wěn)定且值比較小,,據(jù)此可推得用戶的查詢響應(yīng)時間和數(shù)據(jù)處理時間呈正比關(guān)系。

  參考表1中的數(shù)據(jù),,測試每種負(fù)載均衡算法,,獲取到的數(shù)據(jù)滿足關(guān)系:Tlc>Tdh>Tsh>Trr>Twrr>Twlc

  實(shí)驗(yàn)數(shù)據(jù)顯示,用戶響應(yīng)時間與用戶數(shù)量U呈線性增長趨勢,,則用戶響應(yīng)時間與用戶數(shù)量比滿足關(guān)系Tlc/U>Tdh/U…>Twlc/U,,其算法處理效率ε滿足εlc>εdh…>εwlc。

  根據(jù)以上分析可知,,在排除通信對于響應(yīng)時間的影響情況下,,SQL請求的處理時間直接影響用戶響應(yīng)時間。在非對稱集群環(huán)境中,,集群中節(jié)點(diǎn)性能存在差異,,輪詢調(diào)度算法和最小連接算法由于不能根據(jù)節(jié)點(diǎn)的實(shí)際性能調(diào)度,在實(shí)際使用中的效果不能完全發(fā)揮集群的性能,。相比之下,,加權(quán)最小連接調(diào)度算法和加權(quán)輪詢調(diào)度算法在實(shí)行調(diào)度時都能夠根據(jù)節(jié)點(diǎn)的實(shí)際硬件性能有效完成,其中加權(quán)最小連接調(diào)度算法的調(diào)度還能夠根據(jù)節(jié)點(diǎn)的實(shí)時連接數(shù)目有效調(diào)節(jié),。在用戶基數(shù)較少時,,由于加權(quán)最小連接算法和加權(quán)輪詢調(diào)度算法會涉及權(quán)值計(jì)算,消耗一定的時間,,而使用輪詢調(diào)度算法的調(diào)度直接交付SQL請求,,執(zhí)行效率較高;在用戶基數(shù)較大時,,加權(quán)最小連接調(diào)度算法能根據(jù)服務(wù)器集群的實(shí)際性能進(jìn)行調(diào)度,,提高了集群的利用率。

5結(jié)論

  本文提出了LVS架構(gòu)下數(shù)據(jù)庫集群負(fù)載均衡算法性能的測試方案,,通過HP LoadRunner軟件對LVS架構(gòu)下的MySQL集群性能進(jìn)行測試,,分析用戶響應(yīng)時間與用戶并發(fā)數(shù)的關(guān)系,驗(yàn)證了LVS架構(gòu)對數(shù)據(jù)庫集群的負(fù)載調(diào)度的有效性,。根據(jù)對試驗(yàn)數(shù)據(jù)的分析得出:在非對稱集群環(huán)境中多用戶并發(fā)的情況下,,加權(quán)最小連接調(diào)度算法能有效提高調(diào)度效率,從而提升數(shù)據(jù)庫集群性能和節(jié)點(diǎn)硬件資源的利用率。

參考文獻(xiàn)

 ?。?] 談書才,,劉青青.基于Replication和LVS的MySQL分布式數(shù)據(jù)庫研究[J].中國科技信息,2015(10):61-62.

  [2] 李紅艷.基于NDB引擎的MySQL Cluster的部署規(guī)則及測試[D].濟(jì)南:山東大學(xué),2015.

 ?。?] 邱建新.LVS集群技術(shù)在教學(xué)資源庫平臺中的應(yīng)用[J].微型機(jī)與應(yīng)用,2013,32(23):80-82.

 ?。?] 熊婧,夏仲平,,林軍,,等.基于CPU/OS的信息系統(tǒng)性能測試方案研究[J].計(jì)算機(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.

 ?。?] Zhang Wensong. Job scheduling algorithms in Linux Virtual Server [EB/OL]. (201102-08) [2016-06-25] http:// www. linuxvirtualserver.org/docs/scheduling.html.

 ?。?] 劉斌,徐精明,,代素環(huán),,等.基于Linux虛擬服務(wù)器的負(fù)載均衡算法[J].計(jì)算機(jī)工程,2011,37(23):279281.

  [8] 修佳鵬,,楊正球,,劉雪梅.軟件性能測試及工具應(yīng)用[M]. 北京:清華大學(xué)出版社,2014.

  [9] BARON S,PETER Z,VADIM T.High Performance MySQL [M].Sebastopol:O’Reilly Media Inc,2008.

 ?。?0] 唐漢明,,翟振興,關(guān)寶軍,,等.深入淺出MySQL[M].北京:人民郵電出版社,,2014.

  [11] Zhang Wensong.Virtual server via direct routing[EB/OL]. (2011-02-08)[2016-06-25]http://www.linuxvirtualserver.org/ VSDRouting.html.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。