LVS(Linux Virtual Server)全面解析与实验手册:集群概念、工作模式与调度算法

发布时间:2026/7/29 22:12:45

LVS(Linux Virtual Server)全面解析与实验手册:集群概念、工作模式与调度算法 摘要本文深入解析 LVSLinux Virtual Server负载均衡技术涵盖集群核心概念、三大分类、四种工作模式NAT、DR、TUN、FULLNAT及十三种调度算法。通过详细的实验手册手把手指导多端口轮询FWM和会话粘滞Redis持久连接的配置。每条命令均附带详细注释可直接复制执行助您从理论到实践全面掌握 LVS。一、什么是集群Cluster集群Cluster是一组相互独立的计算机节点通过高速网络互联对外表现为一个单一系统共同对外提供服务。其核心思想是将多台计算机组合起来以较低的成本获得与大型主机相当的性能和可用性。1.1 核心概念Scale Up纵向扩展提升单台服务器的硬件配置CPU、内存、磁盘成本高、有上限存在单点故障SPOF。Scale Out横向扩展增加服务器数量通过集群技术协同工作成本低、弹性好是高并发场景的标准做法。集群的关键在于“协同”多台机器不是简单堆叠而是通过调度器和统一入口对外提供透明服务。1.2 集群核心特征特征说明单一系统映像用户看到的是一个整体入口VIP不需要关心背后有多少台服务器。高可用性单节点故障不影响整体服务衡量标准 A MTBF/(MTBFMTTR)目标 99.999%。可扩展性通过增加节点水平扩展Scale Out性能线性增长。负载均衡请求由调度器按算法智能分发到各节点避免单点过载。透明性客户端无需修改代码后端 RS 对用户完全透明。1.3 集群架构示意客户端请求 (CIP → VIP) │ ┌──────▼──────┐ │ 负载均衡器 │ ← Director / Load Balancer │ (LVS) │ 对外暴露 VIP对内分发请求 └──────┬──────┘ ┌───────┼───────┐ ┌──▼──┐ ┌──▼──┐ ┌──▼──┐ │RS 1 │ │RS 2 │ │RS 3 │ ← Real Server真实服务器 │Web │ │Web │ │Web │ 处理实际业务请求 └──┬──┘ └──┬──┘ └──┬──┘ └───────┼───────┘ ┌──────▼──────┐ │ 共享存储 │ ← NFS / Ceph / GlusterFS / FastDFS └─────────────┘ 保障数据一致性二、集群分类集群按功能目标分为三大类实际生产环境中通常混合使用。2.1 负载均衡集群LB — Load Balancing特性说明目标将大量并发请求分发到多台服务器提升系统吞吐量。典型实现LVS四层、Nginx七层、HAProxy四/七层、F5硬件。工作层次四层传输层IP:Port或七层应用层HTTP/HTTPS。适用场景Web服务、API网关、DNS解析、邮件服务。核心价值用多台廉价服务器替代昂贵的大型机成本低且弹性好。2.2 高可用集群HA — High Availability特性说明目标保证服务连续性单点故障(SPOF)时自动切换到备用节点。典型实现KeepalivedVRRP协议、Heartbeat、Corosync Pacemaker。适用场景数据库主备(Master-Slave)、核心服务冗余、VIP漂移。衡量指标可用性 A MTBF/(MTBFMTTR)常见目标 99.9% ~ 99.999%5个9。SLAService Level Agreement服务等级协议定义可用性目标。故障切换时间Keepalived 通常 1~3 秒完成 VIP 漂移。2.3 高性能计算集群HPC — High Performance Computing特性说明目标将大规模计算任务拆分到多节点并行处理聚合算力。典型实现MPI消息传递接口、Hadoop MapReduce、Apache Spark。适用场景科学计算、气象预测、基因分析、AI 大模型训练。分布式存储Ceph、GlusterFS、FastDFS、MogileFS、Hadoop HDFS。数据处理Hadoop MapReduce、Apache Spark内存计算。2.4 三类集群对比LB (负载均衡) HA (高可用) HPC (高性能) ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 分发用户请求 │ │ 主备故障切换 │ │ 并行拆分计算 │ │ 横向扩展容量 │ │ 服务永不中断 │ │ 聚合算力求解 │ │ 对外一个入口 │ │ VIP 自动漂移 │ │ 任务调度分发 │ │ LVS/Nginx │ │ Keepalived │ │ MPI/Spark │ └──────────────┘ └──────────────┘ └──────────────┘★ 生产环境标准组合LVS四层LB KeepalivedHAVIP高可用 Nginx七层代理 RedisSession共享。三、LVS 的作用LVSLinux Virtual Server是章文嵩博士于 1998 年开发的开源负载均衡项目已从 Linux 2.4 内核开始集成到内核空间。官网http://www.linuxvirtualserver.org/。3.1 LVS 核心术语缩写全称含义VSVirtual Server虚拟服务器即 LVS 调度器本身RSReal Server真实服务器后端处理请求的服务器CIPClient IP客户端 IP 地址发起请求的源地址VIPVirtual IP虚拟 IPVS 对外暴露的 IP客户端访问的目标地址DIPDirector IP调度器 IPVS 与 RS 通信时使用的内网 IPRIPReal Server IP真实服务器 IPRS 自身的 IP 地址3.2 LVS 数据流模型数据包流转路径CIP (客户端IP) ──请求── VIP (虚拟IP) 调度 DIP (调度器内网IP) ──转发── RIP (真实服务器IP)通俗理解用户只知道 VIP也只访问 VIP。VIP 像公司的总机号码DIP/RIP 像内部员工的分机号。LVS 的工作就是接到总机来电后根据策略转给合适的分机。3.3 LVS 核心定位维度说明工作空间内核空间kernel space基于 Netfilter 框架处理效率极高。工作层次四层传输层基于 IP:Port 调度不解析 HTTP 等七层协议。核心模块ip_vs 内核模块通过 ipvsadm 用户态工具管理。性能百万级并发连接DR 模式下 CPU 占用近乎为零。转发方式只做分发不做代理DR/TUN或做简单 NAT 转换NAT/FULLNAT。3.4 LVS 在 Netfilter 框架中的位置数据包进入后经过 Netfilter 的 5 个钩子点PREROUTING → INPUT → FORWARD → OUTPUT → POSTROUTINGLVS 工作在 INPUT 链上VIP 的数据包到达 PREROUTING → 路由判断是本机 → 进入 INPUT。ip_vs 模块在 INPUT 链上拦截数据包根据调度规则修改目标地址。NAT 模式修改后的包走 FORWARD → POSTROUTING 发往 RS。DR 模式修改 MAC 地址后直接通过交换机发往 RS。四、LVS 的 4 种工作模式及原理LVS 的四种工作模式按数据包修改的层次不同分为lvs-nat修改 IP 层DNAT、lvs-dr修改 MAC 层、lvs-tunIP 隧道封装、lvs-fullnat双向全 NAT。4.1 NAT 模式Network Address Translation【原理】LVS 修改数据包的目标 IP 地址DNAT将 VIP 转换为选中 RS 的 RIP。RS 处理完毕后响应必须原路返回 Director再由 Director 做 SNAT 还原源 IP 后返回客户端。数据包流转NAT 模式┌────────┐ ①请求(CIP→VIP) ┌────────────┐ ②DNAT(VIP→RIP) ┌──────────┐ │ Client │ ──────────────────► │ Director │ ──────────────────► │ Real Srv │ │ CIP:X │ │ VIP/RIP │ │ RIP │ │ │ ◄────────────────── │ 改目标IP │ ◄────────────────── │ │ └────────┘ ④响应(VIP→CIP) └────────────┘ ③响应(RIP→CIP) └──────────┘ 由Director SNAT还原 RS的默认网关必须是Director项目说明修改内容目标 IP 地址入站做 DNAT 源 IP 地址出站做 SNATRS 默认网关必须指向 Director 的 DIP192.168.0.100否则响应无法原路返回Director 压力大——进出双向流量都要经过 Director网卡带宽是瓶颈支持端口映射✅ 支持例如 VIP:80 → RS:8080端口可以不同RS 规模上限10~20 台受 Director 网卡吞吐量限制RS 操作系统任意 OSLinux / Windows / …对 RS 完全透明跨网段不支持——RS 必须与 Director 网络可达且同在一个广播域Director 要求必须开启 IP 转发net.ipv4.ip_forward 1★ NAT 模式的工作流程逐步详解客户端发送请求CIP → VIP:PortDirector 收到后做 DNAT将目标 IP 从 VIP 改为选中 RS 的 RIPRS 收到请求处理后生成响应RIP → CIP响应必须经过 Director因 RS 默认网关指向 DirectorDirector 做 SNAT将源 IP 从 RIP 还原为 VIP返回给客户端六、LVS NAT模式实验配置以下为LVS NAT模式实验环境配置的详细命令每条命令均附带注释说明可直接在Xshell中执行。6.1 环境说明主机网络模式功能是否设定网关lvsnat-172.25.254.100hostonly-192.168.0.100vs虚拟服务器/调度器-rs1hostonly-192.168.0.10rs真实服务器1192.168.0.100rs2hostonly-192.168.0.20rs真实服务器2192.168.0.1006.2 环境设定操作6.2.1 基本环境配置lvs主机网络配置eth0 - nat模式 - 172.25.254.100eth1 - hostonly模式 - 192.168.0.100rs1主机网络配置eth0 - hostonly模式 - 192.168.0.10注意使用脚本设定IP时不设定网关后续手动设定rs2主机网络配置eth0 - hostonly模式 - 192.168.0.20注意使用脚本设定IP时不设定网关后续手动设定6.2.2 设定RS1和RS2的网关在RS1主机上执行以下命令# 修改eth0网卡的网关为192.168.0.100指向LVS的DIP [rootrs1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 重新加载网络连接配置 [rootrs1 ~]# nmcli connection reload 激活eth0网络连接 [rootrs1 ~]# nmcli connection up eth0 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/4 查看路由表确认网关设置生效 [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在RS2主机上执行以下命令# 修改eth0网卡的网关为192.168.0.100指向LVS的DIP [rootrs2 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100 重新加载网络连接配置 [rootrs2 ~]# nmcli connection reload 激活eth0网络连接 [rootrs2 ~]# nmcli connection up eth0 连接已成功激活D-Bus 活动路径/org/freedesktop/NetworkManager/ActiveConnection/4 查看路由表确认网关设置生效 [rootrs2 ~]# 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 eth06.2.3 环境验证配置效果验证所有IP之间可以直接ping通RS1和RS2的默认网关都指向LVS的DIP192.168.0.100LVS可以同时访问nat网络172.25.254.0/24和hostonly网络192.168.0.0/24网络连通性测试命令# 从LVS ping RS1 [rootlvs ~]# ping 192.168.0.10 从LVS ping RS2 [rootlvs ~]# ping 192.168.0.20 从RS1 ping LVS [rootrs1 ~]# ping 192.168.0.100 从RS2 ping LVS [rootrs2 ~]# ping 192.168.0.100 从RS1 ping RS2通过LVS网关转发 [rootrs1 ~]# ping 192.168.0.20 从RS2 ping RS1通过LVS网关转发 [rootrs2 ~]# ping 192.168.0.10注意事项NAT模式下RS的默认网关必须指向Director的DIP否则响应包无法返回确保所有主机的防火墙已关闭或配置了相应规则LVS主机需要开启IP转发功能sysctl -w net.ipv4.ip_forward1建议将IP转发配置写入/etc/sysctl.conf文件永久生效五、LVS 调度算法LVS 内置了 13 种调度算法可根据业务场景灵活选择。算法缩写说明适用场景轮询rr按顺序轮流分配请求所有 RS 性能相近加权轮询wrr按权重比例分配请求RS 性能差异明显最少连接lc将请求发给当前连接数最少的 RS长连接服务如数据库加权最少连接wlc考虑权重的最少连接默认算法通用场景性能最佳基于局部性的最少连接lblc考虑目标 IP 的局部性相同目标 IP 发往同一 RS缓存服务器带复制的基于局部性的最少连接lblcrlblc 的改进版允许复制到负载较轻的 RS缓存服务器集群目标地址散列dh根据目标 IP 的哈希值选择 RS反向代理缓存源地址散列sh根据源 IP 的哈希值选择 RS会话保持

相关新闻