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/7/29 22:47:37 阅读更多 →
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/7/29 22:47:37 阅读更多 →
Rust 异步运行时横向对比:Tokio、async-std、smol、glommio 的实测数据

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

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

2026/7/29 22:47:37 阅读更多 →

最新新闻

cypress-wait-until:终极Cypress等待增强工具,让测试稳定性提升10倍

cypress-wait-until:终极Cypress等待增强工具,让测试稳定性提升10倍

cypress-wait-until:终极Cypress等待增强工具,让测试稳定性提升10倍 【免费下载链接】cypress-wait-until Add the Cypress waiting power to virtually everything 🎉 项目地址: https://gitcode.com/gh_mirrors/cy/cypress-wait-until …

2026/7/29 22:52:43 阅读更多 →
扣子循环中断与重试机制深度解析(企业级容错设计全图谱)

扣子循环中断与重试机制深度解析(企业级容错设计全图谱)

更多请点击: https://intelliparadigm.com 第一章:扣子循环中断与重试机制深度解析(企业级容错设计全图谱) 在高并发、分布式服务场景中,扣子(Button)驱动的循环任务常因网络抖动、下游依赖超时…

2026/7/29 22:52:43 阅读更多 →
哔哩下载姬downkyi:专业B站视频下载与管理实践指南

哔哩下载姬downkyi:专业B站视频下载与管理实践指南

哔哩下载姬downkyi:专业B站视频下载与管理实践指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xff…

2026/7/29 22:52:43 阅读更多 →
BaiduPCS-Go:用命令行解锁百度网盘的全新生产力

BaiduPCS-Go:用命令行解锁百度网盘的全新生产力

BaiduPCS-Go:用命令行解锁百度网盘的全新生产力 【免费下载链接】BaiduPCS-Go 项目地址: https://gitcode.com/gh_mirrors/baid/BaiduPCS-Go 你是否曾为百度网盘繁琐的图形界面而抓狂?是否渴望像操作本地文件一样管理云端数据?BaiduP…

2026/7/29 22:52:43 阅读更多 →
《面向地面图像与卫星图像配准的空间智能技术》-CVPR-2026

《面向地面图像与卫星图像配准的空间智能技术》-CVPR-2026

论文英文题目:WRIVINDER: Towards Spatial Intelligence for Geo-locating Ground Images onto Satellite Imagery论文发表期刊/会议:CVPR论文发表年份:2026年1. 论文核心内容概括解决的问题:论文解决了在GPS不可信或存在巨大视角…

2026/7/29 22:52:43 阅读更多 →
防冻液三年不换?冰点没变,保护可能已经“过期”

防冻液三年不换?冰点没变,保护可能已经“过期”

很多人觉得,防冻液只要不少、不脏、冬天不结冰,就一直能用。甚至有些“老司机”说:“我车六年没换防冻液,照样开得好好的。”但维修厂里因为水箱腐蚀、水泵漏液、暖风水箱堵塞而大修的发动机,不少恰恰是“长期不换防冻…

2026/7/29 22:51:41 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻