当前位置: 首页 > news >正文

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,多目标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 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)其权重值不为零

http://www.dtcms.com/a/287285.html

相关文章:

  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十四课——图像直方图和RGB图像叠加的FPGA实现
  • 【超详细笔记】概率:中心极限定理的直观理解——样本均值为何趋近正态
  • OpenCV 官翻 2 - 图像处理
  • 聊聊接口测试Postman环境与变量的深度应用
  • 黑马点评系列问题之p70postman报错“服务器异常”
  • Windows11下编译好的opencv4.8-mingw,可下载后直接用
  • 如何解决AttributeError: ‘NoneType‘ object has no attribute问题
  • 深入解析Linux文件重定向原理与dup2系统调用
  • Selenium 中 findElement 方法全解析:定位网页元素的 7 种方式
  • opencv圖片標注
  • 【办公类-107-02】20250719视频MP4转gif(削减MB)
  • 【Project】kafka+flume+davinci广告点击实时分析系统
  • LangGraph教程6:LangGraph工作流人机交互
  • 黄山派lvgl8学习笔记(1)画一个一个全白的背景
  • 【C++】入门阶段
  • Spring Cloud Gateway与Envoy Sidecar在微服务请求路由中的架构设计分享
  • 最新版vscode 连接ubuntu 18.04 保姆级教程
  • 前端面试专栏-工程化:27.工程化实践(CI/CD、代码规范)
  • Jenkins 实现项目的构建和发布
  • Rust Web 全栈开发(十):编写服务器端 Web 应用
  • 触发器的创建
  • Django母婴商城项目实践(七)- 首页数据业务视图
  • QT窗口(8)-QFileDiag
  • 大模型 Function Call 的实现步骤及示例详解
  • MySQL EXPLAIN深度解析:优化SQL性能的核心利器
  • iOS 通知机制及底层原理
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对话系统多轮交互优化与用户体验提升(351)
  • 【设计模式C#】状态模式(用于解决解耦多种状态之间的交互)
  • 微服务学习(六)之分布式事务
  • 微服务的编程测评系统-网关-身份认证-redis-jwt