LVS负载均衡群集

80 阅读9分钟

LVS负载均衡群集

1.集群

  • Cluster,集群、群集
  • 由多台主机构成,但对外只表现为一一个整体,只提供一-个访问入口(域名或IP地址), 相当于一台大型计算机。

1.1集群的优势

  • 提高性能:计算密集应用。如天气预报,核试验模拟。
  • 降低成本:相对百万美元的超级计算机,价格便宜。
  • 提高可扩展性:只要增加集群节点即可。
  • 增强可靠性:多个节点完成相同功能,避免单点失败。

2.企业群集分类

根据群集所针对的目标差异,可分为三种类型:

  • 负载均衡群集
  • 高可用群集
  • 高性能运算群集

2.1负载均衡群集(Load Balance Cluster)

  • LB: Load Balancing,负载均衡,多个主机组成,每个主机只承担一部分访问请求

  • 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、负载(LB)的整体性能;

  • LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”、“反向代理” 等。

2.2 高可用群集(High Availability Cluster)

  • HA: High Availiablity,高可用,避免 SPOF(single Point Of failure) 单点故障

  • 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果。

  • HA的工作方式包括双工主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如,“故障切换” 、“双机热备” 等。

2.3 高性能运算群集(High Performance Computer Cluster)

  • HPC: High-performance computing,高性能

  • 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。

  • 高性能依赖于"分布式运算”、 “并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,'云计算”、 “网格计算”等。

3.负载均衡群集的工作模式

群集的负载调度技术有三种工作模式:

  • 1、地址转换(NAT模式)
  • 2、IP隧道(IP-TUN)
  • 3、直接路由(DR模式)

通常使用 NAT和DR,使用最多的是DR模式。

3.1NAT模式(地址转换

地址转换

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机 的访问入口,也是各节点回应客户机的访问出口。
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两 种方式。
  • 缺点:由于NAT的负载均衡器既作为用户的访问请求入口,也作为节点服务器响应请求的出口,承载两个方向的压力,调度器的性能会成为整个集群的瓶颈。

3.1.1NAT模式流程

image-20240630210749625

1 当客户端 发起请求报文是:

源ip:客户端的ip地址(cip)

目的地址: vip(代理服务器的外网地址)

2.当数据包到达我们的 代理服务器 源ip不变, 需要修改目的ip及端口号

源ip:客户端的ip地址(cip)

目的地址: rip (后端真实服务器ip)

3 .真实服务器 收到报文后 构建响应报文

源ip:改成真实服务器自己的ip(vip 是内网地址)

目的地址: cip 外网客户端地址

4.再发给代理服务器, 代理服务会修改 源ip 将内网地址 改成外网地址

源ip:代理服务器的 外网ip (vip)

目的地址: cip (外网客户端的地址)

lvs-nat:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某处的RS的RIP和PORT实现转发

(1)RIP(真实服务器)和DIP(代理服务器的内网地址)应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP

(2)请求报文和响应报文都必须经由lvs服务器转发,lvs服务器易于成为系统瓶颈

(3)支持端口映射,可修改请求报文的目标PORT

(4)VS必须是Linux系统,RS可以是任意OS系统

3.2 TUN模式(IP隧道)

IP Tunnel ,简称TUN模式。

采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。承载的压力比NAT小。

服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。

缺点:成本很高。

这种模式一般应用于特殊场景,比如将节点服务器分布在全国各地,防止被物理攻击(如地震、战争等),做灾备。

3.2.1TUN模式流程

image-20240630211158112

3.3DR模式(直接路由)

直接路由:

  • Direct Routing,简称DR模式。
  • 采用半开放式的网络结构,与TUN模式的结构类似,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。承载的压力比NAT小。
  • 但各节点并不是分散在各地,而是与调度器位于同一个物理网络。
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。

3.3.1DR模式流程

直接路由(Direct Routing):简称 DR 模式,采用半开放式的网络结构,与 TUN

模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。

负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道

直接路由,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部

进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源

IP/PORT,以及目标IP/PORT均保持不变

image-20240630213410931

image-20240630213455087

3.4 LVS工作模式总结和比较

NATTUNDR
优点端口转换WAN性能最好
缺点性能瓶颈服务器支持隧道模式不支持跨网段
真实服务器要求anyTunnelingNon-arp device
支持网络private(私网)LAN/WAN(私网/公网)LAN(私网)
真实服务器数量low (10~20)High (100)High (100)
真实服务器网关lvs内网地址Own router(网工定义)Own router(网工定义)

3.5LVS调度算法

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态

分为两种:

静态方法: 不管后端真实服务器的 状态,根据自身 算法进行调度

动态方法: 会根据后端服务器的状态来进行调度

仅根据算法本身进行调度

静态:

1、RR:roundrobin,轮询,较常用

2、WRR:Weighted RR,加权轮询,较常用 先算总权重 再用自己的 权重去除以 总权重

3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存 缓存

动态: 一个参考值 来确定服务器是否忙 这个值越小 代表服务器 闲 就会优先调度给闲的服务器

主要根据每RS当前的负载状态及调度算法进行调度Overhead=value 较小的RS将被调度

1、LC:least connections 适用于长连接应用 最小连接数 不考虑权重

2、WLC:Weighted LC,默认调度方法,较常用 默认调度 加权最小连接数 第一轮不合理 都是 一样的 优先级

3、SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接 权重小的 空闲的

4、NQ:Never Queue,第一轮均匀分配,后续SED

5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等 检查 后端服务器忙不忙

6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,,实现Web Cache等

LVS调度算法文件存储位置 :/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs/

modprobe ip_vs     //手动加载 ip_vs 模块
cat /proc/net/ip_vs    //查看当前系统中ip_vs模块的版本信息

4.LVS调度工具 ipvsadm

4.1ipvsadm工具的作用

  • 创建虚拟服务器
  • 添加、删除服务器节点
  • 查看群集及节点情况
  • 保存负载分配策略

4.2ipvsadm 命令选项说明

选项功能
-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询: rr、加权轮询: wrr、 最少连接: lc、 加权最少连接: wlc)
-a表示添加真实服务器(节点服务器)
-t指定VIP地址及TCP端口 (调度器使用)
-r指定RIP地址及TCP端口 (节点服务器使用)
-m表示使用NAT群集模式
-g表示使用DR模式
-i表示使用TUN模式
-w设置权重(权重为0时表示暂停节点) ,默认值为1
-p 60表示保持长连接60秒。默认值就是60秒。
-l列表查看LVS虚拟服务器(默认为查看所有)
-n以数字形式显示地址、端口等信息,常与“-l”选项组合使用。-l需要在-n之前。ipvsadm -ln