LVS 负载均衡群集

LVS(Linux Virtual Server) 是基于 Linux 内核的四层(TCP/UDP)高性能、高可用负载均衡群集技术,由章文嵩博士开发,是互联网架构中最核心的负载均衡方案之一。

一、LVS 群集三层架构

负载调度器(Director)

集群唯一入口,对外提供VIP(虚拟 IP)

运行 ip_vs 内核模块与 ipvsadm 管理工具

负责按算法分发请求到后端 RS

通常用 Keepalived 实现主备高可用(双机热备)

服务器池(Real Server, RS)

真正处理业务的后端服务器(Web/APP/DB 等)

拥有独立 RIP(真实 IP)

对客户端透明,可水平扩缩容

共享存储

保证所有 RS 数据一致(如 NFS、Ceph、分布式存储)

二、三种核心工作模式

  1. NAT 模式(VS/NAT)

原理:调度器修改目标 IP(VIP→RIP)转发请求;RS 响应先回调度器,再修改源 IP(RIP→VIP)发给客户端。

特点:

优点:RS 可用任意 OS,配置简单

缺点:双向流量都经 Director,易成瓶颈;RS 数量有限(10~20 台)

典型场景:小规模内网服务

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

原理:调度器仅修改目标 MAC 地址(Director MAC→RS MAC),IP 层不变(目标仍是 VIP)。RS 在 lo 口绑定 VIP,处理后直接回包客户端(绕过 Director)。

特点:

优点:性能最高(只处理入站)、吞吐量最大

缺点:Director 与 RS 必须同一物理网段;需配置 ARP 抑制

典型场景:Web/HTTP 大流量高并发服务

  1. TUN 模式(IP Tunneling,IP 隧道)

原理:调度器将 IP 包封装在新 IP 包中发给 RS;RS 解封装后处理,直接回包客户端。

特点:

优点:RS 可跨网段、跨机房

缺点:所有 RS 必须支持IPIP 隧道;有额外封装开销

典型场景:跨地域、异地多活集群

三、十大调度算法(ipvsadm -s)

静态算法(不考虑后端负载)

rr:轮询(Round Robin)

wrr:加权轮询(Weighted RR,按权重分配)

sh:源地址哈希(Source Hash,会话保持)

dh:目标地址哈希(Destination Hash)

动态算法(考虑后端连接数 / 负载)

lc:最少连接(Least Connections)

wlc:加权最少连接(默认)

sed:最短预期延迟(Shortest Expected Delay)

nq:永不排队(Never Queue)

lblc:基于局部的最少连接

lblcr:带复制的局部最少连接

四、LVS-DR 模式最简配置(CentOS/RHEL)

  1. Director 节点(调度器)

bash

运行

1. 安装工具

yum install -y ipvsadm keepalived

2. 配置VIP(如eth0:0)

ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 up

3. 添加LVS规则(DR模式,-g)

ipvsadm -A -t 192.168.1.100:80 -s wlc # 虚拟服务

ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.21:80 -g # RS1 DR

ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.22:80 -g # RS2 DR

4. 保存规则

ipvsadm-save > /etc/sysconfig/ipvsadm

systemctl enable --now ipvsadm

  1. Real Server 节点(所有 RS 执行)

bash

运行

1. lo口绑定VIP,抑制ARP

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up

2. 永久配置(/etc/sysctl.conf)

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

五、高可用(HA):LVS + Keepalived

Keepalived 作用:

实现 Director 主备自动切换(VRRP 协议)

自动 健康检查 RS(端口 / URL 探测)

故障 RS 自动剔除、恢复后自动加入

典型架构:双 Director(主 + 备)+ 多 RS,无单点故障。

六、LVS 特点总结

内核态:性能远高于 Nginx/HAProxy(七层)

四层转发:支持 TCP/UDP,不解析应用层内容

吞吐量高:DR 模式单机可扛10 万 + 并发

透明:客户端无感知,RS 可无缝扩缩容

成本低:纯软件、Linux 原生、免费开源

七、适用场景

高并发 Web 服务、电商、API 网关

游戏服务器、长连接服务

数据库读负载均衡(如 MySQL 只读实例)

云厂商四层 SLB 底层(如阿里云 SLB 基于 LVS)

相关推荐
2601_960567969 小时前
电商套图自动化效率的工程量化分析——从逐张生成到批量套图的架构演进
运维·架构·自动化
吳所畏惧10 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
HiDev_11 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
Zhang~Ling11 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
爱写代码的森12 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客12 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
久曲健的测试窝12 小时前
智能座舱自动化测试落地方案:数字仿真搭配实车实测,解决用例运维与场景失真难题
运维
AOwhisky13 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
重生的黑客13 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice
Urbano13 小时前
夹克与商务单西口袋工序自动化技改研究报告
运维·自动化