LVS负载均衡、工作原理、三种工作模式、八种调度算法

1 篇文章 0 订阅
1 篇文章 0 订阅

简介

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
主要功能: 多用于服务器的负载均衡,提高系统的并发量。
优势: 工作在网络层,资源消耗低,应用范围广。



lvs工作原理

1.客户端的请求到达负载均衡的内核空间,首先到达PREROUTING链。
2.当内核发现请求数据包的目的地是本机时,将数据包发送到INPUT链。
3.lvs由用户空间ipvsadm和ipvs组成,ipvsadm用来定义规则,ipvs根据规则来工作,ipvs工作在INPUT链上,当数据包到达INPUT链,首先被ipvs检查,如果数据包的目标地址及端口没有在规则里边,那么这个数据包将经过INPUT链送到用户空间,交给用户空间的进程来处理。
4.如果数据包里的目的地址及端口在规则里边,那么这个数据包的目的地址及端口会被修改为事先定义好的后端服务器,并送往POSTROUTING链。
5.最后经由POSTROUTING链发送到后端服务器。



三种工作模式



1. NAT模式

在这里插入图片描述
(1)当用户请求的数据包到达DirectorServer(调度器),此时数据包会先到内核空间的PREROUTING链。此时数据包的源IP为CIP(客户端访问IP),目标IP为VIP(调度器的虚拟IP)。
(2)PREROUTING链检查发现数据包的目标IP是本机,将数据包发送到INPUT链。
(3)ipvs对比数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发送到POSTROUTING链。此时数据包的源IP为CIP,目标IP为RIP(后端真实服务器IP),这一步完成了目标IP地址的转换。
(4)POSTROUTING链通过选路,将数据包发送给Real Server(后端真实服务器)。
(5)RS对比发现数据包目标IP为自己的IP地址,将响应后的数据包发送给DS。此时数据包的源IP为RIP,目标IP为CIP。
(6)DS在将数据包响应给客户端之前,会将数据包的源IP修改为自己的VIP地址(这样做的目的是为了让客户端认为这就是自己发出的数据包,这样客户端才能接受响应的数据包),目标IP仍为CIP。

缺点:
不论是请求的数据包还是响应返回的数据包,都必须要经过调度器这个服务器,这就使得调度器成为性能的瓶颈。



2. DR模式

在这里插入图片描述
(1)当用户请求的数据包到达DS,数据包会先到内核空间的PREROUTING链。此时数据包的源IP为CIP,目标IP为VIP。
(2)PREROUTING链检查发现数据包的目标IP是本机,将数据包发送至INPUT链。
(3)ipvs对比数据包的请求的服务是否为集群服务,若是,将请求数据包的源MAC地址修改为DS的MAC地址,将目标MAC地址修改为RS的MAC地址,然后将数据包发送至POSTROUTING链。此时数据包的源IP和目的IP均未修改,仅修改了数据包的源MAC地址和目的MAC地址。
(4)由于DS和RS在同一个网络中,所以通过二层来传输。POSTROUTING链检查目的MAC地址为RIP的MAC地址,那么此时将数据包发送到RS。
(5)RS发现请求的数据包的MAC地址是自己的MAC地址,就接收此数据包。处理完成后,将响应的数据包通过回环接口lo传送给eth0网卡,然后向外发出。因为此时数据包的源IP为VIP,目标IP为CIP,所以数据包直接发送到客户端,不需要经过DS

简单讲,就是负载之前,通过修改数据包的mac地址转发到后端服务器。响应之后,通过数据包未修改的ip地址发送到客户端的服务器。

优点:
响应后的数据包无需经过DS调度器,大大降低了DS的压力,提高了DS的转发效率

缺点
因为是二层的转发,因此RS和DS必须在同一个物理网络中。



3. TUN模式

(1)当数据包到达DS时,数据包会先背送到PREROUTING链。此时数据包的源IP为CIP,目标IP为VIP。
(2)PREROUTING链检查发现数据包的目标IP是本机,将数据包发送到INPUT链。
(3)ipvs对比数据包请求的服务是否为集群服务,若是,在数据包再次封装一层IP报文,封装源IP为DIP,目标IP为RIP,然后数据包发送到POSTROUTING链。
(4)POSTROUTING链根据最新封装的数据包,将数据包发送到RS。(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)
(5)RS接受到数据包后发现是自己的IP地址,拆开外部封装的报文,发现里边还有一层IP报文,而且目标IP是自己本机的lo接口的VIP,所以RS开始处理数据包,处理完成后,通过lo接口发送到eth0网卡,然后向外发送。因为此时数据包的源IP为VIP,目标地址为CIP,所以数据包直接发送给客户端。

优点:
响应后的数据包无需经过DS调度器,大大降低了DS的压力,提高了DS的转发效率

缺点
RS的系统必须支持隧道模式,而且TUN的实现条件相对于DR模式复杂的多。



八种调度算法

  1. 轮叫调度 rr
    最简单,最常用的调度算法,将请求依次均衡的调度到后端不同的服务器上。

  2. 加权轮叫 wrr
    在轮叫的基础上,为后端RS设置权重,权重越大的服务器,被分配请求的次数也就越多。
    权重的范围0-100

  3. 最少链接 lc
    根据后端RS的连接数多少来进行分配请求,连接数少的优先分配请求。

  4. 加权最少链接 wlc
    在最少链接的基础上进行加权。

  5. 基于局部性的最少连接调度算法 lblc
    这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器。

  6. 复杂的基于局部性最少的连接算法 lblcr
    记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

  7. 目标地址散列调度算法 dh
    该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。
    一般用于ip会话保持,比如在付款时,要确保访问的是同一个后端服务器。

  8. 源地址散列调度算法 sh
    与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值