别再死记 LVS!一文吃透 LVS 负载均衡:发展史、4 种工作模式 + 完整实操命令

发布时间:2026/7/20 12:16:03

别再死记 LVS!一文吃透 LVS 负载均衡:发展史、4 种工作模式 + 完整实操命令
目录LVS是什么LVS发展史特点优势是什么LVS负载均衡四种工作模式LVS-NATLVS-DR生产环境最常用LVS-TUNLVS-FullNAT内核2.6.28新增快速记忆特点小口诀LVS基本操作规划安排开始创建集群查看开始增加服务器删除集群及服务器查看规则查看连接情况保存规则真正的保存规则到相应文件清空规则重启自动加载LVS是什么LVS(Linux Virtual Server,linu虚拟服务器)是一个开源的负载均衡软件项目主要用于Linux内核中实现网络服务的负载均衡和高可用性。它由章文嵩博士于 1998 年启动作为一个免费开源项目旨在通过集群技术构建高性能、高可用的服务器系统。LVS的出现是为了解决这些问题通过IP负载均衡技术将流量分发到多个后端服务器从而实现可扩展的网络服务。项目早期聚焦于Layer 4交换传输层负载均衡并逐步集成到Linux内核中成为Red Hat等企业级发行版的标准组件。如今LVS已经被广泛应用于大型网站作为高流量负载均衡器。LVS发展史1998年5月LVS第一个版本发布Linux kernel 2.0 上的第一个patch只支持VS/NAT实现round-robin调度算法。1998年11月实现了VS/IPTunneling机制。1999年5月实现了VS/Direct Routing机制移植到Linux kernel 2.2。2000年5月开始移植到Linux Kernel 2.4。2002年9月份开始移植到 linux kernel 2.5。2003年10月收录到Linux Kernel 2.5开发版。2003年11月Linux Kernel 2.4.23 包含LVS。2003年12月Linux Kernel 2.6.0 包含LVS。2008年11月Google工程师帮着实现了IPv6支持。2010年2月实现了SCTP传输层协议支持。特点优势是什么LVS的核心优势在于其高效、可靠和开源特性主要用于构建大规模、可拓展性的服务器集群适用于需要成本效益高、性能优越的负载均衡场景尤其在云计算和大数据时代它已成为构建弹性基础设施的首选工具。以下是LVS的优势均在均衡和高可用性LVS通过IP负载均衡如NAT、DR和TUN等模式将客户请求分发到多台真实服务器Real servers防止单台服务器过载。同时它支持主备路由器配置确保系统在故障时无缝切换避免服务被断。高性能和可拓展性作为内核级实现LVS处理Layer 4流量时开销低支持数千并发连接适用于Web、邮件、数据库等高负载场景。它能轻松拓展到数据中心级别甚至跨数据中心均衡流量。开源免费且灵活LVS是免费开源软件不需要昂贵的硬件负载均衡器如F5或Cisco可以通过软件配置实现复杂功能。同时它于keepalived等工具结合使用便于监控服务健康状态。安全性于兼容性LVS支持服务健康检查如Pulse能自动剔除故障服务器并兼容多种网络协议和环境如趋势科技的负载均衡配置。LVS负载均衡四种工作模式LVS一共4种工作模式其中前三种最常用。LVS-NAT(network address translation) 地址转换模式使用频率高。LVS-DR(direct routing)直接路由模式使用频率最高。LVS-TUN(IP tunneling) 隧道模式使用频率低。LVS-FullNAT(完全NAT模式)使用频率很低。在理解这四种原理之前我们先了解基础角色术语全称中文含义出现位置作用说明CIPClient IP客户端 IP客户端服务请求的来源地址。VIPVirtual IP虚拟服务 IPLVS 调度器对外外部访问 LVS 的入口 IP代表整个集群服务。VS / LBVirtual Server虚拟服务器LVS 调度器VIP 端口组合LVS 对外暴露的“虚拟服务实例”。DIPDirector IP调度器内网 IPLVS 调度器对内LVS 与真实服务器之间通信的 IP。RIPReal Server IP真实服务器 IPRS 节点RS 接收 LVS 转发请求的 IP。RSReal Server真实服务器应用服务器真正处理业务请求并返回响应。LVS-NAT核心原理数据包进出都经过 VS双向流量都由 VS 转发靠修改 IP 地址实现负载。1.客户端请求 CIP → VIP 到达 VS2.VS 修改目标 IP把 VIP 换成某一台 RIP转发给对应 RS3.RS 收到请求回包时目标 IP 是 CIP源 IP 是 RIP4.回包必须经过 VSVS 修改源 IP把 RIP 换回 VIP再发给客户端。关键特点1.RS 网关必须指向 DIP调度器内网 IP否则回包绕开 VS 直接丢包2.所有流量双向经过 VSVS 网卡带宽是瓶颈3.RS 和 VS 必须在同一网段4.配置简单支持端口映射80→80805.适合中小规模集群并发量不高场景。LVS-DR生产环境最常用核心原理只改二层 MAC 地址三层 IP 全程不变只有入站流量走 VS出站流量 RS 直接回客户端客户端 CIP → VIP 请求到达 VSVS 只修改目标 MAC 地址替换为选中 RS 的 MAC三层 IPCIP/VIP完全不动RS 收到数据包本机配置了 VIPlo 网卡虚拟 IP识别数据包是发给自己RS 直接回包VIP → CIP不经过 VS走内网网关直达客户端。关键约束VS 和 所有 RS必须同网段RS 本地 lo 网卡绑定 VIP且关闭 ARP 响应防止 ARP 冲突客户端 ARP 广播抢到 RS 机器回包不经过 VS彻底解决 VS 带宽瓶颈性能极强不支持端口映射RS 端口必须和 VIP 访问端口一致。LVS-TUN核心原理1.客户端 CIP → VIP 到 VS2.VS 新建 IP 隧道头把原数据包整体封装外层目标 IP 为 RIP转发给 RS3.RS 解封装隧道取出原始请求包CIP→VIP4.RS 直接回复 VIP→CIP不经过 VS。关键特点1.VS 和 RS可以跨网段、跨机房、跨公网2.RS 内核必须开启 IPIP 隧道模块3.RS lo 网卡绑定 VIP关闭 ARP4.仅入站流量过 VS无带宽瓶颈。LVS-FullNAT内核2.6.28新增核心原理双向完整 NAT同时修改源 IP 目标 IP彻底打破同网段限制。1.客户端 CIP→VIP 到达 VS2.VS 修改两处目标 IPVIP → RIP源 IPCIP → DIP调度器内网 IP3.RS 收到请求看到来源是 DIP回包目标为 DIP4.回包回到 VS再次双向转换源 RIP→VIP目标 DIP→CIP发回客户端。关键特点1.VS 与 RS不需要同一网段无网段限制2.双向流量全部经过 VS带宽瓶颈和普通 NAT 一样3.RS 不需要配置 VIP无需处理 ARP配置最简单4.可以做端口映射。快速记忆特点小口诀DR只改MAC同网段性能天花版线上首选NAT:该目标IP双向过调度适合小规模TUNIP包套壳跨机房专用FullNAT双选全改IP无网段限制但性能最差。LVS基本操作规划安排LVS 192.168.57.100/24RS1 192.168.57.101/24 web1RS2 192.168.57.102/24 web2安装LVS操作yum install -y ipvsadmIpvsadm --helpecho hello 57.101 Nginx1 /usr/share/nginx/html/index.htmlecho hello 57.102 Nginx2 /usr/share/nginx/html/index.html两个都启动nginxsystemctl start nginxss -tunlp |grep nginxLVS访问web测试[rootLVS ~]# curl 192.168.57.101hello 57.101 Nginx1[rootLVS ~]# curl 192.168.57.102hello 57.102 Nginx2开始创建集群查看版本信息[rootLVS ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size4096)Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConnLVS默认模式DR默认算法WLC,这里换成rr[rootLVS ~]# ipvsadm -A -t 192.168.57.100:80 -s rr查看[rootLVS ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size4096)Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.57.100:80 rr开始增加服务器[rootLVS ~]# ipvsadm --add-server --tcp-service 192.168.57.100:80 --real-server 192.168.57.101:80 --masquerading[rootLVS ~]# ipvsadm --add-server --tcp-service 192.168.57.100:80 --real-server 192.168.57.102:80 --masquerading查看[rootLVS ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size4096)Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.57.100:80 rr- 192.168.57.101:80 Masq 1 0 0- 192.168.57.102:80 Masq 1 0 0删除集群及服务器[rootLVS ~]# ipvsadm -d -t 192.168.57.100:80 -r 192.168.57.101:80[rootLVS ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size4096)Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.57.100:80 rr- 192.168.57.102:80 Masq 1 0 0[rootLVS ~]#或者带全称[rootLVS ~]# ipvsadm --delete-server --tcp-service 192.168.57.100:80 --real-server 192.168.57.102:80查看规则[rootLVS ~]# ipvsadm -Ln还有其他语句但是我没有列出来或者查看文件[rootLVS ~]# cat /proc/net/ip_vsIP Virtual Server version 1.2.1 (size4096)Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConnTCP C0A83964:0050 rr- C0A83965:0050 Masq 1 0 0查看连接情况[rootLVS ~]# cat /proc/net/ip_vs_connPro FromIP FPrt ToIP TPrt DestIP DPrt State Expires PEName PEData保存规则注意默认规则是在内存中重启则清空打印规则不是真的保存展示[rootLVS ~]# ipvsadm-save-A -t LVS:http -s rr-a -t LVS:http -r 192.168.57.101:http -m -w 1-a -t LVS:http -r 192.168.57.102:http -m -w 1[rootLVS ~]# ipvsadm-save -n-A -t 192.168.57.100:80 -s rr-a -t 192.168.57.100:80 -r 192.168.57.101:80 -m -w 1-a -t 192.168.57.100:80 -r 192.168.57.102:80 -m -w 1真正的保存规则到相应文件[rootLVS ~]# ipvsadm-save -n ipvs1001.rules[rootLVS ~]# lsanaconda-ks.cfg ipvs1001.rules[rootLVS ~]# cat ipvs1001.rules-A -t 192.168.57.100:80 -s rr-a -t 192.168.57.100:80 -r 192.168.57.101:80 -m -w 1-a -t 192.168.57.100:80 -r 192.168.57.102:80 -m -w 1清空规则[rootLVS ~]# ipvsadm -C[rootLVS ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size4096)Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn导入规则[rootLVS ~]# ipvsadm-restore -n ipvs1001.rules[rootLVS ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size4096)Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.57.100:80 rr- 192.168.57.101:80 Masq 1 0 0- 192.168.57.102:80 Masq 1 0 0重启自动加载pvsadm服务自身参数配置不存转发规则 /etc/sysconfig/ipvsadm-configipvsadm.service默认读取/写入的配置文件 /etc/sysconfig/ipvsadm 这个文件不会自动生成需要手动执行保存命令否则文件是空 / 不存在[rootLVS ~]# ipvsadm-save -n /etc/sysconfig/ipvsadm[rootLVS ~]# cat /etc/sysconfig/ipvsadm-A -t 192.168.57.100:80 -s rr-a -t 192.168.57.100:80 -r 192.168.57.101:80 -m -w 1-a -t 192.168.57.100:80 -r 192.168.57.102:80 -m -w 1[rootLVS ~]# cat /etc/sysconfig/ipvsadm-configIPVS_MODULES_UNLOADyesIPVS_SAVE_ON_STOPyesIPVS_SAVE_ON_RESTARTyesIPVS_STATUS_NUMERICyes[rootLVS ~]# echo ipvsadm-restore /etc/sysconfig/ipvsadm /etc/rc.local[rootLVS ~]# chmod x /etc/rc.local

相关新闻

三步搞定Qwen3.6-27B无审查AI模型:小白也能懂的完整部署指南

三步搞定Qwen3.6-27B无审查AI模型:小白也能懂的完整部署指南

2026/7/20 12:16:03

三步搞定Qwen3.6-27B无审查AI模型:小白也能懂的完整部署指南 【免费下载链接】Qwen3.6-27B-Uncensored-HauhauCS-Balanced 项目地址: https://ai.gitcode.com/hf_mirrors/HauhauCS/Qwen3.6-27B-Uncensored-HauhauCS-Balanced Qwen3.6-27B-Uncensored-Hauhau…

OpenCore Legacy Patcher完整教程:五步让老Mac焕发新生

OpenCore Legacy Patcher完整教程:五步让老Mac焕发新生

2026/7/20 12:06:02

OpenCore Legacy Patcher完整教程:五步让老Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款强大的开源…

C++高性能计算:CPU/GPU协同编程七大实战模式解析

C++高性能计算:CPU/GPU协同编程七大实战模式解析

2026/7/20 12:06:02

1. 项目概述:从“各自为战”到“并肩作战”的算力革命作为一名在C高性能计算领域摸爬滚打了十几年的老兵,我亲眼见证了计算架构从单核CPU的“独奏”,到多核CPU的“交响”,再到如今CPU与GPU“协同作战”的深刻变革。最近刚结束的20…

800V平台新能源汽车充电模块技术解析

800V平台新能源汽车充电模块技术解析

2026/7/21 6:27:09

1. 800V平台新能源汽车充电技术解析 800V高压平台正在成为新能源汽车发展的主流趋势。相比传统400V系统,800V平台能显著降低充电时间——在相同功率下,电流减半意味着导线截面积可以缩小,线缆重量减轻约50%。这不仅提升了整车能效&#xff0c…

Linux whos命令详解:用户登录监控与管理

Linux whos命令详解:用户登录监控与管理

2026/7/21 6:27:09

1. whos命令概述与基本用法whos命令是Linux系统中用于显示当前登录用户信息的实用工具。与who、w等命令类似,它通过读取/var/run/utmp文件来获取用户登录数据。这个命令特别适合需要快速查看系统活跃用户情况的场景,比如服务器监控、多用户环境管理等。1…

vibe coding学习:如何vibe coding一个社区网站?

vibe coding学习:如何vibe coding一个社区网站?

2026/7/21 6:27:09

我决定用 vibe coding 的方式,给自己和几位设计师朋友做一个微型社区。这个社区里没有复杂的好友关系,只有一个干净的帖子流,一个收藏灵感的地方,还有一个被我用来快速访问常用设计资源的花猫导航(huamaodh.com&#x…

Linux服务器等保测评实战:SSH加固与密码策略配置指南

Linux服务器等保测评实战:SSH加固与密码策略配置指南

2026/7/21 6:27:09

1. 项目概述:为什么等保测评是Linux服务器的“必修课” 最近帮几个朋友的公司做服务器安全加固,无一例外都提到了“等保测评”这个事儿。说实话,刚开始接触等保(信息安全等级保护)的时候,我也觉得头大&…

UE5光照与阴影实战指南:从核心原理到性能优化

UE5光照与阴影实战指南:从核心原理到性能优化

2026/7/21 6:16:58

1. 项目概述:从“照亮”到“塑造”的视觉叙事 在Unreal Engine的世界里,光照与阴影从来不是简单的“开灯”和“关灯”。它们是你手中最强大的叙事工具,是塑造场景情绪、定义物体质感、引导玩家视线的核心画笔。很多刚接触UE的朋友&#xff0c…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/20 2:33:13

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

GraphRAG Local + Ollama:微软知识图谱本地化

GraphRAG Local + Ollama:微软知识图谱本地化

2026/7/21 0:06:35

普通 RAG 有个老毛病:你问它「这堆文档整体在讲什么」,它答不上来。因为它只会把问题切成向量,去几十个文本块里捞最相似的几段拼给模型看。可「整体讲什么」这种问题,答案根本不在任何单独一段里——它散在全篇的联系里。 微软的…

AI 数据产品化思考:让分析能力变成可售卖的数据服务

AI 数据产品化思考:让分析能力变成可售卖的数据服务

2026/7/21 0:06:35

AI 数据产品化思考:让分析能力变成可售卖的数据服务 大家好,我是朱大喜。这周一直在复盘具体的项目和技术,最后一篇聊点不一样的东西——数据产品化。做了这么多年数据分析,我发现一个规律:能卖出去的从来不是"分…

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

2026/7/21 0:06:35

本文完整呈现了企业级 AI Coding 落地的核心方法论:从 Harness 工程的微观/宏观定义,到 Loop 工程的六大构建模块,再到基于 SDD(规范驱动开发)的工程化落地路径。干货较多,建议收藏细读。 我从 22 年开始就…