《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LVS的數(shù)據(jù)庫(kù)集群負(fù)載均衡性能測(cè)試與分析
基于LVS的數(shù)據(jù)庫(kù)集群負(fù)載均衡性能測(cè)試與分析
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)用場(chǎng)景中,LVS可以直接與數(shù)據(jù)庫(kù)集群相結(jié)合。將LVS與數(shù)據(jù)庫(kù)集群結(jié)合,提出一種對(duì)LVS架構(gòu)下數(shù)據(jù)庫(kù)集群性能進(jìn)行測(cè)試的方案,并利用HP LoadRunner對(duì)負(fù)載均衡算法的數(shù)據(jù)庫(kù)集群進(jìn)行負(fù)載測(cè)試實(shí)驗(yàn),通過(guò)數(shù)據(jù)分析比較,得出LVS提供的算法中較適合數(shù)據(jù)庫(kù)集群的調(diào)度算法。
Abstract:
Key words :

  王超,祝永志

  (曲阜師范大學(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)用場(chǎng)景中,LVS可以直接與數(shù)據(jù)庫(kù)集群相結(jié)合。將LVS與數(shù)據(jù)庫(kù)集群結(jié)合,提出一種對(duì)LVS架構(gòu)下數(shù)據(jù)庫(kù)集群性能進(jìn)行測(cè)試的方案,并利用HP LoadRunner對(duì)負(fù)載均衡算法的數(shù)據(jù)庫(kù)集群進(jìn)行負(fù)載測(cè)試實(shí)驗(yàn),通過(guò)數(shù)據(jù)分析比較,得出LVS提供的算法中較適合數(shù)據(jù)庫(kù)集群的調(diào)度算法。

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

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

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

0引言

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

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

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

1平臺(tái)介紹

  1.1MySQL Cluster

  MySQL Cluster是由SUN Micro System公司研發(fā)推出的,是將MySQL數(shù)據(jù)庫(kù)集群化的產(chǎn)品。MySQL Cluster支持運(yùn)行在無(wú)共享結(jié)構(gòu)(Share Nothing Architecture,SNA)環(huán)境中的集群,集群對(duì)硬件配置要求低,且多采用分布式設(shè)計(jì)[2]。相比于Oracle的分布式數(shù)據(jù)庫(kù)(Real Application Cluster,RAC)集群系統(tǒng),MySQL Cluster具有搭建簡(jiǎn)單、運(yùn)營(yíng)成本低等優(yōu)勢(shì),受到個(gè)人用戶和中小型企業(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)容請(qǐng)求分發(fā)技術(shù)[3]。作為輕量級(jí)的負(fù)載均衡軟件,負(fù)載均衡器本身消耗資源很少,能有效地實(shí)現(xiàn)請(qǐng)求的調(diào)度,Linux虛擬服務(wù)器作為服務(wù)器的負(fù)載均衡器結(jié)構(gòu)如圖1所示。本文基于現(xiàn)有對(duì)于數(shù)據(jù)庫(kù)集群和Linux虛擬服務(wù)器的研究,將兩者相結(jié)合,并在此基礎(chǔ)上對(duì)二者結(jié)合的效果做出測(cè)試和分析。

001.jpg

  1.3測(cè)試軟件HP LoadRunner

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

2測(cè)試原理

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

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

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

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

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

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

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

  為更明顯地測(cè)試并比較出負(fù)載均衡算法的實(shí)際使用效果,這里使用的數(shù)據(jù)庫(kù)節(jié)點(diǎn)的性能較低,實(shí)驗(yàn)設(shè)置的真實(shí)服務(wù)器的CPU性能對(duì)等 ,節(jié)點(diǎn)的RAM分別安裝為512 MB、1 024 MB、2 048 MB,節(jié)點(diǎn)之間使用高速路由器相連接。根據(jù)MySQL數(shù)據(jù)庫(kù)集群搭建方法[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的庫(kù)文件中創(chuàng)建包含60名用戶信息的參數(shù)文件username.dat,在腳本中使用lr_eval_string()函數(shù)調(diào)用此參數(shù)文件,用戶參數(shù)列表的循環(huán)調(diào)用方式設(shè)置為UniqueOnce方式。對(duì)MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)和函數(shù)文件進(jìn)行導(dǎo)入,并編輯虛擬用戶的action腳本。

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

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

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

  (2)在數(shù)據(jù)庫(kù)中創(chuàng)建共享分布式數(shù)據(jù)庫(kù)數(shù)據(jù)表create table tb01(val int) ENGINE = ndbcluster,執(zhí)行SQL請(qǐng)求語(yǔ)句insert into tb01 values (44)。

 ?。?)MySQL數(shù)據(jù)庫(kù)默認(rèn)支持的最大的連接數(shù)為100,為避免實(shí)驗(yàn)中受到最大連接數(shù)的影響,設(shè)置連接數(shù)為最大16 384。

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

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

4結(jié)果與分析

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

  在上述實(shí)驗(yàn)環(huán)境中對(duì)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ù)載測(cè)試。由于測(cè)試生成的數(shù)據(jù)集數(shù)據(jù)較為離散,對(duì)測(cè)試結(jié)果以30 s為間隔生成的數(shù)據(jù)劃取連續(xù)的10個(gè)時(shí)間間隔(t0,t1)(t1,t2)…(t9,t10),去掉數(shù)據(jù)突增干擾點(diǎn),求區(qū)間時(shí)間平均值分別為:ave1,ave2,…,ave10,根據(jù)關(guān)系式(1)計(jì)算出響應(yīng)時(shí)間均值。

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

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

004.jpg

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

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

  

003.jpg

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

  resTime=connTime+exeTime(2)

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

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

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

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

5結(jié)論

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

參考文獻(xiàn)

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

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

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

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

  [6] 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] 修佳鵬,楊正球,劉雪梅.軟件性能測(cè)試及工具應(yīng)用[M]. 北京:清華大學(xué)出版社,2014.

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

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

 ?。?1] 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)載。