在运维里,HAProxy 最常用的定位是:高可用负载均衡器(L4/L7),常用于:
下面从实战角度讲怎么用。
| 能力 | 说明 |
|---|---|
| TCP 负载 | 4 层(MySQL、Redis、SSH) |
| HTTP 负载 | 7 层(Nginx、Spring Boot) |
| 健康检查 | 自动剔除故障节点 |
| 会话保持 | cookie / source IP |
| 限流 | 连接数、请求速率 |
| 高可用 | + Keepalived VIP |
yum install -y haproxy
systemctl enable haproxy
apt install -y haproxy
主配置文件:
/etc/haproxy/haproxy.cfg
四大核心段:
global # 全局配置
defaults # 默认参数
frontend # 接收请求
backend # 转发到后端
api.example.comglobal
log /dev/log local0
maxconn 50000
defaults
log global
mode http
option httplog
timeout connect 5s
timeout client 30s
timeout server 30s
frontend api_front
bind *:80
acl is_api hdr(host) -i api.example.com
use_backend api_back if is_api
backend api_back
balance roundrobin
server web1 10.0.0.11:8080 check
server web2 10.0.0.12:8080 check
server web3 10.0.0.13:8080 check
haproxy -c -f /etc/haproxy/haproxy.cfg # 校验
systemctl reload haproxy
server web1 10.0.0.11:8080 check inter 2000 rise 2 fall 3
含义:
backend mysql_back
mode tcp
balance leastconn
server db1 10.0.0.21:3306 check
frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/example.pem
default_backend web_back
example.pem= 证书 + 私钥合并
mode tcp
backend web_back
cookie SERVERID insert indirect
server web1 10.0.0.11:80 cookie s1
server web2 10.0.0.12:80 cookie s2
balance source
⚠️ HAProxy 本身是单点
Keepalived + HAProxy + VIP
# 查看状态
systemctl status haproxy
# 实时日志
journalctl -u haproxy -f
# 统计页面(强烈推荐)
listen stats
bind *:8080
stats enable
stats uri /stats
stats auth admin:123456
浏览器访问:
http://IP:8080/stats
❌ 忘记 check → 不会剔除故障节点
❌ timeout 太小 → 偶发 502
❌ 用 HAProxy 做单点 → 必须 Keepalived
❌ TCP 模式配了 http 规则 → 不生效
| 场景 | 推荐 |
|---|---|
| 高并发 TCP | HAProxy |
| 复杂 Web 反向代理 | Nginx |
| 纯负载均衡 | HAProxy |
| 静态资源 | Nginx |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置文件。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。