天天看点

LVS(DR)+Keepalive负载均衡安装部署

LVS中文站点 http://zh.linuxvirtualserver.org/

ipvs和keepalived的区别:

一、 LVS简介

LVS: Linux Virtual Server的缩写,意思是Linux虚拟服务器,是一个虚拟的服务器集群系统。

LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡

宗旨:

  使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.

  很好的可伸缩性(Scalability)

  很好的可靠性(Reliability)

  很好的可管理性(Manageability)

二、技术原理:

LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。

当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。RS再将用户请求结果返回给用户。同请求包一样,应答包的返回方式也与包转发策略有关。

LVS集群采用“IP负载均衡技术”和“基于内容请求分发技术”。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。 

LVS(DR)+Keepalive负载均衡安装部署

LVS集群采用三层结构,其主要组成部分为:

三、LVS集群的特点

1、IP负载均衡技术

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

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,详述如下

 a) VS/NAT: 即(Virtual Server via Network Address Translation)

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

   可以看出,在NAT方式下,用户请求和响应报文都必须经过Director Server地址重写,当用户请求越来越多时,调度器的处理能力将称为瓶颈。

 b)VS/TUN :即(Virtual Server via IP Tunneling)

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

 c)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都有一块网卡连在同一物理网段上。

2、负载调度算法

  上面我们谈到,负载调度器是根据各个服务器的负载情况,动态地选择一台Real Server响应用户请求,那么动态选择是如何实现呢,其实也就是我们这里要说的负载调度算法,根据不同的网络服务需求和服务器配置,IPVS实现了如下八种负载调度算法,这里我们详细讲述最常用的四种调度算法,剩余的四种调度算法请参考其它资料。

 a)RR 轮询调度(Round Robin)

   “轮询”调度也叫1:1调度,调度器通过“轮询”调度算法将外部用户请求按顺序1:1的分配到集群中的每个Real Server上,这种算法平等地对待每一台Real Server,而不管服务器上实际的负载状况和连接状态。 

 b)WRR 加权轮询调度(Weighted Round Robin) 

   “加权轮询”调度算法是根据Real Server的不同处理能力来调度访问请求。可以对每台Real Server设置不同的调度权值,对于性能相对较好的Real Server可以设置较高的权值,而对于处理能力较弱的Real Server,可以设置较低的权值,这样保证了处理能力强的服务器处理更多的访问流量。充分合理的利用了服务器资源。同时,调度器还可以自动查询Real Server的负载情况,并动态地调整其权值。 

 c)LC 最少链接调度(Least Connections) 

   “最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。 

 d)WLC 加权最少链接调度(Weighted Least Connections) 

   “加权最少链接调度”是“最少连接调度”的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为1,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。

 e)WRR 加权轮询 (Weighted round-robin):给每台Real Server分配一个权重/位列,权重越大,分到的请求数越多。

 f)DH 目标散列 (Destination hashing):来自于同一个IP地址的请求都被重定向到同一台Real Server上(保证目标地址不变)

 g)SH 源地址散列(Source hashing): Director必须确保响应的数据包必须通过请求数据包所经过的路由器或者防火墙(保证源地址不变)

 h)SED 最短期望延迟 (Short饿死他 Expected Delay): 不在考虑非活动连接数

四、安装部署

1、基础环境

Linux内核大于2.6 版本的,都默认支持LVS功能

可以通过如下命令检查kernel是否已经支持LVS的ipvs模块

如果有类似上面的输出,表明系统内核已经默认支持了IPVS模块。接着就可以安装IPVS管理软件了

2、在Director Serve上源码安装IPVS管理软件

下载ipvs管理软件ipvsadm http://www.linuxvirtualserver.org/software/ipvs.html

ipvsadm 常用语法及格式:

3、安装keepalived

主配置文件详细说明 keepalived.conf

  在配置Keepalived.conf时,需要特别注意配置文件的语法格式,因为Keepalived在启动时并不检测配置文件的正确性,即使没有配置文件,Keepalived也照样能启动起来,因而配置文件一定要正确。

在默认情况下,Keepalived在启动时会查找/etc/Keepalived/Keepalived.conf配置文件,如果你的配置文件放在了其它路径下,可以通过“Keepalived  -f”参数指定你所在的配置文件路径即可。

Keepalived.conf配置完毕后,将此文件拷贝到备用Director Server对应的路径下,然后做两个简单的修改即可:

配置 Real server

最后,还要配置集群的Real server节点,以达到与Director Server相互广播通信并忽略arp的目的。

# 下面是在客户端realserver是执行的脚步 cat lvs_real.sh,主要是添加虚拟ip,和抑制 arp 广播,需要在每个Real Server节点上执行

LVS的配置

继续阅读