haproxy

HAProxy 负载均衡配置与运维

补充说明

haproxy 是高性能 L4/L7 负载均衡器,配置由 global、defaults、frontend、backend、listen 组成。它支持健康检查、ACL、会话保持和运行时管理。

常用示例

haproxy -c -f /etc/haproxy/haproxy.cfg
haproxy -f /etc/haproxy/haproxy.cfg -D -p /run/haproxy.pid
haproxy -f /etc/haproxy/haproxy.cfg -sf $(cat /run/haproxy.pid)

配置示例:

frontend http_in
  bind *:80
  acl is_api path_beg /api
  use_backend api_servers if is_api
  default_backend web_servers

backend web_servers
  balance roundrobin
  option httpchk GET /healthz
  server web1 10.0.0.11:8080 check
  server web2 10.0.0.12:8080 check

backend api_servers
  balance leastconn
  server api1 10.0.0.21:8080 check

运行时管理

echo 'show stat' | socat stdio /var/run/haproxy.sock
echo 'set server web_servers/web1 weight 50' | socat stdio /var/run/haproxy.sock
echo 'disable server web_servers/web1' | socat stdio /var/run/haproxy.sock

易错点与排错

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 运行时调整的权重为什么重启后又恢复了?
  2. 长请求总在固定时间被切断,先查什么?
  3. 前置 CDN/WAF 后后端拿不到真实客户端 IP,怎么办?
答案
  1. 运行时权重调整不会持久化,重启后回到配置文件值。
  2. connect、client、server 超时参数是否匹配。
  3. 真实客户端 IP 要逐层透传。