web集群-负载均衡集群-LVS

简介

官方站点

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 由章文嵩博士发起的自由软件项目。在Linux2.4内核以前,使用LVS时要重新编译内核以支持LVS功能模块,2.4之后已内置了LVS的各个功能模块,可以直接使用LVS提供的各种功能。
目标:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

负载均衡器概念

服务器负载均衡器是指设置在一组功能相同或相似的服务器前端,对到达服务器组的流量进行合理分发,并在其中某一台服务器故障时,能将访问请求转移到其它可以正常工作的服务器的软件或网络设备。
SLB是服务器负载均衡(Server Load Balancing)的简称。服务器负载均衡又可以分为局域网服务器负载均衡与广域网服务器负载均衡(Global Server LoadBalancing)。狭义的sLB是指局域网服务器负载均衡,与广域网服务器负载均衡(GSLB)相对。

优点:

提高性能------负载均衡器可以实现服务器之间的负载平衡,从而提高了系统的反应速度与总体性能;
提高可靠性-----可以对服务器的运行状况进行监控,及时发现运行异常的服务器,并将访问请求转移到其它可以正常工作的服务器上,从而提高服务器组的可靠性
提高可维护性-–可以根据业务量的发展情况灵活增加服务器,系统的扩展能力得到提高,同时简化了管理。

实现负载均衡的方法:

基于DNs轮询的方法:在DNs服务器中对同一域名设置多条DNSA记录,通过DNs的轮询机制实现服务器负载均衡。
基于应用软件的方法:在应用软件设计中就考虑了多服务器之间的协同工作与任务调度。这种方法一般会有一台服务器作为中枢对访问请求进行调度,同时要求在应用层支持访问重定向或任务调度、跳转机制(如LVs、Haproxy、nginx等)。
采用专门的L4/L7层交换机来实现:即我们常说的负载均衡器。一般都是通过在L4AL7层交换机作地址转换(NAT)来实现。如F5、radware、arrav等。

LVS体系结构

三个部分组成:

最前端的负载均衡层------------用Load Balancer表示
中间的服务器群组层------------用Server Array表示
最底端的数据共享存储层------用Shared Storage表示。

在这里插入图片描述

1、Load Balancer层

位于整个集群系统的最前端,由一台或者多台负载调度器(Director Server)组成,LVS模块安装在Director Server上,Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器上。同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。

2、Server Array层

由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。

3、Shared Storage层

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

LVS相关术语

VIP		虚拟IP地址(Virtual IP Address):Director用于向客户端提供服务的IP地址

RIP		真实IP地址(Real Server IP Address):在集群下面节点上使用的IP地址

DIP		Director的IP地址(Director IP Address):Director用于连接内外网网络的IP地址

CIP		客户端主机IP地址(Client IP Address):客户端请求集群服务器的IP地址,该地址用作发送给集群的请求的源IP地址

LVS集群内部的节点称为真实服务器(Real Serve),也叫做集群节点。

LVS工作模式

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件。

IPVS作用:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术。

IPVS实现负载均衡机制有三种,分别是NATTUNDR

1、VS/NAT(Virtual Server via Network Address Translation)

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

2、VS/TUN (Virtual SeLrver 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/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。

模式响应图示:

在LVS-DR配置中,Director将所有入站请求转发给集群内部节点,但集群内部的节点直接将他们的回复发送给客户端计算机在这里插入图片描述

LVS调度算法

调度方法决定了如何在这些集群节点之间分布工作负荷。
调度方法类别:

 固定调度算法:rr,wrr,dh,sh
 动态调度算法:wlc,lblc,lblcr,SED,NQ
rr		轮循调度(Round-Robin)
说明:将请求依次分配不同的RS,也就是在RS中均摊请求。

wrr		加权轮循调度(Weighted Round-Robin)
说明:依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值较低的RS更多。

dh		目的哈希调度(Destination Hashing)
说明:以目的地址为关键字查找一个静态hash表来获得需要的RS。

sh		源地址哈希调度(source hashing)
说明:以源地址为关键字查找一个静态hash表来获得需要的RS。

wlc		加权最小连接数调度(weighted leastconnection)
说明:假设各台RS的权值依次为wi(i=1..n),当前的TCP连接数依次为Ti(i=1..n),依次选取Ti/Wi为最小的RS作为下一个分配的RS。

lc		最小连接数调度(Least-Connection)
说明:IPVS表存储了所有的活动的连接。把新的连接请求发送到当前连接数最小的RS。

lblc	基于地址的最小连接数调度(locality-Based Least-Connection)
说明:将来自同一目的地址的请求分配给同一台RS如果这台服务器尚未满负荷,否则分配给连接数最小的RS,并以它为下一次分配的首先考虑。

lblcr	基于地址带重复最小连接数调度(Locality-Based Least-Connection with Replication)
说明:对于某一目的地址,对应有一个RS子集。对此地址请求,为它分配子集中连接数最小RS;
	如果服务器中所有子集均已满负荷,则从集群中选择一个连接数较小服务器,将它加入到此子集并分配连接;
	若一定时间内,未被做任何修改,则将子集中负载最大的节点从子集删除。

SED		最短期望的延迟(shortest expected delay scheduling SED)
说明:基于wlc算法。例如ABC三台机器分别权重123,连接数也分别是123.那么如果使用wlc算法的话一个新请求进入时它可能会分给ABC中的任意一个。
	使用sed算法后会进这样一个运算 A(1+1)/1 B(1+2)/2 C(1+3)/3 根据运算结果,把连接交给C。

NQ		最少队列调度(Never Queue Scheduling NQ)
说明:无需队列。如果有台realserver的连接数=0就直接分配过去,不需要在进行sed运算

LVS模式的工作原理

一、LVS-DR集群介绍

1、LVS的基本工作原理

1、当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
2、PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
3、IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
4、 POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,通过选路,将数据包最终发送给后端的服务器在这里插入图片描述

2、VS-DR模式工作过程:

首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过director),并且以此回复数据包使用的目的VIP 地址作为源IP地址。

3、 LVS-DR模式应用特点

1)所有集群节点RS必须和DS在同一个局域网中;
2)所有客户端入站请求由DS首先接收,并转发给集群节点Real Server服务;
3)集群节点RS通常最好带外部IP,而不使用DS及某固定机器作为默认网关,以便将数据包直接回复给客户端计算机,且不会产生回包的瓶颈;
4)所有集群节点RS上必须在lo网卡上绑定VIP地址,以便验证通过目的IP非RS的数据包;
5)由于所有集群节点RS上必须在lo网卡上绑定VIP地址,因此带来arp问题,即集群节点RS默认会相应发往DS VIP的数据包。因此要对所有集群节点RS做ARP抑制处理,把响应VIP的请求交给DS;
6)很多操作系统都可以用在集群内部的RS真实服务器上只要该操作系统能够实现ARP隐藏,如:Windows,linux,unix;
7)LVS/DR模式不需要开启调度器转发功能。
8)LVS/DR DS(服务器数量100台)可以比LVS-NAT DS(服务器数量10-20台)承受更多的并发请求和转发更多的服务器

4、 LVS-DR模式ARP抑制

如果不抑制RS端arp影响,广播消息会通过物理网卡到达真实服务器,而真实服务器上也有VIP,所以会响应此请求.

解决方案:
让前端路由将请求发往VIP时,只能是Dirctor上的VIP;

 (1) 静态地址绑定;
	 未必有路由器的配置权限;
 	 Director调用时静态地址绑定将难以适用;
 	 
 (2) arptables
	 Disable ARP for VIP
	 Basically, we have the following commands to disable ARP for VIP at real servers.

	 arptables -F
	 arptables -A INPUT -d $VIP -j DROP
	 arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
	 
 (3) 修改Linux内核参数,将RS上的VIP配置为lo接口的别名,限制Linux仅对对应接口的ARP请求做响应

二、 LVS-NAT模式

1、LVS-NAT工作原理

1、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
2、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
3、IPVS比对数据包请求的服务是否为集群服务,若是修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
4、POSTROUTING链通过选路,将数据包发送给Real Server
5、Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
6、Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP
在这里插入图片描述

2、 模式特点

1、所有RS必须在一个物理网段内
2、DS上需要开启路由转发功能
3、DS必须处于客户端与RS之间,充当网关
4、所有RS将网关指向DS
5、DS操作系统必须为linux
6、RIP通常为私有IP,仅用于个节点间通信

三、 LVS-TUN模式

1、LVS-TUN工作原理

1、 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。
2、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
3、IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。然后发至POSTROUTING链。 此时源IP为DIP,目标IP为RIP
4、 POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。 此时源IP为DIP,目标IP为RIP
5、 RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP
6、 响应报文最终送达
在这里插入图片描述

2、 模式特点

1、集群节点不必位于同一个物理网络但必须都拥有公网 IP(或都可以被路由)
2、真实服务器不能将网关指向负载调度器
3、RIP 必须是公网地址
4、负载调度器只负责入站请求
5、不支持端口映射功能
6、发送方和接收方必须支持隧道功能

LVS集群构建

<
主机名及地址 角色
node1:192.168.16.11 DS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值