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

lvs项目中的所有知识点总结

目录

一,什么是集群(Cluster)

二、集群分类

三、LVS 的作用

四,LVS 四种工作模式及原理

1. NAT 模式(VS-NAT)

2. DR 模式(Direct Routing,直接路由,生产最常用)

4. FULLNAT 模式(完整 NAT,阿里扩展模式)

五、LVS 的 13 种调度算法

六、LVS 多端口轮询问题 & 解决方案

1,问题现象

2,解决方案

七、会话粘滞(Session Stickiness)解决方案

1,问题描述

2,解决方案:

方案 1:持久连接(Persistent)

方案 2:源地址散列算法(SH)

方案 3:在应用层维持会话(如 cookie)

方案 4:结合 Keepalived 的持久性

3,完整实践步骤(以 DR 模式部署 HTTP 负载均衡为例)

4,拓扑图解(DR 模式)

八、总结


一,什么是集群(Cluster)

集群是指将多台独立的计算机(节点)通过网络连接,协同完成特定任务,对外表现为一个统一的服务实体。其核心目标是:

  • 高可用性(HA):单点故障不影响整体服务。

  • 高性能(Performance):聚合多机算力,提升吞吐量。

  • 可伸缩性(Scalability):按需动态增减节点。

二、集群分类

类别英文目的典型应用
负载均衡集群LB(Load Balancing)将请求均匀分散到多台后端服务器,提高并发能力LVS、Nginx、HAProxy
高可用性集群HA(High Availability)保证服务不间断,故障时自动切换Keepalived、Heartbeat
高性能计算集群HPC(High Performance Computing)并行处理大规模计算任务MPI、Slurm
存储集群Storage Cluster提供共享存储或分布式文件系统Ceph、GlusterFS

LVS 属于负载均衡集群,常与 HA 结合(如 Keepalived)实现高可用负载均衡。

三、LVS 的作用

LVS(Linux Virtual Server)是 Linux 内核内置的四层(传输层)负载均衡器。它实现:

  • 请求分发:根据调度算法将客户端请求转发给后端真实服务器(Real Server,RS)。

  • 服务屏蔽:后端 RS 对客户端透明,客户端只与 LVS 的虚拟 IP(VIP)通信。

  • 可扩展性:支持海量并发连接(工作于内核态,性能极高)。

  • 健康检查:通常配合 keepalived 自动剔除故障 RS。

四,LVS 四种工作模式及原理

1. NAT 模式(VS-NAT)

原理:调度器收到请求,修改数据包目标 IP / 端口为 RS 的 RIP + 端口;RS 响应数据包原路返回调度器,调度器修改源 IP 后发回客户端。

  • 数据流:客户端 → DS(DNAT)→ RS → DS(SNAT)→ 客户端
  • 特点:支持端口映射;请求、响应全部经过调度器;RS 网关必须指向 DIP;性能最差。简易配置步骤
    # 1.开启内核转发 echo 1 > /proc/sys/net/ipv4/ip_forward # 2.创建虚拟服务 ipvsadm -A -t 192.168.1.100:80 -s rr # 3.添加后端RS(NAT模式 -m) ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.10:80 -m ipvsadm -a -t 192.168.1.100:80 -r 10.0.0.11:80 -m

    2. DR 模式(Direct Routing,直接路由,生产最常用)

    原理:调度器仅修改二层 MAC 地址,目标 MAC 改为 RS 网卡 MAC;IP 头不变。RS 收到数据包处理后,直接返回客户端,响应报文不再经过调度器

  • 数据流:客户端 → DS (改 MAC) → RS → 客户端
  • 要求:DS 与 RS 在同一广播域;RS 本地 lo 网卡绑定 VIP(32 位掩码),抑制 ARP 响应;性能最优。简易配置步骤
# DS配置 ipvsadm -A -t 192.168.1.100:80 -s wrr ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -g # RS配置(lo绑定VIP,抑制arp) ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

3. TUN 模式(VS-TUN,IP 隧道模式)

原理:调度器不修改原始数据包,在外层新增一层 IP 隧道头部,封装数据包转发给 RS;RS 解封装处理,直接响应客户端。

数据流:客户端 → DS (IP 封装) → RS (解包) → 客户端 特点:DS 和 RS 可以跨网段;RS 需要支持 IPIP 隧道协议;多用于跨机房场景。

4. FULLNAT 模式(完整 NAT,阿里扩展模式)

原理:同时修改源 IP、目标 IP。客户端 CIP→DIP,VIP→RIP;响应报文 RS→DIP,DIP→CIP。

模式修改内容响应路径跨网段性能
NAT目标 IP + 端口经过 DS支持
DR目标 MAC直达客户端不支持极高
TUNIP 封装包头直达客户端支持
FullNAT源 IP + 目标 IP经过 DS支持
  • 请求、响应均经过调度器;支持跨网段部署;区别于标准 NAT,源地址也会转换;需要内核补丁 / 新版 ipvs 支持。

五、LVS 的 13 种调度算法

(实际内核支持 10 种,此处按常见分类详列)

内核中 IPVS 支持10 种,但许多资料扩展列举至 13 种(含历史版本或组合变体)。下面一并列出,并注明内核标准支持。

序号算法名称缩写说明内核支持
1轮询RR依次轮流分配,不考虑权重
2加权轮询WRR按权重比例轮询
3最少连接LC分配给当前连接数最少的 RS
4加权最少连接WLC按权重和连接数综合计算(默认算法)
5基于局部性的最少连接LBLC针对目标 IP 的负载均衡,适用于缓存集群
6带复制的基于局部性最少连接LBLCRLBLC 的改进,复制热门请求到多个节点
7目标地址散列DH根据目标 IP 的哈希值选择 RS,用于正向代理
8源地址散列SH根据源 IP 的哈希值选择 RS,用于会话粘滞(非持久)
9最短预期延迟SED考虑权重和当前连接,选出期望延迟最小的节点(算法:连接数/权重)
10永不排队NQ改进的 SED,若有空闲节点则直接分配,否则按 SED 选择
11随机RANDOM随机选择(部分早期版本支持,现已被更优算法替代)
12加权随机WRANDOM带权重的随机选择(同上)
13最小连接调度(增强型)-某些资料将 LC 和 WLC 的变体单独列出,实际与 LC/WLC 重复

说明:当前 Linux 内核(4.x+)仅支持前 10 种。若作业要求“13种”,可按上述列表划分,并注明其中 3 种为历史或变体,核心仍是 10 种标准算法。

六、LVS 多端口轮询问题 & 解决方案

1,问题现象

默认情况下,LVS 把VIP:80VIP:443当成两个独立虚拟服务,各自独立调度。 用户访问http(80)调度到 RS1,跳转https(443)被调度到 RS2,会话丢失。

2,解决方案

防火墙标记 fwmark(推荐方案)

原理:利用 iptables 将 VIP 多个端口数据包打上相同 mark 标记,ipvs 基于标记统一调度,不再区分端口。

# 1. iptables给80、443流量统一打上标记666 iptables -t mangle -A PREROUTING -d 192.168.1.100 -p tcp --dport 80 -j MARK --set-mark 666 iptables -t mangle -A PREROUTING -d 192.168.1.100 -p tcp --dport 443 -j MARK --set-mark 666 # 2. ipvs基于标记创建虚拟服务(不再指定端口) ipvsadm -A -f 666 -s wrr ipvsadm -a -f 666 -r 192.168.1.20 -g ipvsadm -a -f 666 -r 192.168.1.21 -g

✅ 效果:同一客户端访问 80/443,统一纳入同一调度规则,保证分配到同一 RS。

七、会话粘滞(Session Stickiness)解决方案

1,问题描述

无状态调度算法(如 RR)会将同一用户的不同请求分到不同 RS,若 RS 维护了用户会话(Session)数据,则会导致会话丢失。

2,解决方案

方案 1:持久连接(Persistent)

与多端口方案相同,使用-p选项,同一源 IP 的所有请求在超时内固定到同一 RS。

ipvsadm -A -t 192.168.1.100:80 -p 3600 -s rr

方案 2:源地址散列算法(SH)

根据源 IP 的哈希值直接选择固定 RS,无需超时,但算法固定,无法按权重调整。

ipvsadm -A -t 192.168.1.100:80 -s sh

方案 3:在应用层维持会话(如 cookie)

后端 RS 通过 cookie 或 URL 重写传递会话标识,但 LVS 不干预,需 RS 共享会话存储(如 Redis)或保持节点间同步。

方案 4:结合 Keepalived 的持久性

Keepalived 配置中可设置persistence_timeout,与ipvsadm -p等效。

推荐

  • 短时粘滞(如购物车)使用持久连接,超时设 3600 秒。

  • 若需长期固定,则使用 SH 算法,但注意权重配置受限。

3,完整实践步骤(以 DR 模式部署 HTTP 负载均衡为例)

# 环境规划 # LVS: 192.168.1.100 (VIP: 192.168.1.200) # RS1: 192.168.1.10 (绑定VIP: lo:0) # RS2: 192.168.1.11 (绑定VIP: lo:0) # ---------- 步骤1: 在 LVS 上配置 VIP ---------- ifconfig eth0:0 192.168.1.200 netmask 255.255.255.255 up route add -host 192.168.1.200 dev eth0:0 # ---------- 步骤2: 在 LVS 上开启转发 ---------- echo 1 > /proc/sys/net/ipv4/ip_forward # ---------- 步骤3: 在 RS 上绑定 VIP 并抑制 ARP ---------- # 编辑 /etc/sysctl.conf 添加: net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 # 应用: sysctl -p # 绑定 VIP 到 lo:0 ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 up # ---------- 步骤4: 在 LVS 上添加虚拟服务和 RS ---------- # 使用 WLC 算法(默认),并启用持久连接(粘滞) ipvsadm -A -t 192.168.1.200:80 -p 600 -s wlc ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.10:80 -g -w 1 ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.11:80 -g -w 2 # 查看状态 ipvsadm -Ln # ---------- 步骤5: 测试 ---------- # 客户端访问 http://192.168.1.200 ,多次刷新,观察会话保持和负载分布

4,拓扑图解(DR 模式)

+-----------------+
| 客户端 |
| (CIP) |
+--------+--------+
|
| 请求: VIP=192.168.1.200
|
+--------v--------+ +--------------------+
| LVS (Director) | | VIP: 192.168.1.200|
| eth0: 192.168.1.100 | | 仅响应ARP请求 |
| eth0:0 VIP | +--------------------+
+--------+--------+ / \
| (MAC改写, 发送至RS) / \
| +------v-----+ +------v-----+
+------------->| RS1 | | RS2 |
| 192.168.1.10| |192.168.1.11 |
| lo:0 VIP | | lo:0 VIP |
+------------+ +------------+
| |
+----直接响应--------+
|
+-----v-----+
| 客户端 |
+-----------+

八、总结

知识点核心要点
集群多节点协同,对外单一映像
分类LB、HA、HPC、存储
LVS作用四层负载均衡,高性能、透明
四种模式NAT(改IP)、DR(改MAC)、TUN(隧道)、FULLNAT(双向NAT)
调度算法内核支持10种,主要用 WLC、RR、SH 等
多端口问题持久连接 + 协议辅助模块(如 ip_vs_ftp)
会话粘滞持久连接 或 SH 算法,或结合共享存储
http://www.jsqmd.com/news/1291061/

相关文章:

  • SpringBoot+Vue构建超市管理系统的架构设计与实践
  • 多账号运营怎么选IP才能避免被平台检测到关联?实测干货指引
  • League Akari助手:英雄联盟玩家的终极效率工具指南
  • GPT 5.6场景自适应能力解析:从技术原理到工作流集成实战
  • 2026这6款硬核降AI率平台大起底,一键让AIGC率直逼绝对安全线!
  • 告别机翻病句[特殊字符]OKBIYE学术外文翻译才是论文刚需神器
  • 2026年高纯特种单体丙烯酸异丁酯(IBA)市场供需与国产替代技术白皮书
  • 答辩PPT救星✨10分钟搞定学术汇报!AI一键出片太绝了
  • 运维转大模型:把方案拆到可执行
  • 为什么GPT-4 Turbo仍需人工干预第2步?揭秘头部AI团队正在封测的分步执行自校验协议(限内测白名单)
  • LangGraph框架:构建高效AI Agent系统的核心技术解析
  • Unity VFX Graph核心技巧:从节点操作到GPU特效优化实战
  • Bebas Neue:当几何美学遇见开源自由——一个字体设计的革命性实验
  • Agent 设计模式终极整合:六大模式合一,一套 Java 框架从开发到生产部署
  • 基于OSM路网与ArcGIS Pro的交通分析小区自动化生成方法
  • 如果 iPhone 丢失或被盗,如何远程擦除 iPhone?
  • 35B大模型16GB显存部署对比:Ornith与Qwen实测指南
  • 别再用普通翻译写论文[特殊字符]OKBIYE学术翻译才是正确打开方式
  • 告别论文内耗✨一个OKBIYE搞定毕业全流程
  • ESP-IDF保姆级入门06|I2C通信详解 + 0.96寸OLED屏幕驱动实战:显示文字_数字_动态数据(零基础可复现)
  • AI合同模板生成实战手册:从零搭建企业级智能合同工厂,7天上线交付
  • 渗透测试效率倍增器:2026年十大必备安全工具深度评测与进阶用法(附一键安装脚本)
  • 电子系统设计实战:从硬件到Windows客户端软件开发全流程解析
  • PyTorch深度学习入门:从张量、自动微分到完整训练流程实战
  • Python位运算实战:左移右移核心原理与高效应用
  • AI 与 BI 的融合路径:传统看板被自然语言查询取代还要多久
  • RAG与Agentic RAG技术对比与应用指南
  • 3步解锁英雄联盟极致体验:League Akari的智能本地化解决方案
  • 计算机保研夏令营申请策略:从海投到精准投递的实战复盘
  • 开题不用熬夜硬凑✨OKBIYE开题功能真的太贴合高校规范了