基于OSPF等价路由的LVS集群负载均衡技术的研究
2018-04-10胡晓勤
◆鲜 伟 胡晓勤
基于OSPF等价路由的LVS集群负载均衡技术的研究
◆鲜 伟 胡晓勤
(四川大学计算机学院 四川 610000)
LVS(Linux Virtual Server)作为负载均衡软件目前已经普遍的用于各类企业信息化系统中。本文简要地介绍了LVS和OSPF等价路由,并针对大规模网络的环境提出了一种结合LVS与OSPF的解决方案。该方案实现了多台LVS All-active,可以用于解决目前常用的LVS主备模式下性能不足的问题。
LVS;OSPF;等价路由;负载均衡
0 引言
随着中国互联网的发展,各类电商企业为了吸引客户采取了各种的营销策略,例如定时抢购,而这对企业的网络系统带来了巨大挑战。目前LVS集群常部署在HA模式下,当面对海量的突发流量,LVS集群不堪重负而导致整体宕机。本文提出了一种LVS All active模式的的解决方案-基于OSPF等价路由的LVS集群负载均衡技术,从而解决上面所述的类似问题。
1 LVS的介绍
Linux虚拟服务器(Linux Virtual Server,LVS)是一个虚拟的服务器集群系统,用于实现负载平衡。项目在1998年5月由章文嵩成立,是中国国内最早出现的自由软件项目之一[1]。LVS是基于Linux内核框架netfilter开发的,在传输层实现连接请求动态分发来实现负载均衡,可将一组服务器组成一个高可用、高性能的虚拟服务器。
1.1 LVS在系统中的实现简介
LVS的重要组件包括两部分,第一个组件ipvs,位于linux内核层;另一个组件叫ipvsadm,位于应用层。应用层的程序通过调用ipvsadm实现对ipvs的控制和管理。LVS的核心部分作为单独的模块存在,可以动态加载。LVS根据用户要求的负载均衡算法,动态地载入对应的算法模块。
1.2 LVS工作原理
图1 LVS工作原理图
LVS 集群采用 IP 负载均衡技术,将用户请求按照一定策略分发到后端的 Server 上,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。在特定的场景下,整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序[2]。
如图1所示,前端一个称为负载均衡器的服务器,负责监听和接受客户端向VIP发出的请求,之后通过设定的调度算法,选出最佳的一个后端服务器,再将请求分发给该后端服务器。
LVS常用的负载均衡调度算法有轮询、加权轮询、最小连接数、加权最小连接数、基于局部性的最少连接、带复制的基于局部性最少连接、目标地址散列调度和源地址散列调度[3]。
LVS 属于一种软件负载均衡方式与硬件负载均衡方式比如F5 Big-IP LTM,不同之处在于LVS 没有 Node 和 Profile概念,而且LVS只提供 4 层的负载均衡,目前无法支持七层负载均衡。
2 OSPF的介绍
2.1 OSPF
OSPF(开放最短路径优先)协议属于内部网关协议,运行在一个自主系统内部。OSPF 是一种基于链路状态算法的路由选择协议,它可以解决RIP(路由信息协议)的一些局限性,例如:较小的路由范围、较长的路由收敛时间和不能反映网络特征的度量。而且,OSPF能处理更大的路由表来支持更多的路径[4]。故目前OSPF常胜任于大型局域网。
2.2 OSPF等价路由
OSPF默认使用4条负载均衡链路,最多可调整为支持8条等价链路负载均衡。当单条链路流量负载过高时,可以使用OSPF的等价路由负载均衡的特性,将流量分配到多条链路从而大幅增加链路带宽。
3 基于OSPF的LVS解决方案的提出
3.1 HA模式的LVS集群存在的弊端
目前各类网企业网络系统中,主流的集群架构是使用LVS+keeplive方案,即HA主备模式。这种解决方案是使用多台LVS服务器部署为主备模式,一台LVS作为主用进行实时负载均衡的连接调度,另外一台或多台LVS通过VRRP(Virtual Router Redundancy Protocol)协议,对主用LVS状态进行实时监控,一旦主LVS出现异常,VIP(虚拟IP)等资源将在数秒内切换至某台备用的LVS调度器,从而保证了系统的高可靠性和业务的连续性。
但是随着业务量的增长,随之网络流量出现了剧烈增长,HA主备模式的弊端不断显现,逐渐无法适应目前业务增长。具体地讲,其弊端主要表现为:HA模式在任一时刻仅一台LVS调度器提供调度分发服务,主用的单节点LVS负载过重无法支撑海量请求连接时,导致主节点LVS宕机,同时备节点LVS同样无法承受这些巨量的请求连接,从而将导致整个集群系统瘫痪。
3.2多活LVS集群解决方案的提出
为了应对目前互联网企业中海量的连接请求,可以采用LVS+OSPF集群模式,该方案可使多台LVS服务器同时active状态。
该方案利用开源的软路由软件Quagga[5],在负载均衡节点上安装此软件,并启用OSPF协议,与对接的三层交换机建立OSPF邻居,进而将VIP地址宣告进OSPF域。通过调整链路的cost值,三层交换机将学习到去往VIP的多条等价负载均衡链路。OSPF等价路由特性最多可以支持8台LVS实现ALL-Active的集群服务。
图2 LVS+OSPF集群模式
该技术具体工作流程如下:
如图2所示,每台LVS一个接口与三层交换机上连,另一个接口下连多台RS。三层交换机与LVS安装的软路由软件Quagga分别启用OSPF,并彼此建立OSPF邻接关系。每台LVS将各自的VIP宣告进OSPF域,最终三层交换机路由表将有多条通往VIP的等价路由。前端LVS与后端RS使用DR(directly routing)模式[6]。
当客户端向VIP发起一个TCP连接请求,数据包必将路由到三层交换机,三层交换机查询路由表,通往目的地址VIP有多条等价路径,通过对源IP地址、源端口、目的IP地址和目的端口进行hash,将TCP连接分配到集群中的某一台前端LVS上,LVS将请求分发到后端某一台后端Real server(RS),后端RS完成处理后将数据直接返回给用户,完成整个过程。
该解决方案的好处在于:首先,LVS可以自由横向扩展,最多扩展到8台前端LVS同时active;另外,不存在LVS备机,提高了设备利用率;最后,高可用性进一步提升,某台LVS宕机后,其他active接替其处理。
4 方案测试实验
为了验证该方案可行性和集群性能,将分别进行HA模式和多活LVS模式对比实验测试。本次实验中,将使用Microsoft Web Application Stress Tool(简称WAS),一种WEB压力测试工具。
实验环境,我们利用一台Dell PowerEdge 710服务器上进行测试,物理机采用ESXi 64位版本为6.5的系统,处理器为8颗Intel Xeon CPU E5620 @240GHZ处理,16GB内存。在ESXI中多个虚拟机,虚拟机中都使用Centos7.2系统,每个虚拟机使用1颗vCPU、2G内存。
分别部署HA模式和多活LVS模式,使用WAS分别对集群进行Web压力测试。测试结束后,WAS会产生一个report,包括对各项性能进行了详细分析,其中一个重要指标是TTLB(Time To First Byte),它反应了业务的平均响应时间。基于报告我们得到实验结果,如下图所示,图3显示了当连接数较小的时候,并发连接数在100到400时,多活LVS模式与HA模式在TTLB指标差别微弱。但是随着增加连接数,多活LVS模式的TTLB指标明显优于HA模式。这是由于多台LVS服务器同时分担了连接数的调度分发。
图3 LVS的HA模式与多活模式TTLB指标对比
5 结束语
本文首先对LVS和OSPF进行了简要介绍,进一步介绍了目前企业中常用的LVS HA模式的负载均衡技术,并分析了该技术的在目前移动互联网情况下的弊端,进而提出了基于OSPF的LVS集群解决方案-多活LVS集群模式。最后通过实验,验证了本文介绍的方案在性能方面的更加优越。
[1]wikipedia.https://en.wikipedia.org/wiki/Linux_ Virtual_Server.
[2]腾讯云. https://www.qcloud.com/community/ article/238341.
[3]ZhnagWS.LVSclusterLoaddispatch[EB/OL].[2016-03-10].http://www.linuxvirtualserver.org/zh/lvs4.html.
[4]杨岚兰,唐宁九.基于IPv6的OSPF技术及实现[D].四川大学, 2005.
[5]quagga. http://www.nongnu.org/quagga.
[6]章文崇山. http://www.linuxvirtualserver. org/zh/ lvs3.html.