概述

IPVS/LVS 架构中,有两个核心角色:

角色英文别称职责
调度器DirectorLoad Balancer、NLB、LVS Director接收客户端请求,按调度算法分发给 RS
真实服务器Real Server (RS)Backend Server、Upstream Server实际处理请求并返回响应的后端服务
                  Client
                    │
                    ▼ 请求到达 VIP
            ┌───────┴───────┐
            │   Director     │  ← 运行 IPVS,负责调度
            │  (IPVS/NLB)    │
            └───────┬───────┘
                    │ 分发请求(按调度算法)
               ┌────┼────┐
               ▼    ▼    ▼
            ┌────┐┌────┐┌────┐
            │ RS ││ RS ││ RS │  ← 真实处理请求
            └────┘└────┘└────┘

Client 只知 VIP,不知 RS 存在。Director 屏蔽了后端拓扑。


一、Director(调度器)

1.1 定义

Director 是运行 IPVS 内核模块的服务器,是整个负载均衡系统的入口节点。它绑定一个**虚拟 IP(VIP)**供客户端访问,收到请求后根据配置的调度算法将请求分发到某台 Real Server。

1.2 核心职责

职责说明
接收流量在 VIP 上监听来自客户端的请求
调度分发根据调度算法(rr、wlc、sh 等)选择一台 RS
连接跟踪维护 IPVS CT 表,保证同一连接的所有包发往同一 RS
健康检查配合配合 keepalived 等工具,自动摘除故障 RS
高可用(可选)主备 Director 间通过 keepalived/VRRP 实现 VIP 漂移

1.3 Director 的视角

┌──────────────────────────────────────────────┐
│                 Director                       │
│                                                │
│  eth0: VIP = 192.168.1.100/24                  │
│  lo:   Management IP = 192.168.1.1/24          │
│                                                │
│  ┌─────────┐   ┌──────────┐   ┌─────────────┐ │
│  │ IPVS    │   │ 连接跟踪  │   │ 调度算法     │ │
│  │ 规则表   │   │ (IPVS CT) │   │ (wlc/rr/...) │ │
│  └─────────┘   └──────────┘   └─────────────┘ │
│         │            │                │         │
│         ▼            ▼                ▼         │
│   ┌─────────────────────────────┐              │
│   │   VS 192.168.1.100:80       │              │
│   │   ├── RS 10.0.0.10:80  w=1  │              │
│   │   ├── RS 10.0.0.11:80  w=2  │              │
│   │   └── RS 10.0.0.12:80  w=1  │              │
│   └─────────────────────────────┘              │
└────────────────────────────────────────────────┘

1.4 不同模式下的 Director 行为

模式Director 对包的处理
NAT修改目标 IP:Port(DNAT),响应回来再改源 IP(SNAT)
DR只改目标 MAC 地址,IP 头不变
TUN在原始 IP 包外封装一层 IP 头,通过 IPIP 隧道发送

Director 在 NAT 模式下是流量瓶颈(进出都经过它),在 DR/TUN 模式下仅入口经过它(响应直返客户端)。


二、Real Server(RS,真实服务器)

2.1 定义

Real Server 是实际运行后端应用程序(Web 服务、API、数据库等)的服务器。Client 不会直接访问 RS,RS 对客户端是透明的。

2.2 核心职责

职责说明
处理请求接收 Director 转发来的请求,执行实际业务逻辑
返回响应根据工作模式,响应可能经 Director(NAT)或直接返回客户端(DR/TUN)
无状态设计(推荐)理想的 RS 应该是无状态的,方便水平扩缩容

2.3 不同模式下的 RS 配置要求

模式RS 配置要求
NATRS 的默认网关必须指向 Director(否则响应包会走错路)
DRRS 的 lo 接口需绑定 VIP,且设置 ARP 抑制(arp_ignore=1 + arp_announce=2
TUNRS 需开启 IPIP 隧道支持(modprobe ipip

DR 模式 ARP 抑制

如果不做 ARP 抑制,RS 也会响应 ARP who-has VIP 的请求,导致客户端直接给 RS 发请求,绕过 Director 的调度逻辑,破坏负载均衡。

2.4 RS 的健康检查

Director 需要实时感知 RS 的健康状态。通常通过 keepalived 实现:

# keepalived 定期检查 RS 是否存活
# 如果 RS 宕机,IPVS 自动将其摘除
# RS 恢复后自动加回
# 手动查看 RS 状态
ipvsadm -L -n
 
# 输出示例
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.100:80 wlc
  -> 10.0.0.10:80                 Route   1      0          0
  -> 10.0.0.11:80                 Route   2      1          3
  -> 10.0.0.12:80                 Route   1      0          5 权重为 0 Route 标记异常
字段说明
Forward转发模式:Route(DR)/Masq(NAT)/Tunnel(TUN)
Weight权重,为 0 表示该 RS 不参与调度(被摘除)
ActiveConn当前活跃连接数
InActConn非活跃连接数(如 HTTP Keep-Alive 空闲连接)

三、Director 与 RS 的关系

3.1 流量路径视角

请求方向(三种模式):
  NAT:  Client → Director(DNAT) → RS → Director(SNAT) → Client
  DR:   Client → Director(MAC改) → RS → Client(直返)
  TUN:  Client → Director(IP封装) → RS → Client(直返)

3.2 调度与分发的协议

IPVS 在内核中维护一个 VS(Virtual Server)规则,关联一组 RS:

VS 192.168.1.100:80 (虚拟服务)
  ├── RS 10.0.0.10:80  Weight=1  ActiveConn=3
  ├── RS 10.0.0.11:80  Weight=2  ActiveConn=5
  └── RS 10.0.0.12:80  Weight=1  ActiveConn=2
  • Director 根据调度算法(如 wlc)计算目标 RS
  • Director 在 IPVS CT 表中记录”某客户端连接 → 某 RS”
  • 同一连接的后续包直接查表转发,无需重新调度

3.3 常见问题

问题原因
RS 没收到请求RS 网关未指向 Director(NAT 模式)或 ARP 未抑制(DR 模式)
请求到达 RS 但响应不了RS 路由表配置错误,响应包走错了路径
Director 健康检查失败RS 上的服务未启动或防火墙拦截了检查包
某 RS 权重为 0 仍有连接已有连接不会中断,新连接不再分发到该 RS

四、架构类比

比喻DirectorReal Server
餐厅前台领位员后厨厨师
快递分拣中心各片区快递员
客服中心呼叫分配器(ACD)客服坐席
K8skube-proxy (IPVS 模式)Service 背后的 Pod

关联笔记