HAProxy 核心配置檔解析 (生產環境精簡版)
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
debug
defaults
log 127.0.0.1 local3
mode http
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance source
stats uri /haproxy-stats
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen 1paituan_proxy 203.93.236.149:80
option httpchk HEAD /index.jsp HTTP/1.0
server web1 203.93.236.147:80 cookie app1inst1 check inter 2000 rise 2 fall 1
server web2 203.93.236.146:80 cookie app1inst2 check inter 2000 rise 2 fall 1
關鍵配置項說明
| 參數 | 說明 |
balance source | 依來源 IP 雜湊分發,同一 Client 固定後端 (類 Nginx ip_hash、LVS persistent) |
203.93.236.149 | VIP (虛擬 IP),由 Keepalived 浮動綁定 |
option httpchk HEAD /index.jsp | 健康檢查:若後端無 index.jsp 則判定下線 (回 503) |
cookie app1inst1 | 植入 Cookie 維持 Session 親和性 |
check inter 2000 rise 2 fall 1 | 每 2 秒檢查,2 次成功上線,1 次失敗下線 |
Syslog 日誌整合設定
# /etc/syslog.conf 新增
local3.* /var/log/haproxy.log
local0.* /var/log/haproxy.log
# /etc/sysconfig/syslog 修改
SYSLOGD_OPTIONS="-r -m 0"
# 重啟生效
service syslog restart
HAProxy 八大負載均衡演算法完整對比
| 演算法 | 英文關鍵字 | 原理 | 適用場景 | 關注度 |
| 輪詢 | roundrobin | 循序分發,權重可調 | 無狀態服務、節點效能相近 | ⭐⭐⭐ 基礎必會 |
| 加權輪詢 | static-rr | 依權重比例分發 | 後端效能差異大 | ⭐⭐⭐ 推薦 |
| 最少連線 | leastconn | 分發給當前連線最少節點 | 長連線、請求處理時間不均 | ⭐⭐⭐ 推薦 |
| 來源 IP 雜湊 | source | Client IP 固定後端 | 需 Session 親和、無共享 Session 架構 | ⭐⭐⭐ 推薦 |
| URI 雜湊 | uri | 依請求 URI 分發 | 快取分片、同一資源固定節點 | ⭐⭐ |
| URL 參數分發 | url_param | 依指定查詢參數值分發 | 特定業務邏輯分片 (如 user_id) | ⭐⭐ |
| HTTP Header 分發 | hdr(name) | 依指定 Header 值分發 | API 版本路由、租戶隔離 | ⭐⭐ |
| Cookie 分發 | rdp-cookie(name) | 依 Cookie 值雜湊分發 | TCP 層 Session 親和 (RDP/資料庫代理) | ⭐ |
作者實戰選型心得
- 最常用:
roundrobin、source、leastconn — 覆蓋 90% 場景
- 避坑:
url_param、hdr() 需確保 Header/參數一定存在,否則分發失效
HAProxy + Keepalived 高可用架構演進
架構對比歷程
| 階段 | 架構 | 問題 | 解決 |
| 1 | LVS + Keepalived | 手機/部分電腦存取極慢、轉發延遲高 | 改用 Nginx + Keepalived |
| 2 | Nginx + Keepalived | 轉發快、手機正常、東莞客戶驗證成功 | 作為標準方案推廣 |
| 3 | HAProxy + Keepalived (本文) | 功能更專注負載均衡、支援更多演算法、統計介面完整 | 第二套方案,備選/特定場景 |
HAProxy 進階特性驗證
- 支援虛擬主機:可透過
acl + use_backend 實現 Host 基礎路由
- 正則處理能力:不如 Nginx 靈活,建議後端掛 Nginx 處理 rewrite/靜態/SSL 終止
- 進程級高可用:未部署雙主,單進程極穩定 (測試需
kill -9 才能終止)
推薦混合架構
Client → Keepalived (VIP) → HAProxy (L4/L7 LB) → Nginx (SSL/Static/Rewrite) → App Server (Tomcat/PHP-FPM)
- HAProxy 專注負載分發與健檢
- Nginx 專注 Web 邊緣處理
- 兩者分工明確,效能最優
選型建議:純 L7 HTTP 負載均衡、需豐富演算法與統計介面 → HAProxy;需 SSL 終止、Rewrite、靜態快取、微服務網關 → Nginx/OpenResty;兩者結合為企業級最佳實踐。