《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于LVS的数据库集群负载均衡性能测试与分析
基于LVS的数据库集群负载均衡性能测试与分析
2017年微型机与应用第4期
王超,祝永志
曲阜师范大学 信息科学与工程学院,山东 日照 276800
摘要: Linux虚拟服务器(Linux Virtual Server,LVS)技术是一种广泛应用于企业集群中的负载均衡技术,目前关于LVS的研究主要是基于Web服务器集群负载均衡性能方面。在一些实际应用场景中,LVS可以直接与数据库集群相结合。将LVS与数据库集群结合,提出一种对LVS架构下数据库集群性能进行测试的方案,并利用HP LoadRunner对负载均衡算法的数据库集群进行负载测试实验,通过数据分析比较,得出LVS提供的算法中较适合数据库集群的调度算法。
Abstract:
Key words :

  王超,祝永志

  (曲阜师范大学 信息科学与工程学院,山东 日照 276800)

        摘要Linux虚拟服务器(Linux Virtual Server,LVS)技术是一种广泛应用于企业集群中的负载均衡技术,目前关于LVS的研究主要是基于Web服务器集群负载均衡性能方面。在一些实际应用场景中,LVS可以直接与数据库集群相结合。将LVS与数据库集群结合,提出一种对LVS架构下数据库集群性能进行测试的方案,并利用HP LoadRunner对负载均衡算法的数据库集群进行负载测试实验,通过数据分析比较,得出LVS提供的算法中较适合数据库集群的调度算法。

  关键词:Linux虚拟服务器;数据库集群;负载均衡;性能测试;算法分析

  中图分类号:TP3115文献标识码: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虚拟服务器的研究,将两者相结合,并在此基础上对二者结合的效果做出测试和分析。

001.jpg

  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所示的实验拓扑结构。

  

002.jpg

  根据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()函数调用此参数文件,用户参数列表的循环调用方式设置为UniqueOnce方式。对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)计算出响应时间均值。

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

  通过使用以上方式对原始数据计算,将计算结果汇总如表1所示。

004.jpg

  4.2数据分析

  根据表1中的测试试验数据绘制6种算法用户数目响应时间图,如图3、图4所示。

  

003.jpg

  设定数据中的用户响应时间为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]. (201102-08) [2016-06-25] http:// www. linuxvirtualserver.org/docs/scheduling.html.

  [7] 刘斌,徐精明,代素环,等.基于Linux虚拟服务器的负载均衡算法[J].计算机工程,2011,37(23):279281.

  [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/ VSDRouting.html.


此内容为AET网站原创,未经授权禁止转载。