Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

LVS 基础教程

内容:核心概念、三种模式、调度算法、实际架构、生产级配置、故障排查、最佳实践。

一、LVS 是什么?

LVS = Linux Virtual Server

是 Linux 内核中的四层负载均衡框架,通过 虚拟 IP(VIP)+ 转发服务器(Director) + 后端 Real Server(RS) 的方式提供高并发、高可用、低延迟的负载均衡。

适用于:

  • Web 服务(Nginx、Tomcat、Flask 等)
  • TCP 服务(Redis、MySQL、MQ)
  • 任意四层 TCP/UDP 服务

特点:

  • 四层转发 -> 极高性能(百万级并发)
  • 内核态转发 -> 极低延迟
  • 搭配 Keepalived -> 自动故障切换(HA)

二、LVS 的三种工作模式(核心)

1)LVS-NAT(Network Address Translation)

原理:Director 修改报文的源/目的地址,转发给 RS。RS 的回复也回到 Director,再 NAT 回客户端。

特点:

  • 流量进出都经过 Director -> 容易成为瓶颈
  • RS 可以使用任意操作系统
  • RS 必须把默认路由指向 Director

适用:小中型流量、简单部署

2)LVS-DR(Direct Routing)– 生产最常用

原理:

  • Director 只负责请求流量;
  • RS 通过自己的 lo 绑定 VIP,并 直接回包给客户端(不经过 Director)。

关键:VIP 需要在所有 RS 的 loopback 绑定,并关闭 ARP:

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

特点:

  • 性能极高:出口流量不经过 Director
  • RS 必须在同一 LAN(二层网络)
  • VIP 要特殊处理 ARP

适用:高并发 Web 服务(行业内最常用)

3)LVS-TUN(IP Tunneling)

原理:Director 使用 IPIP 隧道转发请求给 RS,RS 解封装后直接回包客户端。

特点:

  • RS 可以跨地域/跨机房(三层网络都行)
  • 性能高于 NAT(回包不走 Director)
  • 需要 RS 支持 Tunnel

适用:大规模跨网络负载场景(不常见)

三、LVS 调度算法(常考)

静态算法

算法 说明
RR 轮询
WRR 带权重轮询
SH 源地址哈希(固定来源分配到固定 RS)
DHL 目标地址哈希

动态算法

算法 说明
LC 最少连接
WLC 加权最少连接
SED 最短期望延迟算法
NQ 从不排队(No Queue)算法

生产常用:WLC / WRR / SH

四、典型 LVS 架构图(生产)

LVS-DR + Keepalived 热备 HA

          +---------------------+
          |   Keepalived VIP    |
          +-----------+---------+
                      |
         +------------+------------+
         |      LVS Master        |
         +-------------------------+
         |  DR Mode (VIP on lo)    |
         +-------------------------+
                      |
               (仅请求流量)
                      |
   +-----------+-------------+------------+
   |           |             |            |
+--+--+     +--+--+       +--+--+      +--+--+
| RS1 |     | RS2 |       | RS3 |      | RS4 |
+--+--+     +--+--+       +--+--+      +--+--+
  |            |             |            |
  +------------+-------------+------------+
                    直接回包

五、LVS 核心命令(ipvsadm)

查看规则

ipvsadm -Ln

添加虚拟服务(示例:VIP:80)

ipvsadm -A -t 10.0.0.10:80 -s wlc

添加 RS(DR 模式)

ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.11:80 -g -w 1
ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.12:80 -g -w 1

选项说明:

  • -t:TCP
  • -s:调度算法
  • -g:DR 模式(gateway)
  • -w:权重

六、Keepalived + LVS 配置示例(DR)

/etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    priority 100
    virtual_router_id 51
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        10.0.0.10
    }
}

virtual_server 10.0.0.10 80 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR
    protocol TCP

    real_server 10.0.0.11 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 10.0.0.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

七、Real Server 配置 DR 模式(核心)

1)绑定 VIP 到 lo

ip addr add 10.0.0.10/32 dev lo

2)防止 ARP 抢答

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

八、LVS 典型故障排查(非常重要)

1)RS 无法接收流量

  • VIP 没绑到 loopback
  • ARP 配置错误 -> RS 抢答了 VIP
  • DR 模式 RS 不在同一二层网络

2)RS 可以接收请求但客户端收不到响应

  • DR 模式下必须 RS 直接回包客户端
  • 路由错误导致回包走 Director

3)VIP 漂移不生效

  • Keepalived 没有权限绑定 VIP
  • interface 写错
  • VRRP id 重复

4)权重不生效

  • 算法使用 RR 而不是 WRR/WLC

5)ipvsadm 规则丢失

  • Keepalived 重启时 reload
  • 开机未启用服务

九、LVS 最佳实践(运维必备)

1. 尽量使用 DR 模式(性能最强)

适合 Web / API 服务

2. 搭配 Keepalived 做高可用(VIP 漂移)

3. Real Server 必须关闭 ARP 抢答

4. 更推荐使用 WLC 调度算法

5. Keepalived 健康检查必须启用

TCP_CHECK / HTTP_GET

6. 将 LVS Director 只做调度,不做应用

避免单机资源抢占

7. 打开 LVS 连接同步(conn sync)

用于 Master/Backup 切换无感

sync_master
sync_backup

8. 监控 LVS

  • ipvsadm 连接数
  • Keepalived 切换次数
  • RS 健康情况
  • 网络/ARP 异常