LVS (Linux Virtual Server) 核心模組 ipvs 提供多種調度演算法與持久連結機制。本文深入解析 -p 持久參數、-M 網罩粒度、連結模板運作流程,以及 RR/WRR/LC/WLC 等演算法行為差異。
ipvsadm -A -t VIP:PORT -s wlc -p 900 -M 255.255.255.0
-p 900:持久逾時 900 秒(預設 300 秒)。-M 255.255.255.0:來源 IP 套用網罩後比對,同一 C 類網段視為同一客戶端。「同一客戶端」定義: 依來源 IP(套用網罩後)比對,非 Cookie 或 Session ID。例:10.1.9.8 與 10.1.9.9 套用 /24 後均為 10.1.9.0,將導向同一 Real Server。
啟用 -p 時,IPVS 內部維護 持久模板:
<CIP:CPORT, VIP:VPORT> 到達,查找模板表。<CIP:0, VIP:0, RIP:RPORT> 且未逾時,直接依模板建立真實連結 <CIP:CPORT, VIP:VPORT, RIP:RPORT>,不再經過調度演算法,並重置模板逾時計時器。-p 值。模板本質是一種特殊連結項,可用 ipvsadm -Lcn 觀察。
| 演算法 | 代碼 | 特性 | 適用場景 |
|---|---|---|---|
| Round Robin | rr | 循環指標,無狀態,均勻分發 | 同質 RS、無 Session 依賴 |
| Weighted RR | wrr | 依權重比例循環 | 異質硬體、靜態負載 |
| Least Connection | lc | 選當前連結數最少的 RS | 長連結、負載動態變化 |
| Weighted LC | wlc | 依權重調整的最少連結(預設) | 通用生產環境 |
| Locality-Based LC | lblc | 目標 IP 親和性 + 最少連結 | 快取 Proxy、CDN 邊緣節點 |
| LBLCR | lblcr | lblc + 複製機制 | 大型快取叢集 |
| Destination Hash | dh | 目標 IP 雜湊靜態映射 | 防火牆、固定路由 |
| Source Hash | sh | 來源 IP 雜湊靜態映射 | 無狀態持久、防火牆 |
| Shortest Expected Delay | sed | 預估延遲最小(LC 變體) | 實驗性 |
| Never Queue | nq | 直接分發無佇列(LC 變體) | 低延遲需求 |