核心概念對照表
| 術語 | 中文 | 說明 |
| Virtual Service Address | 虛擬服務 IP (VIP) | 對外提供服務的浮動 IP |
| Real Service Address | 真實伺服器 IP (RIP) | 後端實際處理請求的主機 |
| Scheduler | 調度演算法 | 決定請求分發給哪台 RIP |
ipvsadm 完整語法分類
1. 虛擬服務管理
# 新增虛擬服務
ipvsadm -A -t|u|f VIP:PORT [-s scheduler] [-p [timeout]] [-M netmask]
# 編輯虛擬服務
ipvsadm -E -t|u|f VIP:PORT [-s scheduler] [-p [timeout]] [-M netmask]
# 刪除虛擬服務
ipvsadm -D -t|u|f VIP:PORT
# 清空所有規則
ipvsadm -C
2. 真實伺服器管理
# 新增真實伺服器
ipvsadm -a -t|u|f VIP:PORT -r RIP:PORT [-g|i|m] [-w weight]
# 編輯真實伺服器
ipvsadm -e -t|u|f VIP:PORT -r RIP:PORT [-g|i|m] [-w weight]
# 刪除真實伺服器
ipvsadm -d -t|u|f VIP:PORT -r RIP:PORT
3. 查看與統計
# 列出規則 (預設數字格式加 -n)
ipvsadm -L -n
ipvsadm -L -n --stats # 統計資訊
ipvsadm -L -n --rate # 速率資訊
ipvsadm -L -n --timeout # 逾時值
ipvsadm -L -n --sort # 排序輸出
ipvsadm -L -n -c # 當前連線表
# 歸零計數器
ipvsadm -Z [-t|u|f VIP:PORT]
# 儲存/還原規則
ipvsadm -S > /etc/sysconfig/ipvsadm
ipvsadm -R < /etc/sysconfig/ipvsadm
4. 連線同步與高可用
# 設定連線逾時 (tcp tcpfin udp)
ipvsadm --set 900 120 300
# 啟動同步守護程式 (Master/Backup)
ipvsadm --start-daemon master --mcast-interface eth0
ipvsadm --start-daemon backup --mcast-interface eth0
ipvsadm --stop-daemon
關鍵參數詳細說明
| 參數 | 長選項 | 說明 |
| -t | --tcp-service | TCP 服務 VIP:PORT |
| -u | --udp-service | UDP 服務 VIP:PORT |
| -f | --fwmark-service | 防火牆標記服務 (需配合 iptables MARK) |
| -s | --scheduler | 調度演算法 (rr/wrr/lc/wlc/lblc/lblcr/dh/sh/sed/nq) |
| -p | --persistent | 持久連線 (同一 Client 固定導向同一 RIP),預設逾時 300 秒 |
| -M | --netmask | 持久連線網路遮罩粒度 |
| -r | --real-server | 真實伺服器 RIP:PORT |
| -g | --gatewaying | Direct Routing (DR) 模式 (預設) |
| -i | --ipip | IP Tunneling 模式 |
| -m | --masquerading | NAT 模式 |
| -w | --weight | 真實伺服器權重 |
三大封包轉發模式對比
1. NAT 模式 (-m)
- 原理: Director 修改封包目的 IP 為 RIP,回應封包經 Director 改回 VIP
- 優點: RIP 可用私有 IP、僅需一個公網 VIP、支援任意 OS
- 缺點: 所有回應流量經 Director,成瓶頸 (請求小、回應大);Director 需為 RIP 預設閘道
- 適用: 中小型網站、RIP 無公網 IP 環境
2. IP Tunneling 模式 (-i)
- 原理: Director 將封包封裝於新 IP 頭 (VIP→RIP),RIP 解封後直接回應 Client
- 優點: 回應流量繞過 Director,擴展性極佳 (>100 節點)、支援跨地域部署、災備友善
- 缺點: RIP 必須有公網 IP、所有節點需支援 IP Encapsulation (IP/IP)
- 適用: 異地多活、大規模叢集、RIP 擁有公網 IP
3. Direct Routing (DR) 模式 (-g,預設)
- 原理: Director 僅修改 MAC 位址 (二層轉發),RIP 直接回應 Client
- 優點: 無封裝開銷、效能最高、回應繞過 Director
- 缺點: 所有節點必須在同一物理網段 (二層互通)、RIP 需配置 VIP on lo:0 並關閉 ARP 回應
- 適用: 高併發單資料中心、追求極致效能
IPVS 十大調度演算法
| 代碼 | 演算法 | 特點 |
| rr | Round Robin | 簡單輪詢,無狀態 |
| wrr | Weighted Round Robin | 加權輪詢,依權重分發 |
| lc | Least Connections | 最少連線,動態負載感知 |
| wlc | Weighted Least Connections | 加權最少連線 (預設),權重×連線數 |
| lblc | Locality-Based LC | 基於局部性最少連線,適合快取 |
| lblcr | LBLC with Replication | 帶複寫的 LBLC,熱點分散 |
| dh | Destination Hashing | 目標 IP 雜湊,固定映射 |
| sh | Source Hashing | 來源 IP 雜湊,防火牆親和性 |
| sed | Shortest Expected Delay | 最短預期延遲,優化佇列 |
| nq | Never Queue | 無佇列,直接分發 idle 節點 |
實戰範例:DR 模式 HTTP 負載均衡
# 1. 建立虛擬服務 (VIP 192.168.0.167:80,加權最少連線)
ipvsadm -A -t 192.168.0.167:80 -s wlc
# 2. 新增真實伺服器 (DR 模式,權重 1)
ipvsadm -a -t 192.168.0.167:80 -r 192.168.0.31:80 -g -w 1
ipvsadm -a -t 192.168.0.167:80 -r 192.168.0.32:80 -g -w 1
# 3. 驗證
ipvsadm -L -n
# 輸出應顯示 VIP、兩台 RIP、Forward: Route (DR 模式標識)
# 4. 持久化規則
ipvsadm -S > /etc/sysconfig/ipvsadm
echo "ipvsadm -R < /etc/sysconfig/ipvsadm" >> /etc/rc.local
RIP 端 DR 模式必要配置
# 1. 綁定 VIP 於 loopback 介面 (隱藏不回應 ARP)
ifconfig lo:0 192.168.0.167 netmask 255.255.255.255 up
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
# 2. 設定預設閘道指向 Director (非 VIP)
route add default gw 192.168.0.1