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

LVS三种模式及调度算法解析

一、LVS 三种工作模式

1. NAT 模式(Network Address Translation)

工作原理
客户端请求先到达 LVS 调度器(Director),调度器修改目标 IP 为后端某台 Real Server 的 IP,并做 DNAT;Real Server 处理完请求后,把响应包发回给调度器,调度器再做 SNAT 把源 IP 改回 VIP 后返回给客户端。所有流量(请求+响应)都经过调度器

网络拓扑

  • 所有 Real Server 和 Director 在同一个二层网络(如同一个 VLAN)。
  • Real Server 默认网关指向 Director。

优点

  • 配置简单,对 RS 无特殊要求(不需要改内核参数或路由)。
  • 支持端口转换(比如 VIP:80 → RS:8080)。

缺点

  • 调度器成为性能瓶颈(双向流量都要过它)。
  • 扩展性差,一般只适用于后端 RS 数量 ≤ 10 的小规模场景。

适用场景
测试环境、小流量业务、需要端口映射的场景(比如旧系统改造)。


2. DR 模式(Direct Routing)

工作原理
客户端请求到达 Director,Director 通过修改 MAC 地址(不改 IP),将帧直接转发给选定的 Real Server。RS 必须配置 VIP(通常绑在 lo 接口上),并抑制 ARP 响应。响应流量直接从 RS 返回客户端,不经过 Director

网络拓扑

  • Director 和所有 RS 必须在同一个广播域(二层可达)。
  • VIP 在 Director 和所有 RS 上都要配置(RS 上一般配在 lo:0)。
  • RS 的默认网关是正常出口网关,不是 Director。

优点

  • 性能极高,Director 只处理入向流量,出向直通。
  • 扩展性好,可支撑成百上千台 RS。

缺点

  • 要求严格二层同网段,跨机房部署困难。
  • 不支持端口转换(VIP 端口必须和 RS 端口一致)。
  • 需要在 RS 上做 ARP 抑制(arp_ignore=1, arp_announce=2)。

适用场景
这是我们在生产中最常用的模式,尤其适合高并发、低延迟的 Web 服务、API 网关等。


3. TUN 模式(IP Tunneling)

工作原理
Director 将客户端请求封装在新的 IP 包中(IP-in-IP),发送给远端的 Real Server。RS 解封装后处理请求,响应直接返回客户端。响应也不经过 Director

网络拓扑

  • Director 和 RS 可以不在同一机房,只要三层互通即可。
  • RS 必须支持 IP 隧道(加载 ipip 模块),并配置 VIP。

优点

  • 支持跨机房部署,适合异地多活架构。
  • Director 只处理入向流量,性能较好。

缺点

  • 配置复杂,需维护隧道。
  • 包头增加 20 字节,MTU 需要调整避免分片。
  • 对 RS 内核有要求(需支持 IPIP)。

适用场景
我们用在跨 AZ 或同城双活的场景,比如灾备流量调度。但因为运维成本高,如果不是必须跨三层,一般优先选 DR。


二、LVS 调度算法

LVS 内核模块 IPVS 支持多种调度策略,核心就两类:静态(轮询类)和动态(连接数类)。

算法特点适用场景
rr(Round Robin)轮询,依次分配后端服务器性能一致,且请求处理时间相近
wrr(Weighted RR)加权轮询,按权重分配后端服务器性能不均(比如新旧混部)
lc(Least Connections)谁当前连接数少就分给谁请求处理时间差异大(如文件上传/下载混合)
wlc(Weighted LC)加权最少连接,兼顾性能和负载生产最常用,适应性强,推荐默认使用
lblc / lblcr基于本地最少连接(带缓存亲和)适用于 HTTP 缓存集群,但我们基本不用
sh(Source Hashing)源 IP 哈希,实现会话保持需要客户端始终打到同一 RS(但更推荐用应用层 sticky session)

补充:我们线上几乎全部用 wlc,因为它能自动适应不同规格机器 + 动态负载,比 rr 更智能,比 lc 考虑了机器能力差异。


三、ipvsadm 的作用和常用命令

作用
ipvsadm 是用户态工具,用于管理内核中的 IPVS 表(类似 iptables 管理 netfilter)。所有 LVS 规则最终都通过它写入内核。

常用命令

# 查看当前 VS 和 RS 列表
ipvsadm -ln# 添加一个虚拟服务(DR 模式,wlc)
ipvsadm -A -t 10.0.0.100:80 -s wlc# 添加后端真实服务器
ipvsadm -a -t 10.0.0.100:80 -r 10.0.1.10:80 -g  # -g 表示 DR 模式
ipvsadm -a -t 10.0.0.100:80 -r 10.0.1.11:80 -g# 删除虚拟服务(会连带删除所有 RS)
ipvsadm -D -t 10.0.0.100:80# 清空所有规则
ipvsadm -C# 保存规则(重启后失效,需配合脚本持久化)
ipvsadm-save > /etc/sysconfig/ipvsadm

关键选项说明

  • -A:Add virtual service
  • -a:Add real server
  • -t:TCP 服务(-u 是 UDP)
  • -s:调度算法
  • -r:real server 地址
  • -g:DR 模式(-m 是 NAT,-i 是 TUN)

注意:ipvsadm 本身不持久化规则,重启后丢失。我们在线上都是通过 Ansible + systemd 服务启动时自动加载规则,或者用 keepalived 自动管理(更常见)。


总结一下:

  • 小规模、要端口映射 → NAT
  • 同机房、高性能 → DR(首选)
  • 跨机房 → TUN
  • 调度算法首选 wlc
  • ipvsadm 是操作 IPVS 的唯一标准工具,但生产一般配合 keepalived 使用
http://www.dtcms.com/a/577564.html

相关文章:

  • MySql 9.5.0(2025)-Windows安装步骤
  • 查看 MySQL 数据库里的所有信息,包括表结构、数据内容
  • Rocky10 使用kubeadm 安装k8s 单节点
  • K8s 中的Serviceaccount
  • MySQL 事务的两种使用方式
  • 【MySQL 进阶】高性能优化
  • 如何做静态页网站wordpress swf 上传
  • Dotnet-Dapper的用法
  • 深入理解 Spring Boot 中的数据库迁移:Flyway 与 Liquibase 实战指南
  • 使用visa进行仪器控制
  • 百度网站验证创意交易平台官网
  • Node.js异步编程的多种实现方式:从回调地狱到优雅的async/await
  • 全面评测 | Photoshop 2026 新特性深度解析与实测体验
  • FastAPI深度解析
  • wordpress会员数据共同盐城网络优化
  • 学校招聘教师网站建设网站建站前期准备工作
  • springboot系列--自动配置原理
  • Spring Aop实现
  • 在 VSCode 中:修改快捷键
  • 网站推广软件免费下载安装wordpress这个博客
  • React 18.x 学习计划 - 第七天:React性能优化
  • 网站建设费是几个点的税远程访问群晖wordpress
  • 2.9 超参数自动调优(Optuna / Hyperopt)
  • 【大模型训练】 roll 权重更新 过程
  • QAbstractListModel 详细解析
  • 2025自动化运维厂商选型指南:数字化转型下,自动化运维平台为何成为“必选项”?
  • 如何把宏观战略转化为可执行的产品计划
  • 店铺设计素材针对网站做搜索引擎做优化
  • 温州网站排名优化公司哪家好网站推广服务合同模板
  • vscode-python学习-启动