核心作用
- 负载均衡:将客户端请求按照预设规则分发到后端多台真是服务器 避免单台服务器过载 提升系统并发处理能力
- 高可用:结合keepalived等外部工具 实验故障自动转换 自动剔除故障节点 确保服务不断
LVS核心组件
-
**负载均衡器:**整个集群的入口网关 负责接收所有客户端请求 根据调度算法将请求转发到后端RS 需要配置两块网卡(或单块网卡绑定多ip)绑定虚拟ip用于接受客户端请求 绑定调度器ip用于与后端RS通信
-
**真实服务器:**实际提供业务服务的后端服务器集群 接收转发请求并处理 处理完成后按对应模式返回响应
-
**虚拟IP:**对外暴露的服务IP 是客户端访问集群的唯一入口
核心IP关系------CIP(客户端IP)→VIP(集群入口IP)→DIP(调度器内网IP)→RIP(后端服务器IP)数据转发过程围绕这四类IP展开
三层结构

第一层 负载调度器
这是访问整个群集系统的唯一入口 对外使用所有服务器共有的 VIP(Virtual IP 虚拟 IP)地址 也称为群集 IP 地址 通常会配置主 备两台调度器实现热备份 当主调度器失效以后能够平滑替换至备用调度器 确保高可用性
第二层 服务器池
群集所提供的应用服务(如 HTTP FTP)由服务器池承担 其中每个节点具有独立的 RIP(Real IP 真实 IP)地址 只处理调度器分发过来的客户机请求 当某个节点暂时失效时 负载调度器的容错机制会将其隔离 等待错误排除以后再重新纳入服务器池
第三层 共享存储
为服务器池中的所有节点提供稳定 一致的文件存取服务 确保整个群集的统一性 在 Linux/UNIX 环境中 共享存储可以使用 NAS 设备 或者提供 NFS(Network File System 网络文件系统)共享服务的专用服务器
LVS三大工作模式
NAT模式 DR模式 TUN模式
NAT
Director作为网关 双向修改数据包的IP地址 客户端请求到达Director后 将目的IP(VIP)改为RS的RIP 源IP(CIP)改为DIP RS处理完成后 将响应数据包的源IP(RIP)改为DIP 目的IP(DIP)改为CIP 再由Director转发给客户端 所有请求和响应都需经过Director转发
关键配置要求
-
Director的VIP和DIP需分属不同网段
-
Director必须开启内核路由转发功能(net.ipv4.ip_forward = 1)
-
所有后端RS的默认网关必须指向Director的DIP
-
客户端仅能访问VIP 无法直接访问RS的RIP
优缺点 适用场景
优点:配置简单 RS无需特殊设置 支持任意操作系统的RS
缺点:所有流量需经过Director 存在性能瓶颈 仅适用于小规模集群(RS数量建议≤10台)
适用场景:小规模集群 低成本部署 后端RS性能一般的场景(如小型Web服务)
DR
Director仅修改请求数据包的目标MAC地址(将自身DIP对应的MAC改为目标RS的MAC)不修改IP头(源IP为CIP 目的IP为VIP)属于二层转发 RS接收数据包后 发现目标IP(VIP)绑定在本地回环网卡 处理请求后直接向客户端返回响应(源IP为VIP 目的IP为CIP)响应数据包不经过Director
关键配置要求
-
Director与所有RS必须在同一物理网段(同一广播域)依赖二层交换机通信
-
所有RS需在回环网卡 上绑定VIP 并配置内核参数禁用ARP响应(避免VIP冲突 防止交换机ARP表混乱)
-
Director无需开启内核路由转发(区别于NAT模式)
优缺点 适用场景
优点:性能最优(仅修改MAC地址 内核态转发) 支持10Gbps以上吞吐量 Director仅承担请求转发 不参与响应转发 无性能瓶颈
缺点:网络拓扑限制严格(必须同网段) RS配置相对复杂 需禁用ARP响应
适用场景:高并发Web集群 局域网大规模集群(如电商平台 CDN节点)是生产环境首选模式
TUN
依赖IP隧道协议(如GRE)实现跨网段转发 Director接收客户端请求后 对数据包进行重新封装(添加外层IP头 源IP为DIP 目的IP为RS的RIP)将封装后的数据包发送到RS RS接收后解封装,发现内层IP头的目的IP为VIP(已绑定本地)处理请求后直接向客户端返回响应(源IP为VIP 目的IP为CIP)响应不经过Director
优缺点 适用场景
优点:RS直接响应客户端 Director仅处理入站流量 吞吐量高 支持跨网段 大规模集群
缺点:RS需支持IP隧道协议 需手动配置VIP 网络配置复杂 存在隧道封装开销
适用场景:跨地域集群 分布式系统(如跨机房的服务器集群)
三种模式对比
| 模式 | 核心逻辑 | 网络修改 | 响应路径 | 网络要求 | 性能 | 适用场景 |
|---|---|---|---|---|---|---|
| NAT | Director作网关 双向改IP | 源IP(CIP→DIP)目的IP(VIP→RIP) | 经Director转发 | RS网关指向Director 同网段 | 低 | 小规模集群 低成本 |
| DR | 修改MAC IP层不变 | 仅改目的MAC地址 | RS直连客户端 | 同广播域(二层可达) | 极高 | 高并发Web 局域网大规模集群 |
| TUN | 隧道封装 跨网段转发 | 外层IP(DIP→RIP)内层不变 | RS直连客户端 | 跨网段 RS支持隧道协议 | 中高 | 跨地域集群 分布式系统 |
LVS核心调度算法
调度算法决定LVS如何将客户端请求分发到后端RS 分为静态算法(不感知RS负载)和动态算法(感知RS实时负载)其中WLC为默认算法 需根据业务场景选择合适的算法
静态算法
-
RR :请求按顺序依次分发到各RS 不考虑RS性能差异和负载情况 优点:简单均衡 无偏载 缺点:RS性能不一致时 易导致负载不均
-
WRR :按RS权重比例分发请求 权重大的RS接收更多请求 优点:可根据RS性能分配负载 适配异构服务器 缺点:不感知RS实时负载 可能出现高权重RS过载情况
动态算法
-
LC :将请求分发到当前活跃连接数最少的RS 动态均衡负载 优点:适配连接时长不均的场景 缺点:不考虑RS性能差异 可能导致高性能RS负载过低
-
WLC :结合RS权重和活跃连接数 默认算法(权重越高 连接数越少 优先级越高)优点:兼顾性能和负载均衡 通用性最强 缺点:若某客户端请求量极大 可能导致单个RS过载
LVS常用ipvsadm命令
虚拟服务管理
| 命令选项 | 含义 | 示例 |
|---|---|---|
| -A | 添加虚拟服务 | ipvsadm -A -t 192.168.146.100:80 -s rr |
| -E | 修改已存在的虚拟服务 | ipvsadm -E -t 192.168.146.100:80 -s wrr |
| -D | 删除虚拟服务 | ipvsadm -D -t 192.168.146.100:80 |
| -C | 清空所有虚拟服务配置 | ipvsadm -C |
| -L/-l | 列出虚拟服务与RS状态 | ipvsadm -Ln(-n:不解析IP/端口) |
| -S | 保存配置到标准输出 | ipvsadm -Sn > /etc/sysconfig/ipvsadm |
| -R | 从标准输入重载配置 | ipvsadm -R < /etc/sysconfig/ipvsadm |
真实服务(RS)管理
| 命令选项 | 含义 | 示例(DR模式) |
|---|---|---|
| -a | 为虚拟服务添加RS | ipvsadm -a -t 192.168.146.100:80 -r 192.168.177.20 -g |
| -e | 修改已存在的RS | ipvsadm -e -t 192.168.146.100:80 -r 192.168.177.20 -w 2 |
| -d | 从虚拟服务删除RS | ipvsadm -d -t 192.168.146.100:80 -r 192.168.177.20 |
模式与权重参数
| 命令选项 | 含义 | 适用场景 |
|---|---|---|
| -t | 指定虚拟服务为TCP协议 | Web(80/443)、SSH(22)等TCP服务 |
| -u | 指定虚拟服务为UDP协议 | DNS(53)、NTP(123)等UDP服务 |
| -r | 指定RS的IP:Port(端口与VIP一致可省略) | 所有模式通用 |
| -g | 转发模式为DR(默认) | DR模式(同网段、高性能场景) |
| -i | 转发模式为TUN | TUN模式(跨网段、大规模集群) |
| -m | 转发模式为NAT | NAT模式(小规模、简单部署场景) |
| -w | 指定RS权重(默认1,权重大接收请求多) | WRR、WLC等加权算法 |
LVS故障排查与最佳实践
常见故障排查
-
客户端无法访问VIP:检查Director的VIP是否绑定正确、防火墙/SELinux是否关闭、ipvsadm规则是否正确(ipvsadm -Ln)
-
请求无法转发到RS:NAT模式检查路由转发是否开启(sysctl -a | grep ip_forward)RS网关是否指向DIP DR模式检查RS是否绑定VIP ARP抑制是否配置
-
部分RS无法接收请求:检查RS与Director的DIP是否互通(ping测试)RS服务是否正常运行(systemctl status httpd)ipvsadm规则中RS是否添加成功
-
负载均衡不均:检查调度算法是否合适(如RS性能不均应使用WRR/WLC)RS权重是否配置合理 是否存在会话保持导致的负载倾斜
模式与算法选择
-
模式优先选择DR:性能最优 适用于大多数生产场景(如Web集群、数据库读库)
-
小规模集群 低成本部署:选择NAT模式 配置简单
-
跨网段 分布式集群:选择TUN模式 支持远距离部署
高可用配置
LVS本身无高可用能力 需结合Keepalived实现主备Director切换
-
主Director:正常提供服务 虚拟路由优先级高(如100)
-
备Director:监听主Director状态 若主Director故障(断网 服务宕机)备Director自动接管VIP 继续提供服务 避免单点故障
性能优化
-
内核参数调优(修改/etc/sysctl.conf):
提高连接跟踪表大小(大集群需调大) ``net.ipv4.ip_vs.conn_tab_size=655350减少TIME_WAIT连接 提升端口复用能力 ``net.ipv4.tcp_max_tw_buckets=10000 -
RS优化:确保RS性能匹配业务需求 关闭不必要的服务 开启TCP复用 提升响应速度
-
会话保持优化:避免过度依赖SH算法 推荐结合Redis实现分布式会话共享 既保证会话一致性 又避免负载不均
| 组件 | 运行空间 | 核心角色 | 关键依赖 | 性能影响 |
|---|---|---|---|---|
| IPVS | 内核空间 | 流量转发 调度执行 | Linux 内核 Netfilter | 核心 决定转发性能 |
| ipvsadm | 用户空间 | 规则配置 状态查看 | IPVS 内核模块 | 无 仅配置工具 |
| Director | 物理服务器 | 流量入口 调度决策 | 双 IP(VIP/DIP) Linux 系统 | 高 并发瓶颈点 |
| Real Server | 物理服务器 | 业务处理 响应返回 | RIP 网关 / ARP 配置 | 高 决定业务能力 |
| VIP | 虚拟 IP | 统一访问入口 高可用载体 | Director/RS 网卡绑定 | 中 服务入口标识 |