LVS的简介以及架构
一、LVS简介:
Linux Virtual Server,负载调度器,是一种基于Linux操作系统内核的高性能、高可用网络服务负载均衡解决方案。
(四层:物理层、数据链路层、网络层、传输层)
二、LVS相关术语:
VS:Virtual Server,负责调度
RS:RealServer,负责真正提供服务
CIP:Client IP
VIP:Virtual serve IP VS外网的IP
DIP:Director IP VS内网的IP
RIP:Real server IP
三、lvs集群的类型
lvs-nat:修改请求报文的目标IP,多目标IP的DNAT(目的地地址转换)
lvs-dr:操纵封装新的MAC地址
lvs-tun:在原请求IP报文之外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP
四、各模式的逻辑
1、nat模式
网络地址转换模式,进站/出站的数据流量经过分发器(IP负载均衡,他修改的是IP地址) --利用三层功能
(由于调度器压力过大,建议后端最多挂10台)
缺点:过于依赖调度器,调度器的性能将会成为整个架构的瓶颈
2、DR模式
直连路由模式,只有进站的数据流量经过分发器(数据链路层负载均衡,因为他修改的是目的mac地址)--利用二层功能mac地址
3、TUN
隧道模式,只有进站的数据流量经过分发器
4、fullnat模式
双向转换:通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发
五、lvs软件的安装及命令的使用
1、安装lvs
[root@LVS ~]# dnf install ipvsadm -y
2、编写调度策略
-A #添加
-E #修改
-t #tcp服务
-u #udp服务
-s #指定调度算法,默认为WLC
-p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-f #firewall mask 火墙标记,是一个数字ipvsadm –C 清空
ipvsadm –R 重载
ipvsadm -S [-n] 保存
管理集群中的real server-a #添加realserver
-e #更改realserver
-t #tcp协议
-u #udp协议
-f #火墙 标签
-r #realserver地址
-g #直连路由模式
-i #ipip隧道模式
-m #nat模式
-w #设定权重
-Z #清空计数器
-C #清空lvs策略
-L #查看lvs策略
-n #不做解析
--rate :输出速率信息
查看策略调度
[root@lvs ~]# watch -n1 ipvsadm -Ln
Every 1.0s: ipvsadm -Ln lvs.zx.org: Sat Jul 19 17:05:21 2025IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
(1)集群服务器
添加 改变
设置延续时间 火墙标记,防止访问https和http 到同一台主机上
删除指定的 (-D) 清空(-C)
(2)后端real server
如何保存策略,使开机生效(让服务开机时加载策略)
[root@lvs ~]# ipvsadm-save -n
-A -t 192.168.134.112:80 -s rr
-a -t 192.168.134.112:80 -r 172.25.254.10:80 -i -w 2 --tun-type ipip
-a -t 192.168.134.112:80 -r 172.25.254.20:80 -g -w 1[root@lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# systemctl enable --now ipvsadm.service
ipvs的备份及恢复
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm-restore < /mnt/ipvsadm.rule
六、lvs的调度算法
1、lvs静态调度算法
仅根据算法本身进行调度,不考虑RS的负载情况
(1)RR:roundrobin 轮询 RS分别被调度,当RS配置有差别时不推荐
(2)WRR:Weighted RR,加权轮询根据RS的配置进行加权调度,性能差的RS被调度的次数少
(3)SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往 第一次挑中的RS,从而实现会话绑定
(4)DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商
2、lvs动态调度算法
主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度
(1)LC:least connections(最少链接发) 适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活 动链接数)
(2)WLC:Weighted LC(权重最少链接) 默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight
(3)SED:Shortest Expection Delay, 初始连接高权重优先Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,当node1的权重为1,node2的权重为10,经过运算前几次的调度都会被node2承接
(4)NQ:Never Queue,第一轮均匀分配,后续SED
(5)LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理
(6)LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制 到负载轻的RS
3、FO(Weighted Fai Over)调度算法:常用作灰度发布
在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_F OVERLOAD标志)的且权重最高的真实服务器,进行调度
例如:当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD),那么vs调度 器就不会把链接调度到有过载标记的主机中。
4、OVF(Overflow-connection)调度算法
基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动 连接数量超过权重值,之后调度到下一个权重值最高的真实服务器
在此OVF算法中,遍历虚拟服务相关 联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条 件:
(1)未过载(未设置IP_VS_DEST_F OVERLOAD标志)
(2)真实服务器当前的活动连接数量小于其权重值
(3)其权重值不为零