LVS相关知识点总结-一
一什么是集群1.1集群ClusterCluster: 集群是为了解决某个特定问题将多台计算机组合起来形成的单个系统二集群分类2.1Cluster常见的三种类型LBLoadBalancing负载均衡目标将大量的并发访问请求按照特定算法分摊给多台服务器处理以此提高整个系统的响应能力和吞吐量特点依赖前端的负载调度器来分发请求能处理高并发、高负载的场景HAHigh Availiablity高可用目标最大限度地减少服务中断时间确保关键业务或服务的连续性和稳定性特点通过“主从”或“双工”模式实现故障自动切换消除故障HPCHigh-performance computing超算天河一号等目标汇聚多台服务器的计算资源完成单台服务器无法胜任的复杂计算任务特点将计算任务拆分并行处理三lvs的作用LVSLinux Virtual Server的核心作用是实现一个高性能、高可用的负载均衡集群lvs集群体系结构VSVirtual Server调度器RSReal Server 真实业务主机CIPClient IP 客户端主机的ipVIP: Virtual serve IP VS外网的IP 对外开放的让客户访问的ipDIP: Director IP VS内网的IP 调度器负责访问内网的ipRIP: Real server IP 真实业务主机IP )工作原理 VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS根据调度算法来挑选RS四lvs的4种模式及原理4.1:lvs集群的类型lvs-nat 修改请求报文的目标IP,多目标IP的DNATlvs-dr 操纵封装新的MAC地址lvs-tun 在原请求IP报文之外新加一个IP首部lvs-fullnat 修改请求报文的源和目标IP4.2:nat模式原理:通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和 PORT实现转发特点请求报文和响应报文都必须经由Director转发Director易于成为系统瓶颈RIP和DIP应在同一个IP网络且应使用私网址RS的网关要指向DIP支持端口映射可修改请求报文的目标PORTVS必须是Linux系统RS可以是任意OS系统nat模式数据逻辑nat模式数据逻辑1.客户端发送访问请求请求数据包中含有请求来源cip访问目标地址VIP访问目标端口 9000port2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口3.RS1相应请求发送响应数据包包中的相应保温为数据来源RIP1响应目标CIP相应端口 9000port4.VS服务器接收到响应数据包改变包中的数据来源RIP1--VIP,响应目标端口 9000 --805.VS服务器把修改过报文的响应数据包回传给客户端 6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机所以lvs的调度机容易阻塞4.3:DR模式原理:LVS通过修改请求报文的目标MAC地址将请求在局域网内直接转发给选中的RS。RS直接将响应返回给客户端不经过LVS特点1.请求经过LVS响应直接返回性能最高2.LVS和RS必须在同一个物理网段3.不支持端口映射4.需在RS上配置VIP并抑制ARP响应DR模式数据传输过程1.客户端发送数据帧给vs调度主机帧中内容为客户端IP客户端的MACVIPVIP的MAC2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC此时帧中的数据为客户端IP客户端 的MACVIPRS1的MAC3.RS1得到2中的数据包做出响应回传数据包数据包中的内容为VIPRS1的MAC客户端IP客户端IP的 MAC4.4:TUN模式:转发方式不修改请求报文的IP首部源IP为CIP目标IP为VIP而在原IP报文之外再封装一个IP首部 源IP是DIP目标IP是RIP将报文发往挑选出的目标RSRS直接响应给客户端源IP是VIP目标IP 是CIP特点:1.DIP, VIP, RIP都应该是公网地址2.RS的网关一般不能指向DIP3.请求报文要经由Director但响应不能经由Director4.不支持端口映射5.RS的OS须支持隧道功能4.5: fullnet模式原理LVS同时修改请求报文的源IP和目标IPSNATDNAT将其转发给RS。响应报文也必须回到LVS再修改后返回特点1.VIP是公网地址RIP和DIP是私网地址且通常不在同一IP网络因此RIP的网关一般不会指向DIP2.RS收到的请求报文源地址是DIP因此只需响应给DIP但Director还要将其发往Client3.请求和响应报文都经由Director4.支持端口映射五lvs的13种算法5.1:静态调度算法1、RRroundrobin 轮询RS分别被调度当RS配置有差别时不推荐2、WRRWeighted RR加权轮询根据RS的配置进行加权调度性能差的RS被调度的次数少3、SHSource Hashing实现session sticky源IP地址hash将来自于同一个IP地址的请求始终发往 第一次挑中的RS从而实现会话绑定4、DHDestination Hashing目标地址哈希第一次轮询调度至RS后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS典型使用场景是正向代理缓存场景中的负载均衡如宽带运营商5.2:动态调度算法1、LCleast connections最少链接发适用于长连接应用Overhead负载值activeconns活动链接数 x 256inactiveconns非活 动链接数2、WLCWeighted LC权重最少链接默认调度方法Overhead(activeconns x 256inactiveconns)/weight3、SEDShortest Expection Delay初始连接高权重优先Overhead(activeconns1inactiveconns) x 256/weight 但是当node1的权重为1node2的权重为10经过运算前几次的调度都会被node2承接4、NQNever Queue第一轮均匀分配后续SED5、LBLCLocality-Based LC动态的DH算法使用场景根据负载状态实现正向代理6、LBLCRLBLC with Replication带复制功能的LBLC解决LBLC负载不均衡问题从负载重的复制 到负载轻的RS六lvs的多端口轮询问题解决方案为什么LVS在默认情况下会基于VIP:Port独立进行调度。这意味着同一个客户端的HTTP请求80端口和HTTPS请求443端口可能会被LVS分发到两台不同的后端服务器上。如果应用程序的会话状态如用户登录信息、购物车保存在单台服务器本地这就会导致“会话割裂”问题。解决方式利用火墙标记解决轮询错误1.启动RS的https服务#RS1: [rootRS1 ~]# dnf install mod_ssl -y [rootRS1 ~]# systemctl restart httpd #RS2: [rootRS2 ~]# dnf install mod_ssl -y [rootRS2 ~]# systemctl restart httpd2.在vsnode中添加https的轮询策略[rootvsnode boot]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20 -g [rootvsnode boot]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10 -g #默认20080先前已经配置了没有的原理和配置和200:443相同 [rootvsnode boot]# ipvsadm -A -t 192.168.0.200:443 -s rr [rootvsnode boot]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.10:443 -g [rootvsnode boot]# ipvsadm -a -t 192.168.0.200:443 -r 192.168.0.20:443 -g #查询 [rootvsnode boot]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.200:80 rr - 192.168.0.10:80 Route 1 0 0 - 192.168.0.20:80 Route 1 0 0 TCP 192.168.0.200:443 rr - 192.168.0.10:443 Route 1 0 0 - 192.168.0.20:443但此时未配置火墙会出现轮询重复的问题解决方式[rootvsnode boot]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 6666 #其中标记为6666为自定义的不强制要求 [rootvsnode boot]# ipvsadm -A -f 6666 -s rr [rootvsnode boot]# ipvsadm -a -f 6666 -r 192.168.0.10 -g [rootvsnode boot]# ipvsadm -a -f 6666 -r 192.168.0.20 -g此时查询将会解决[rootclient ~]# curl 192.168.0.200;curl -k https://192.168.0.200 RS2 - 192.168.0.20 RS1 - 192.168.0.10 #显示内容为echo 在RS1,2中写入index的七lvs的会话粘滞解决方案会话粘滞Session Stickiness是解决“来自同一客户端的请求应始终发往同一台后端服务器”问题的统称。LVS提供了更常用和通用的方法持久连接。设定ipvs调度策略[rootvsnode ~]# ipvsadm -A -f 6666 -s rr -p 1 #设定为-p 1,是为了更快的检测结果不强制要求一定要是1s左右 [rootvsnode ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn FWM 6666 rr persistent 1 - 192.168.0.10:0 Route 1 0 0 - 192.168.0.20:0#第一次访问 [rootclient ~]# curl 192.168.0.200 RS1 - 192.168.0.10 #在设定时间内再次尝试 [rootclient ~]# curl 192.168.0.200 RS1 - 192.168.0.10PS实验环境(以DR为例)虚拟机要求1台客户端client可以连接的NAT网卡1台路由负责在内部网络和外网访问NAT仅主机的卡1台调度器用于分发多台简单设置为2台RS服务器配置IP设定IP #客户端 172.25.254.99 #路由器 172.25.254.100 192.168.0.100 #vsnode 调度器 192.168.0.50 #RS1 192.168.0.10 #RS2 192.168.0.20 #配置ip是可以提前配置相关脚本或使用vim直接进入进行修改 #使用前记得检查查看ip a查看自己是否添加的先关的网卡和卡名是否和输入对应调度器配置#调度器 [rootvsnode ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection #添加修改 [connection] ideth0 typeethernet interface-nameeth0 [ipv4] methodmanual address1192.168.0.50/24,192.168.0.100 [rootvsnode ~]# cd /etc/NetworkManager/system-connections/ [rootvsnode system-connections]# cp -p eth0.nmconnection lo.nmconnection #设定lo拷贝只是为了方便配置 [rootvsnode system-connections]# vim lo.nmconnection [connection] idlo typeloopback interface-namelo [ipv4] methodmanual address1127.0.0.1/8 address2192.168.0.200/32 [rootRS1 system-connections]# nmcli connection reload #重新加载并连接 [rootRS1 system-connections]# nmcli connection up eth0 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/7 [rootRS1 system-connections]# nmcli connection up lo 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/8 #检测 rootvsnode system-connections]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 #(结果以自己设定的为准)客户端[rootclient ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection] ideth0 typeethernet interface-nameeth0 [ipv4] methodmanual address1172.25.254.99/24,172.25.254.100 dns8.8.8.8; [rootclient ~]# nmcli connection reload [rootclient ~]# nmcli connection up eth0 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/5 [rootclient ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.25.254.100 0.0.0.0 UG 100 0 0 eth0 172.25.254.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0路由器[rootrouter ~]# systemctl disable --now ipvsadm.service [rootrouter ~]# ipvsadm -C #停止并清空 [rootrouter ~]# vmset.sh eth0 172.25.254.100 vsnode [rootrouter ~]# vmset.sh eth1 192.168.0.100 vsnode noroute #设定内核路由功能 [rootrouter ~]# echo net.ipv4.ip_forward1 /etc/sysctl.conf [rootrouter ~]# sysctl -p net.ipv4.ip_forward 1 #数据转发策略 [rootrouter ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100 #此处在vsnode.. [rootvsnode ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.100RS:(RS1,RS2都需要进行配置[rootRS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 [rootRS1 ~]# nmcli connection reload [rootRS1 ~]# nmcli connection up eth0 [rootRS1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.100 0.0.0.0 UG 100 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 #在lo上设定vip [rootRS1 ~]# cd /etc/NetworkManager/system-connections/ [rootRS1 system-connections]# cp -p eth0.nmconnection lo.nmconnection [rootRS1 system-connections]# vim lo.nmconnection [connection] idlo typeloopback interface-namelo [ethernet] [ipv4] address1127.0.0.1/8 address2192.168.0.200/32 methodmanual [rootRS1 system-connections]# nmcli connection reload [rootRS1 system-connections]# nmcli connection up lo 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/6 #arp禁止响应 [rootrs2 ~]# echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore [rootrs2 ~]# echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore [rootrs2 ~]# echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce [rootrs2 ~]# echo 2 /proc/sys/net/ipv4/conf/all/arp_announce(记得修改后要重启如果不通分别查看每个是否能ping通互联能否转发vip配置等六七都可再次基础上操作或使用简化的1分发vs2RS进行操作

相关新闻

Rust 与 Go 在系统工具开发中的体验对比:同时用两种语言的真实感受

Rust 与 Go 在系统工具开发中的体验对比:同时用两种语言的真实感受

Rust 与 Go 在系统工具开发中的体验对比:同时用两种语言的真实感受 一、为什么我会同时用 Rust 和 Go? 去年我接了个私活:给一家创业公司写容器监控工具。老板说:"用 Go 写吧,团队都会 Go。" 我点头答应&…

2026/8/29 2:41:08 阅读更多 →
OpenEMR:开源电子病历系统的技术架构深度解析与实践部署指南

OpenEMR:开源电子病历系统的技术架构深度解析与实践部署指南

OpenEMR:开源电子病历系统的技术架构深度解析与实践部署指南 【免费下载链接】openemr The most popular open source electronic health records and medical practice management solution. 项目地址: https://gitcode.com/GitHub_Trending/op/openemr Ope…

2026/8/19 15:06:16 阅读更多 →
Rust 异步运行时横向对比:Tokio、async-std、smol、glommio 的实测数据

Rust 异步运行时横向对比:Tokio、async-std、smol、glommio 的实测数据

Rust 异步运行时横向对比:Tokio、async-std、smol、glommio 的实测数据 一、为什么异步运行时选型能让人秃头? 我第一次用 Rust 写异步代码的时候,直接 cargo add tokio,然后就开始写了。那时候我觉得,异步运行时不就是…

2026/8/29 5:29:27 阅读更多 →

最新新闻

5年Java后端社招贝壳:全流程面试复盘与高频考点精讲

5年Java后端社招贝壳:全流程面试复盘与高频考点精讲

去年年中动了换工作的念头,前后断断续续面了几家,最后拿到了贝壳后端岗位的offer。整个过程踩了不少坑,也积累了大量一手经验。作为工作了5年的Java后端,这次社招面试让我对“后端”这个岗位的考核方式、技术深度和团队定位都有了…

2026/8/30 2:09:51 阅读更多 →
Android Studio开发入门:从零构建MVVM架构记事本App实战

Android Studio开发入门:从零构建MVVM架构记事本App实战

简介:这是一份面向Android开发初学者与课程设计学生的Java语言记事本应用实战项目,基于Android Studio开发,完整覆盖用户登录注册、笔记增删改查及SQLite本地持久化存储等核心功能模块。资源包共55个文件,包含12个Java业务逻辑类、…

2026/8/30 2:09:51 阅读更多 →
GradCuit:信用分配的梯度流让潜在推理鲁棒且可解释

GradCuit:信用分配的梯度流让潜在推理鲁棒且可解释

最近 Test-Time Reasoning 方向的工作很多,核心思路都是让模型在推理阶段多花一点计算量来换取更高的准确率。不过“多算几步”并不等于“多对几步”:如果模型在潜在空间里沿着错误方向更新状态,步数越多反而错得越离谱。最近在读 GradCuit 这…

2026/8/30 2:09:51 阅读更多 →
ROS2机器人导航实战:从SLAM建图到Nav2路径规划的完整系统解析

ROS2机器人导航实战:从SLAM建图到Nav2路径规划的完整系统解析

简介:本资源是一套面向ROS2初学者与机器人开发者的Fishbot移动机器人仿真与导航完整实践方案,聚焦SLAM建图与自主导航两大核心能力训练,适用于高校课程设计、科研验证及工程原型开发。压缩包共48个文件,含12个Python节点脚本&…

2026/8/30 2:09:51 阅读更多 →
LLM规划Web应用,devtools反馈闭环决定成败

LLM规划Web应用,devtools反馈闭环决定成败

让 LLM 写一个 Web 应用已经不是什么新鲜事了。真正难的是:它写完以后,谁来告诉它哪里错了?页面白屏、接口 404、数据结构不匹配、样式错位……这些在传统开发里靠浏览器 DevTools 就能定位的问题,到了 LLM 自动化开发的场景里&am…

2026/8/30 2:09:51 阅读更多 →
Agent稳定输出结构化内容:四层约束实战指南

Agent稳定输出结构化内容:四层约束实战指南

今年面试大模型相关岗位时,“如何让 Agent 稳定输出结构化内容”几乎是绕不开的一道题。很多候选人能把 Agent 的原理讲得头头是道,但一被问到工程落地的细节就卡住了——模型偶尔多输出一个字段、少闭合一个括号、文字解释混入 JSON 中间,下…

2026/8/30 2:08:50 阅读更多 →

日新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/30 0:00:01 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/30 0:00:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/30 0:00:01 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/30 0:00:01 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/30 0:00:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/30 0:00:01 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/29 4:34:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/28 17:43:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/29 2:05:18 阅读更多 →