LVS (Linux Virtual Server) 作為內核級四層負載均衡器,提供三種 IP 負載均衡模式:VS/NAT (地址轉換)、VS/TUN (IP 隧道)、VS/DR (直接路由)。三者在封包轉發路徑、網絡拓撲要求、性能上限、適用場景上差異巨大。本文深度對比架構原理、數據流向、優缺點、部署約束,給出生產環境選型建議。
原理:Director 同時作為 Default Gateway。請求包:Client→VIP → Director (DNAT: VIP→RIP) → RS。響應包:RS → Director (SNAT: RIP→VIP) → Client。雙向流量均經 Director。
| 維度 | 特性 |
|---|---|
| 網絡拓撲 | RS 私有 IP (10/172/192.168.x),網關指向 Director DIP。Director 雙網卡 (公網 VIP + 內網 DIP)。 |
| RS 作業系統 | 任意 (Linux/Windows/Unix),只需配置網關。 |
| Director 負載 | 極高:雙向全流量經 Director,CPU/內存/帶寬瓶頸明顯。 |
| 最大 RS 數 | 10-20 台 (受限於 Director 轉發能力)。 |
| 端口映射 | 支持端口映射 (VIP:80 → RIP:8080)。 |
| Director 高可用 | 需 Keepalived/VRRP 漂移 VIP+DIP。 |
| 優點 | 配置簡單,RS 無內核要求,支持端口映射,RS 可用私有 IP。 |
| 缺點 | Director 成為性能瓶頸與單點,不適合高併發/大流量場景。 |
原理:Director 將請求包封裝在新 IP 頭中 (外層: DIP→RIP,內層: CIP→VIP) 發送給 RS。RS 解封獲取原始請求 (目標 VIP),處理後直接響應給 Client (源 VIP,經默認網關路由)。僅請求經 Director,響應繞過 Director。
| 維度 | 特性 |
|---|---|
| 網絡拓撲 | RS 需公網 IP (RIP) 或可路由 IP。Director 與 RS 可跨公網 (隧道)。所有節點需支持 IP 隧道 (IPv4: ipip/gre; IPv6: ip6ip6/sit)。 |
| RS 作業系統 | 需支持 IP 隧道的內核 (Linux/BSD/部分 Unix)。Windows 需額外配置。 |
| Director 負載 | 低:僅處理入站請求封裝轉發,無響應流量壓力。 |
| 最大 RS 數 | 100+ 台。 |
| 響應路徑 | RS → Client 直連,需 RS 配置 VIP on lo (隧道設備),ARP 抑制 (arp_ignore/arp_announce)。 |
| 優點 | Director 壓力小,跨地域部署靈活,擴展性強。 |
| 缺點 | RS 需公網 IP,隧道開銷 (MTU 減小、CPU 封裝/解封),配置複雜,Windows 支持弱。 |
原理:Director 與 RS 同一物理網段 (同一 VLAN/二層網絡)。請求包:Director 修改 MAC 地址為 RS 的 MAC (幀級轉發),源 IP 仍為 CIP,目標 IP 仍為 VIP,直接二層轉發給 RS。RS 處理後直接響應給 Client (源 VIP)。Director 僅處理入站幀轉發,無 IP 層修改,性能最高。
| 維度 | 特性 |
|---|---|
| 網絡拓撲 | Director 與 RS 必須在同一二層網段 (同一交換機/VLAN)。RS 配置 VIP on lo:0/lo:1,抑制 ARP 回應。 |
| RS 作業系統 | Linux (最佳)、BSD、Solaris。Windows 需環回適配器配置 VIP 且禁用 ARP,較繁瑣。 |
| Director 負載 | 極低:僅 MAC 級轉發,CPU 幾乎無壓力,千萬級併發輕鬆應對。 |
| 最大 RS 數 | 數百台 (受限於 ARP 表/交換機 MAC 表)。 |
| VIP 配置 | Director 綁定 VIP (eth0:0)。RS 綁定 VIP 於 loopback (lo:0),設置 arp_ignore=1, arp_announce=2。 |
| 優點 | 性能最強,Director 無狀態易擴展,無隧道開銷,響應直連低延遲。 |
| 缺點 | 強制同一二層網段,跨機房/雲廠商難部署;RS 需配置 VIP/ARP 抑制;不支持端口映射。 |
| 特性 | VS/NAT | VS/TUN | VS/DR |
|---|---|---|---|
| 雙向流量經 Director | 是 | 否 (僅入站) | 否 (僅入站幀) |
| Director 性能瓶頸 | 嚴重 | 輕微 | 幾乎無 |
| RS 需公網 IP | 否 | 是 | 否 (但需同網段) |
| RS 作業系統限制 | 無 | 需隧道支持 | Linux 最佳 |
| 跨網段/跨機房部署 | 容易 (路由即可) | 容易 (隧道穿越) | 困難 (需二層互通) |
| 端口映射支持 | 支持 | 不支持 | 不支持 |
| 典型最大 RS 數 | 20 | 100+ | 500+ |
| 配置複雜度 | 低 | 高 | 中 (ARP 抑制關鍵) |
# Director (ipvsadm)
ipvsadm -A -t VIP:80 -s rr
ipvsadm -a -t VIP:80 -r RIP1 -g # -g 表示 DR 模式
ipvsadm -a -t VIP:80 -r RIP2 -g
# RS (循環配置 VIP 於 lo,抑制 ARP)
# /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
# 應用
sysctl -p
# 啟動腳本綁定 VIP (或 systemd service)
ip addr add VIP/32 dev lo label lo:0
# 或永久: /etc/sysconfig/network-scripts/ifcfg-lo:0
LVS 三模式本質是封包轉發層級 (三層 NAT/隧道 vs 二層 MAC) 與響應路徑 (經 Director vs 直連) 的權衡。VS/DR 性能王者但拓撲受限;VS/TUN 靈活跨網但開銷大;VS/NAT 通用簡單但瓶頸早。現代架構多遷移至雲負載均衡或 K8s Service/IPVS,理解 LVS 原理仍是掌握四層負載均衡內核機制、排查 kube-proxy IPVS 模式問題的基石。


