LVS的简介以及架构

发布于:2025-07-20 ⋅ 阅读:(10) ⋅ 点赞:(0)

一、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,多目标IPDNAT(目的地地址转换)

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 2025

IP 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)其权重值不为零


网站公告

今日签到

点亮在社区的每一天
去签到