基于linux的高可用负载均衡集群系统的应用
2013-08-28李伟卢捷马军
李伟,卢捷,马军
(1.河北联合大学信息工程学院,河北唐山 063009;2.唐山市交通运输局公路工程处,河北唐山 063009;3.河北联合大学网络中心,河北唐山 063009)
随着Internet技术的快速发展,网络服务器面对的访问数量快速增加。服务器作为数据存储与发布的中心,担负着流量控制、用户管理及内外网络转接等繁杂的任务,它的性能最为关键。如何提高网络服务器系统的高性能、高可靠性、负载均衡能力和良好扩展能力成为技术研究的重要方向。基于Linux的高可用集群技术提供了可行性参考依据和解决方案。
1 集群简介
集群(cluster)是由一组相互独立的、通过高速网络互联的计算机组成的一种并行或分布式的处理系统,这些单个的计算机系统称为集群的节点,它以单一系统的模式来管理,为用户提供高性能、高可靠性的服务。集群技术是一种通用的技术,其目的是为了解决单机运算能力的不足、I/O能力的不足,提高服务的可靠性、获得规模可扩展能力,降低整体方案的运行和维护成本。和传统的高性能计算机技术相比,集群技术可以利用各档次的服务器作为节点,系统造价低,可以实现很高的运算速度,完成大运算量的计算,具有较高的响应能力,以满足当今日益增长的信息服务的需求。
网络负载均衡集群系统构建于实际的服务器之上,用户看不到提供服务的实际服务器,而只能看见一台在集群中被称为负载均衡服务器的计算机,实际的服务器通过高速局域网或地理上分散的广域网连接,实际服务器的前端是负载均衡服务器,它将用户的请求调度到实际服务器进行处理。
2 LVS概述
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
2.1 LVS的体系结构
LVS集群模型的体系结构分为三个层次,最前端的负载均衡层,用Load Balancer表示,中间的服务器群组层,用Server Array表示,最底端的数据共享存储层,用Shared Storage表示。
Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。
Server Array层:由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。
Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Red hat的GFS文件系统,oracle提供的OCFS2文件系统等
2.2 负载均衡技术
LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求,当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR。
2.2.1 VS/NAT: 即(Virtual Server via Network Address Translation)
也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real Server。在服务器端得到数据后,Real Server返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
2.2.2 VS/TUN:即(Virtual Server via IP Tunneling)
也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server的地域位置没有要求,可以和Director Server位于同一个网段,也可以是独立的一个网络。因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。
2.2.3 VS/DR: 即(Virtual Server via Direct Routing)
也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。
3 LVS高可用负载均衡集群系统设计
3.1 集群系统结构
该系统采用LVS集群技术,体系结构如图1所示。两台负载均衡服务器互为备份,安装RealServer的集群系统的节点机与集群系统中各节点通过高速网络连接,保证充分的网络带宽,系统负载均衡调度采用直接路由VS/DR模式。
图1 高可用负载均衡集群系统结构图
3.2 集群系统配置
大部分配置工作集中在负载平衡服务器上,实际服务器只需作简单配置。大致步骤如下:
4 结束语
本文分析了linux虚拟服务器集群技术的体系结构、负载均衡技术以及负载调度算法,设计了基于LVS和Keepalived高可用负载均衡集群系统,设计了其体系结构和应用配置实例,提高软、硬件资源利用率,为集群系统的构建提供了较好的理论和实践参考依据。
[1]刘 斌,徐精明等.基于Linux虚拟服务器的负载均衡算法[J].计算机工程,2011,23:279-281.
[2]杨顺韬.基于LVS的高性能负载均衡集群系统的设计[J].广西民族大学学报2012(2):48-52.
[3]赵攀等.LVS集群技术在校园网中的研究与设计[J].四川理工学院学报2009(2):31-35.
[4]白戈力,徐超.LVS集群在DNS服务器上的应用与研究[J].四川理工学院学报,2012(2):193-195.
[5]许先斌,赵睿.基于LVS的视频服务器集群系统的研究与设计[J].微计算机应用,2005(4):422-424.
[6]郑 勇,杨 达等.一种分布式高性能集群邮件系统的设计与实现[J].计算机工程,2006(6):253-256.