LVS/DR、NGINX混合负载均衡集群技术应用研究

2017-04-13 06:54陈荣赏蓝秀锦
关键词:页面集群服务器

陈荣赏,蓝秀锦

(1.厦门理工学院计算机与信息工程学院,福建厦门361024;2.欧仕达听力(厦门)科技有限公司,福建厦门361000)

LVS/DR、NGINX混合负载均衡集群技术应用研究

陈荣赏1,蓝秀锦2

(1.厦门理工学院计算机与信息工程学院,福建厦门361024;2.欧仕达听力(厦门)科技有限公司,福建厦门361000)

为解决单一集群技术满足不了企业Web服务器集群应用需求,提出构建LVS/DR+NGINX集群混合应用模式.通过分析LVS、NGINX、HAPROXY、TOMCAT集群技术的优缺点,假设LVS/DR+NGINX集群混合模式解决单点故障、节点网络带宽瓶颈、并发性处理性能提高问题,通过对方案模式构建、测试,测试结果证明该模式实现Web服务器集群应用的高性能和高可靠性需求.

集群技术;LVS/DR+NGINX;WEB服务器集群;高性能;高可靠

2016年第38次《中国互联网络发展状况统计报告》显示,截至2016年6月,中国网民规模达7.10亿,中国网站总数为454万个.庞大的用户群体和复杂的系统应用要求服务器提供强大的运算能力;从用户角度,人们希望获得更加方便快捷的服务,对服务器的响应速度和可靠性也提出了更高的要求.很多热门的网站会吸引庞大的访问流量,这些热门站点每天要处理大量并发性访问请求,爆炸式的访问量增长使得建立更强的网络服务系统成为迫在眉睫的问题[1].面向Web应用的网络服务系统,对用户而言,系统就是一台性能更加强大的服务器.管理员通过增减服务器的数量同时采用集群技术做为一个统一的整体对外部提供服务,外部服务请求通过负载均衡技术分发给集群内的各个服务器共同承担,因此,多处理节点服务器集群的负载均衡成为长久以来的一大研究热点,它的好坏直接影响了集群向外提供服务能力的大小[2].

1 集群系统

群集是一组协同工作的服务实体.群集技术与研究方向目前已非常成熟,本文所探讨的集群是指Web服务器集群.Web集群主要是利用负载均衡技术将客户请求均衡分配到集群中的服务器节点,各服务器节点并行运算,从而提高整个系统的效率[3].负载均衡技术可以通过硬件实现,也可以通过一些专用软件来实现[4].常见Web集群系统如下:

1.1 LVS集群系统

LVS(Linux Virtual Server)即Linux虚拟服务器.LVS集群系统的中枢软件是IPVS,它安装在前端服务器上,并且在前端服务器上虚拟出一个IP地址,用户需要经过这个虚拟IP地址访问服务[5].LVS有三种模式实现负载均衡,分别是:VS/DR、VS/NAT、VS/TUN.LVS负载均衡是由负载均衡调度算法进行调度,调度算法有加权轮询、轮询、加权最少连接、最少连接、基于局部性的最少链接、带复制的基于局部性最少链接、源地址散列、目标地址散列、最少队列调度和最短期望延迟[2].LVS集群具有高可靠性,可拓展性和可操作性,能以低廉的成本实现较优性能的集群,但该集群软件不支持正则处理,所以不能做动静分离,当网站应用比较复杂的时候,LVS/DR+Keepalived就比较难以构建.

1.2 Nginx集群系统

Nginx是一个轻量级HTTP服务器,也是一个高性能的HTTP和反向代理.Nginx实现负载均衡的调度算法主要有轮询(默认)、weight(轮询权值)、ip_hash、fair(第三方)、url_hash(第三方).Nginx的负载均衡是一个基于应用及内容的七层交换负载均衡的实现,它因具备高稳定性、示例配置文件、较低的系统资源消耗和丰富多彩的功能集而被广泛使用.但Nginx也存在不能支持使用url来检测、只能够支持http和Email、Cookie的引导能力比较欠缺等缺点.

1.3 HAProxy集群

HAProxy是一种提供负载均衡、高可用性以及基于TCP(第四层)和HTTP(第七层)应用的代理软件. HAProxy的调度算法分为静态算法(static-rr、first)、动态算法(roundrobin、leastconn)、混合算法(source、uri、url-param、hdr()、rpd-cookie())[6].HAProxy比较适用负载比较大的Web站点,这些站点常常要保持七层处理或会话.HAProxy能够对Mysql进行负载均衡,而且可以对后端的MySQL节点进行检测跟负载均衡,不过当在后端的MySQL slaves数量大于10台的时候,性能就不如LVS.

1.4 Tomcat集群

Tomcat服务器是一个免费、开源的轻量级Web应用服务器,Tomcat自带Cluster方式,多个Tomcat间自动实时复制session信息以实现集群功能.Tomcat集群从逻辑架构可分为横向集群和纵向集群,横向集群即Tomcat实例运行在多台物理机上,其结构扩展了CPU、内存等处理能力;纵向集群即多个Tomcat实例运行在一台物理机上,其结构充分利用原有内存但CPU未得到扩展.

2 LVS/DR+NGINX负载均衡方案

2.1 Keepalived简介

Keepalived是实现layer3、4和7交换机制的软件.Keepalived主要用于是检测Web服务器的状况,假如有一台Web服务器宕机或故障,Keepalived会自动检测到,并把有故障的Web服务器从系统中自动剔除;当故障Web服务器恢复正常后,Keepalived自动把Web服务器再次加入到服务器群中.其主要用于应用服务器健康状态监测以及负载均衡主机和备用机之间失效备援的实现.

2.2 LVS+NGINX集群的体系架构

LVS集群系统将多台网络服务器通过负载均衡器汇集在一起[7].lvs采用同步请求转发的策略,同步转发是指lvs服务器接收到请求之后,立即重定向到后端服务器,由客户端直接和后端服务器建立连接.在LVS集群系统中,如果后端服务器出现故障则该次请求就失败,降低了系统可靠性.nginx采用反向代理异步传输模式,当客户端发出请求,请求不会立即转发到后端服务器,而是在保持连接的同时,发起相同内容的请求到后端服务器,由后端服务器处理完之后把数据返回到nginx上,nginx将数据流发到客户端.因此,集群较为庞大时,nginx节点极易成为带宽瓶颈.结合上述问题,在集群系统中,采用LVS作为前端负载均衡,LVS后端添加一层nginx,每个nginx后端连接多台应用服务器,就能有效避免LVS单点故障到请求失败以及nginx节点网络带宽瓶颈问题.

2.3 企业网络需求

企业通常要求现有运行的Web服务框架要能够轻易拓展,由于太复杂的设计容易降低开发效率,提高了前期投入和后期的维护成本,在出现故障或者突发事件的时候不能够轻易找到原因.其次Web服务系统还应满足用户服务请求的低消耗、快回应、高并发、高可靠性等需求.因此,本文提出使用keepalived、LVS/DR(第四层)跟nginx(第七层)相结合的方式实现数据转发[5].实验方案设计通过运用LVS/DR做前端负载均衡器,应用KEEPALIVED技术完成系统的高可用性,接着转发到nginx服务器完成动静分离以达到系统的高并发,实验测试结果证明该设计符合企业的应用需求.

2.3.1 LVS+NGINX集群体系架构拓扑图.LVS+NGINX集群体系架构拓扑如图1所示,用户访问VIP的时候,前端主LVS/ DR服务器通过加权轮询算法转发到nginx服务器,如果主服务器出现问题,则备LVS服务器会自动通过Keepalived变成master.nginx在通过反向代理转发给Web服务器(动静分离).处理完请求后返回nginx服务器,在直接返回给用户.各个服务器的ip地址如表1所示.

图1 LVS+NGINX集群体系架构拓扑图Fig.1 LVS+NGINX cluster architecture topology

表1 各个服务器的ip地址Tab.1 IP address of each server

2.3.2 LVS+NGINX负载均衡的搭建

1)配置LVS服务器、备份LVS服务器:安装ipvsadm、keepalived命令.修改keepalived.conf配置文件:定义vrrp实例;设置主LVS服务器为MASTER,从LVS服务器为BACKUP;设置MASTER与BACKUP负载均衡器之间同步检查的时间间隔;设置虚拟IP为172.16.67.30.其他关键信息如下:

2)nginx服务器配置:安装nginx及所需要的库pcre,zlib,openssl,popt.配置nginx.conf文件(关键信息): set_real_ip_from 172.16.67.31;set_real_ip_from 172.16.67.32;创建页面访问请求响应规则test.com配置文件:静态请求进入backend1,动态请求进入backenk2.

3 方案测试

3.1 高可用

主、备LVS服务器Keepalived都开启,由于优先级的关系,主LVS服务器担当master的角色.当用户访问静态页面时,返回backend1页面;访问动态页面时,返回backend2页面,如图2所示.

关掉主LVS的Keepalived服务,假设该服务器故障,则备用LVS服务器进入master角色.测试访问虚拟IP的静、动态页面都正常,说明主LVS的故障,并没有影响整个系统的运行.

关掉nginx1的nginx服务,假设nginx1服务器故障,则此时可以在LVS服务器剔除该台nginx服务器,如图3所示.测试访问虚拟IP的静、动态页面都正常,说明某台nginx服务器的故障,并不会影响整个系统的运行.

图2 页面访问Fig.2 Access web′s page

图3 剔除故障的nginx服务器Fig.3 Eliminating the fault of nginx server

重启nginx1的nginx服务,在LVS服务器自动加入该台服务器,如图4所示.

3.2 高并发

分别测试LVS、nginx服务器做为前端服务器以及直接访问后端服务器backend1的静态页面.网站性能压力测试的相关参数如表2所示.

网站性能压力测试数据如图5所示,通过对三种访问规格中的最大并发量、请求量及时间测试的比较,可以看出lvs适合高并发、高请求应用需求;nginx集群做静态前端作用不大,反而降低系统的性能,其主要做动静分离;单从逻辑分离上来说,nginx本身的并发能力也是很强大的.所以本文构建的LVS/DR+NGINX集群系统:使用LVS作为前端服务器满足高并发、高请求需求,使用Keepalived服务实现高可用需求,使用nginx做为后端服务器能够将请求动静分离,可以加快访问速率.

图4 自动加入nginx服务器Fig.4 Auto join nginx server

表2 性能压力测试参数Tab.2 Performance pressure test parameters

图5 网站性能压力测试结果Fig.5 Website performance stress test results

4 结语

本文提出了LVS/DR+NGINX集群混合模式方案,该方案有效解决单点故障、节点网络带宽瓶颈、并发性处理性能问题,通过对方案进行测试,测试结果证明该模式实现Web服务器集群应用的高性能和高可靠性需求.由于各种因素,本文构建的测试环境还有一些修正的地方,包括:可以多考虑一些影响系统性能的原因,这样可以全面反映服务器的负载状况;本文没有设想具体的服务类型,在生产环境中,不一样的服务类型可导致响应时间和所产生的负载不同;构建的混合式集群环境规模不大,假若条件允许,可以进行更大规模的构建,才能够得到更加确切的实验数据.

[1] 黄倩.web集群负载均衡系统的设计与实现[D].成都:电子科技大学,2014.

[2] 杨昌武.基于LVS集群负载均衡技术研究与应用[D].重庆:重庆邮电大学,2013.

[3] 路明怀.Linux服务器下多网卡负载均衡的研究与实现[J].计算机与信息技术,2006(6):24-26.

[4] 杜江,化洁玉.一种复合式的负载均衡方案[J].计算机光盘软件与应用,2013,12(8):270-272.

[5] CHIANG M L,LIN Y C,GUO L F.Design and implementation of an efficient web cluster with content-based request distribution and file caching [J].Journal of Systems and Software,2008,11:2044-2054.

[6] LAGAROS ND.An efficient dynamic load balancing algorihm[J].Computational Mechanics,2014(1):59-76.

[7] 么丽颖.一种增强型LVS集群的动态反馈均衡算法[J].哈尔滨师范大学自然科学学报,2011,27(4):57-59.

责任编辑:时 凌

Research on Application of LVS/DR and NGINX Mixed Load Balancing Cluster Technology

CHEN Rongshang1,LAN Xiujin2
(1.School of Computer&Information Engineering,Xiamen University of Technology,Xiamen 361024,China;2.AST Hearing(Xiamen)Technology Co.Ltd,Xiamen 361000,China)

In order to solve the problem that single cluster technology can not meet the application requirements of enterprise Web server cluster,a hybrid application model of LVS/DR+NGINX cluster is proposed.Through the analysis of advantages and disadvantages of LVS,NGINX,HAPROXY,TOMCAT cluster,he proposed LVS/DR+NGINX cluster mixed model can solve the single point of failure and network bandwidth bottlenecks and improve the processing performance of concurrency problems.The test results show that the Web application server cluster model can achieve high performance and high reliability requirements.

cluster technology;LVS/DR+NGINX;Web server cluster;high performance;high reliability

TP393

A

1008-8423(2017)01-0023-04

10.13501/j.cnki.42-1569/n.2017.03.006

2017-01-06.

厦门市科技计划项目(3502Z20133043).

陈荣赏(1982-),男,博士生,网络工程师,主要从事智能信息处理,网络安全的研究.

猜你喜欢
页面集群服务器
刷新生活的页面
答案
通信控制服务器(CCS)维护终端的设计与实现
海上小型无人机集群的反制装备需求与应对之策研究
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
中国服务器市场份额出炉
勤快又呆萌的集群机器人
得形忘意的服务器标准
计算机网络安全服务器入侵与防御