负载均衡集群之lvs使用

一、LVS简介:

LVS(Linux Virtual Server),全称:Linux虚拟服务器,一个开源的负载均衡软件,通过LVS提供的负载均衡技术和Linux操作系统实现一个高可用、高性能的服务器集群,具有良好的可靠性、可扩展性和可操作性,以低廉的价格可以实现最优的服务性能。

二、LVS体系架构:

使用LVS架设的服务器集群系统由三部分组成,最前端的负载均衡群(load balancer表示),中间的服务器群组层(用server array表示),最底端的数据共享存储层(用Shared Storage表示),LVS体系架构如图所示:

负载均衡层:位于整个集群系统的最前端,由一台或者多台负载调度器组成,LVS模块就安装在负载均衡器上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由器,通过这些路由表把用户的请求分发给服务器群组层的应用服务器上

服务器群组层:由一组实际运行应用服务的机器组成,RealServer可以是web服务,mail服务器,ftp服务器,dns服务器等,每个realserver通过高速的Lan或者分布在各地的wan相连接,在实际的应用中,DirectorServer可以同时兼任RealServer的角色

共享存储层:为所有RealServer提供共享存储空间和内容一致性的存储区域,在物理层上,一般由磁盘阵列设备组成,为了提供内容的一致性,一般可通过NFS共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Redhat的GFS、Oracle提供的OCFS2等文件系统

在整个LVS结构中可以看出,Director Server是整个LVS的核心, Director Server 的操作系统只能是Linux和FreeBSD(作为Director Server性能不好),RealServer支持所有的系统平台,如linux、Windows 、Solars、BSD等

三、LVS集群的特点:

IP负载均衡与负载调度算法:

1、IP负载均衡技术:

负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法,有基于客户端调度访问的方法,有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,其中执行效率最高的就是IP负载均衡技术

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS的核心软件,主要作用是,安装DirectorServer上,虚拟出一个IP地址,用户需要通过此IP地址才能访问服务,这个虚拟IP一般称为VIP,访问首先通过VIP到达负载调度器,然后由负载调度器从ReadServer中选择一个服务节点响应用户的请求。

当用户的请求到达负载调度器后,调度器是如何将请求发送到后端的RealServer的呢?而RealServer是如何返回数据给用户的呢?这些都是IPVS的重点技术,IPVS实现负载均衡的机制有三种:NAT、TUN、和DR

NAT(Network Address Translation):通过网络地址翻译技术实现虚拟服务器,当用户请求到达调度器后,调度器将请求报文的目标地址(虚拟IP地址)改写成选定的RealServer地址,通过报文的目标端口也改成选定的RealServer的相应端口,最后将报文请求发送到选定的RealServer,在服务端得到数据后,RealServer返回数据给用户时 ,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。

从上面可以看出,NAT模式负载,用户请求和响应报文都需要通过DirectorServer进行地址重写,当用户请求越来越多的时候,调度器的处理能力将达到瓶颈。

TUN(IP隧道技术):通过IP隧道技术实现虚拟服务器,连接调度和管理与NAT方式一样,只是报文转发方式不同,TUN方式中,调度器采用IP隧道技术将用户请求转发到某个RealServer,而这个RealServer将直接响应用户的请求,不再经过前端调度器,同时对RealServer的地域位置没有要求,它可以和DirectorServer位于同一网段,也可以是独立的一个网络,因此,在TUN中,调度器只处理用户的报文请求,系统吞吐量将大大提高。

DR(DirectRouting):通过直接路由技术实现虚拟服务器,它的连接调度和管理与NAT和TUN中的一样,但它的报文转发方法又有不同,DR通过改写请求报文的MAC地址,将请求发送到RealServer,而RealServer将响应直接返回给客户,避免TUN中的IP隧道开销,这种方式是三种负载调度机制中性能最好的,但是必须要求DirectorServer与RealServer都有一块网卡连接到同一物理网段。

2、负载调度算法:

上面提到,根据各个服务器的负载情况,负载调度器动态地选择一台RealServer响应用户请求,那么动态是如何实现呢?此时就需要用到负载均衡算法,IPVS实现了8中负载调度算法,这里详细讲述最常用的4种调度算法。

轮叫(Round Robin)调度:也叫1:1调度,调度器通过轮叫调度算法将外部用户的请求按顺序1:1的分配到集群中的每个RealServer上,这种算法平均的对待每一台RealServer,而不管实际的负载状况和连接状态

加权轮叫(Weighted Round Robin)调度:根据Real Server的不同处理能力来调度访问请求,可以对每台RealServer设置不同的调度权值,对于性能较好的RealServer可以设置较高的权值,性能较弱的设置较低的权值,这样可以保证处理能力强的服务器处理更多的访问量,充分合理的利用服务器资源,同时,调度器还可以自动查询RealServer的负载情况,并动态的调度其权值。

最少连接(Least Connections)调度:最少连接调度算法是将网络请求调度到已建立的连接数最少的服务器上,如果集群中系统的实际服务器具有相近的性能,采用”较少连接”调度算法可以较好的均衡负载

加权最少连接(Weighted Least Connections)调度:加权最少连接调度是最小连接调度的超集,每个服务节点可以用相应的权值表示其处理能力,系统管理员可以动态的调整相应的权值,默认权值为1,加权最小连接调度在分配新的连接请求时尽可能使服务节点的已建立连接数和其权值成正比。

四、LVS安装与使用:

IPVS官方网站地址:http://www.linuxvirtualserver.org/software/ipvs.html,有rpm包,本例子中通过yum方式安装,执行命令如下:

yum -y install ipvsadm

安装完成后,执行ipvsadm –help 如果出现帮助提示,表示安装成功

1、通过Keepalived搭建LVS高可用集群系统:

标签