LVS 原理篇:LVS 简介、结构、四种模式、十种算法

2022/04/12 lvs,linux

LVS 是 Linux virtual server 的缩写,为 linux 虚拟服务器,是一个虚拟的服务器集群系统。LVS 简单工作原理为用户请求 LVS VIP,LVS 根据转发方式和算法,将请求转发给后端服务器,后端服务器接收到请求,返回给用户。对于用户来说,看不到 Web 后端具体的应用。

一、LVS 负载均衡简介

可伸缩网络服务有很多结构,但都有一个共同点:它们都需要一个前端的负载调度器。而实现虚拟网络服务的主要技术指出 IP 负载均衡技术是在负载调度器的实现技术里面效率最高的一个。

在已有的 IP 负载均衡技术中,主要有通过网络地址转换将一组服务器构成一个高性能的、高可用的虚拟服务器,通常称为 VS/NAT 技术。

在分析 VS/NAT 的缺点和网络服务的非对称的基础上,可以通过 IP 隧道实现虚拟服务器的方法 VS/TUN 和通过直接路由实现虚拟服务器的方法 VS/DR,它们可以极大地提高系统的伸缩性。

二、LVS 结构

LVS 集群分为三层结构:

  • 负载调度器 ( Load Blancer ): 是整个 LVS 集群对外的前端机器,负责 client 的请求发送到一组服务器【多台 LB IP】上执行,而 client 则认为返回来是同一个 IP ( 通常把这个 IP 成为虚拟ip 或 VIP )
  • 服务器池 ( server pool ) : 一组真正执行 clinet 请求的服务器,一般是 web 服务器;除了web,还有 FTP、MAIL、DNS 等
  • 共享存储 ( shared stord ): 它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相同的服务

三、LVS 相关术语

  1. DS:Director Server。指的是前端负载均衡器节点
  2. RS:Real Server。后端真实的工作服务器
  3. VIP:向外部直接面向用户请求,作为用户请求的目标的 IP 地址
  4. DIP:Director Server IP,主要用于和内部主机通讯的 IP 地址
  5. RIP:Real Server IP,后端服务器的 IP 地址
  6. CIP:Client IP,访问客户端的 IP 地址

四、LVS 负载均衡工作原理

1、LVS DR 模式

LVS DR 原理

用户请求 LVS 到达 director,director 将请求的报文的目的 MAC 地址改为后端的 realserver 的 MAC 地址,目的 IP 为 VIP (不变),源 IP 为 client IP 地址(不变),然后 director 将报文发送到 realserver,realserver 检测到目的地址为自己本地的 VIP,如果在同一网段,将请求直接返回给用户,如果用户跟 realserver 不在同一个网段,则需要通过网关返回给用户。

LVS DR 特性

前端路由将目标地址为 VIP 报文统统发给 Director Server RS 跟 Director Server 必须有一个网卡在同一个物理网络中 所有的请求报文经由 Director Server,但响应报文必须不能进过 Director Server 所有的 real server 机器上都有 VIP 地址

2、LVS NAT 模式

LVS NAT 原理:

用户请求 LVS 到达 director,director 将请求的报文的目的 IP 改为 RIP,同时将报文的目标端口也改为 realserver 的相应端口,最后将报文发送到 realserver 上,realserver 将数据返回给director,director 再把数据发送给用户

LVS NAT 特性:

NAT 模式修改的是目的 ip,直接走的是 switch 不需要修改 mac 地址,所以 VIP 和 RIP 不需要在同一个网段内 NAT 的包的进出都需要经过 LVS,所以 LVS 可能会成为一个系统的瓶颈问题

3、LVS FULLNAT 模式

LVS FULLNAT 报文变化

LVS FULLNAT 特性:

  • FULLNAT 模式也不需要DIP和RIP在同一网段
  • FULLNAT 和 NAT 相比的话:会保证 RS 的回包一定可到达 LVS
  • FULLNAT 需要更新源 IP,所以性能正常比 NAT 模式下降 10%

4、LVS TUN 原理

LVS TUN 原理:

用户请求 LVS 到达 director,director 通过 IP-TUN 加密技术将请求报文的包封装到一个新的 IP 包里面,目的 IP 为 VIP (不变),然后 director 将报文发送到 realserver,realserver 基于 IP-TUN 解密,然后解析出来包的目的为 VIP,检测网卡是否绑定了 VIP,绑定了就处理这个包,如果在同一个网段,将请求直接返回给用户,否则通过网关返回给用户;如果没有绑定 VIP 就直接丢掉这个包

LVS TUN 特性:

  • TUNNEL 必须在所有的 realserver 上绑定 VIP
  • realserver 直接把包发给 client
  • 隧道模式运维起来会比较难,所以一般不用

5、四种模式的比较

  • 是否需要 VIP 和 realserver 在同一网段

    DR 模式因为只修改包的 MAC 地址,需要通过 ARP 广播找到 realserver,所以 VIP 和 realserver 必须在同一个网段,也就是说 DR 模式需要先确认这个 IP 是否只能挂在这个 LVS 下面;其他模式因为都会修改目的地址为realserver 的 IP 地址,所以不需要在同一个网段内

  • 是否需要在 realserver 上绑定 VIP

    realserver 在收到包之后会判断目的地址是否是自己的 IP DR 模式的目的地址没有修改,还是 VIP,所以需要在 realserver 上绑定 VIP IP TUN 模式值是对包重新包装了一层,realserver 解析后的包的 IP 仍然是 VIP,所以也需要在 realserver 上绑定 VIP

  • 四种模式的性能比较

    DR 模式、IP TUN 模式都是在包进入的时候经过 LVS,在包返回的时候直接返回给 client;所以二者的性能比 NAT高,但 TUN 模式更加复杂,所以性能不如 DR FULLNAT 模式不仅更换目的 IP 还更换了源 IP,所以性能比 NAT 下降 10%

结论: DR>TUN>NAT>FULLNAT

五、LVS 负载均衡十种算法

1. 轮叫调度 rr

均等地对待每一台服务器,不管服务器上的实际连接数和系统负载

2. 加权轮叫 wrr

调度器可以自动问询真实服务器的负载情况,并动态调整权值

3. 最少链接 lc

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

4. 加权最少链接 wlc

调度器可以自动问询真实服务器的负载情况,并动态调整权值 带权重的谁不干活就给谁分配,机器配置好的权重高

5. 基于局部性的最少连接调度算法 lblc

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

6. 复杂的基于局部性最少的连接算法 lblcr

记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

7. 目标地址散列调度算法 dh

该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

8. 源地址散列调度算法 sh

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

9. 最少期望延迟 sed

不考虑非活动链接,谁的权重大,优先选择权重大的服务器来接收请求,但权重大的机器会比较忙

10. 永不排队 nq

无需队列,如果有 realserver 的连接数为 0 就直接分配过去

六:开启 LVS 模块

# 创建开机ipvs脚本
cat >/etc/ipvs.sh <<'EOF'
#!/bin/bash
ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for i in $(ls $ipvs_mods_dir|grep -o "^[^.]*")
do
  /sbin/modinfo -F filename $i &>/dev/null
  if [ $? -eq 0 ];then
    /sbin/modprobe $i
  fi
done
EOF

# 执行脚本开启ipvs
sh /etc/ipvs.sh 

# 验证开启结果
[root@hdss7-21 conf]# lsmod |grep ip_vs
ip_vs_wrr              12697  0 
ip_vs_wlc              12519  0 
......略

原文链接:https://blog.csdn.net/lcl_xiaowugui/article/details/81701949

Search

    Table of Contents