高可用的LVS负载均衡集群技术详解

最近在看《高性能Linux服务器构建实战》学习LVS相关的技术,将学习的知识做个笔记。

一、LVS集群的组成
利用LVS架设的服务器集群系统由3个部分组成:负载均衡层、服务器群组层、数据共享存储层。
1.负载均衡层
位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成.
LVS核心模块IPVS就安装在Director Server上,而Director的主要作用类似于一个路由器,
它有为完成LVS功能所设定的路由表,通过路由表把用户的请求分发给服务器群组层的应用
服务器(Real Server)。同时在Director Server上还要安装队Real Server的监控模块Ldirectord,
此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时可以将其从LVS路由表中剔除,
在恢复时重新加入。
2.服务器群组层
由一组实际运行应用服务的机器组成,Real Server可以是Web服务器、Mail服务器、FTP服务器、DNS服务器、
视频服务器中的一个或多个。每个Real Server之间通过LAN或分布在各地的WAN相连接。
在实际应用中,Director Server也可以同时兼任Real Server的角色。
3.共享存储层
是为所有Real Server提供共享存储空间和内容一致性的内存区域,一般由磁盘阵列设备组成。

从整个LVS结构可以看出,Director Server是整个LVS的核心。
Linux 2.6内核完全内置了LVS各个模块,不用任何设置就可以支持LVS功能。
目前LVS仅支持Linux和FreeBSD系统作为前端Director Server,对于Real Server,
几乎所有的系统平台都能很好的支持。
二、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。下面进行详细介绍。
1.VS/NAT(Virtual Server via Network Address Translation)

通过网络地址翻译翻译技术实现虚拟服务器,当用户的请求到达调度器时,
调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,
同时将报文的目标端口也改成选定的Real Server的相应端口,最后将报文发送到选定的Real Server。
在服务器端得到数据后,Real Server将数据返回给用户时,需要再次经过负载调度器将报文的
源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。
可以看出,在NAT方式下,用户请求和响应报文都必须经过Director Server地址的重写,
当用户请求越来越多时,调度器的处理能力将成为瓶颈。
2.VS/TUN(Virtual Server via IP Tunneling)
通过IP隧道技术实现的虚拟服务器。这种方式的连接调度和管理与VS/NAT方式一样,只是报文转发方法不同。
在VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接影响
用户的请求,不再经过前端调度器。此外,对Real Server的地理位置没有没有要求,可以与Director Server
位于同一个网段,也可以在独立的一个网络中。因此,在TUN方式中,调度器将只处理用户的报文请求,从而使
集群系统的吞吐量大大提高。
3.VS/DR(Virtual Server via Direct Routing)
通过直接路由技术实现虚拟服务器。这种方式的连接调度和管理与前两种一样,
但它的报文转发方法又有所不同,VS/DR通过改写请求报文的MAC地址,免去了VS/TUN中的IP隧道开销。
这种方式是3种负载调度中性能最好的,但是要求Director Server与Real Server必须由一块网卡连在
同一物理网段上。
三、负载调度算法
负载调度器是根据各个服务器的负载情况,动态地选择一台Real Server响应用户请求。
那么动态选择是如何实现的呢?其实就是通过这里要说的负载调度算法。
根据不同的网络服务需求和服务器配置,IPVS实现了多种负载调度算法。
这里详细讲述最常用的四种调度算法。
1.轮叫调度(Round Robin)
轮叫调度也叫1:1调度,调度器通过轮叫调度算法将外部用户请求按顺序1:1地分配到集群中每个Real Server上。
这种算法平均地对待每一台Real Server,而不管服务器上实际的负载状况和连接状态。
2.加权轮叫调度(Weighted Round Robin)
加权轮叫调度算法根据Real Server的不同处理能力来调度访问请求。可以对每台Real Server
设置不同的调度权值,对性能相对较好的Real Server可以设置较高的权值,对性能较弱的Real Server
可以设置较低的权值。这样保证了处理能力强的服务器处理更高的访问流量,充分合理的利用了服务器资源。
同时,调度器还可以自动查询Real Server的负载情况,并动态的调整其权值。
3.最少连接调度(Least Connections)
最少连接调度算法动态的将网络请求调度到已建立的连接数最少的服务器上。
如果集群系统的真实服务器具有相近的系统性能,采用最小连接调度算法可以较好的负载均衡。
4.加权最小连接调度(Weighted Least Connections)
加权最小连接可以将每个服务器节点用相应的权值表示其处理能力,而系统管理员可以动态地设置响应的权值。
默认权值为1。加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。
四、高可用LVS负载均衡集群体系结构
Director Server仅完成用户请求的分发处理,负载并不是很大。但单一的Director Server可能会造成整个
LVS集群系统的单点故障。为了解决这个问题,就需要保证Director Server的高可用性,最常用的方法就是
在负载均衡层构建Director Server双击热备系统。
高可用的LVS负载均衡集群体系结构如图所示:

整个体系结构分为三层,在HA负载均衡层由主、备两台Director Server构成双击热备系统,
双击之间用心跳线连接。在正常状态下主Director Server使用虚拟IP接收用户请求,
并根据设定好的策略和算法将请求分发给各个服务节点,备用Director Server监控
主Director Server的运行状态。当主Director Server发生异常或者出现故障时,
备用Director Server负责接管Director Server的虚拟IP和服务并继续接收用户请求和分发处理。
通过这种相互监控策略,任意一方主机出故障时,另一方都能够将IP和服务接管,
这就保证了负载均衡层业务请求的不间断运行。
五、高可用性软件Heartbeat与Keepalived
1.Heartbeat
Heartbeat(Linux-HA)的工作原理:Heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分。
HA集群之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,
那么就认为对方失效。这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
Ldirectord是Heartbeat的一个插件,主要作用是监控集群系统中每个服务节点的状态。
当某个节点出现故障时,将此节点从集群系统中删除,并在节点恢复正常后,重新将此节点加入集群系统。
2.Keepalived
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,
Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后
Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,
需要人工做的只是修复故障的web服务器。
Keepalived也有VRRP的功能,作用是解决单点故障的问题。
综上所述,Keepalived一方面具有服务器运行检测功能,另一方面也具有HA cluster功能。
因此通过Keepalived可以搭建高可用的LVS负载均衡集群系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值