温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

运维中HAProxy怎么用

发布时间:2026-11-04 21:09:49 来源:亿速云 阅读:91 作者:小樊 栏目:系统运维

在运维里,HAProxy 最常用的定位是:高可用负载均衡器(L4/L7),常用于:

  • 多台 Web / API 服务前做负载均衡
  • 防止单点故障(配合 Keepalived 做 HA)
  • 七层路由(按域名、URL、Header 转发)
  • 限流、健康检查、灰度发布

下面从实战角度讲怎么用。


一、HAProxy 能干什么(先明确用途)

能力 说明
TCP 负载 4 层(MySQL、Redis、SSH)
HTTP 负载 7 层(Nginx、Spring Boot)
健康检查 自动剔除故障节点
会话保持 cookie / source IP
限流 连接数、请求速率
高可用 + Keepalived VIP

二、安装(常见环境)

CentOS / Rocky

yum install -y haproxy
systemctl enable haproxy

Ubuntu

apt install -y haproxy

三、核心配置文件结构

主配置文件:

/etc/haproxy/haproxy.cfg

四大核心段:

global        # 全局配置
defaults      # 默认参数
frontend      # 接收请求
backend       # 转发到后端

四、最常用:HTTP 负载均衡示例

场景

  • 域名:api.example.com
  • 后端:3 台 Spring Boot 服务

配置示例

global
    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

五、健康检查(非常重要)

HTTP 检查

server web1 10.0.0.11:8080 check inter 2000 rise 2 fall 3

含义:

  • 每 2 秒检查一次
  • 连续 2 次成功 → 上线
  • 连续 3 次失败 → 下线

MySQL 示例(TCP)

backend mysql_back
    mode tcp
    balance leastconn
    server db1 10.0.0.21:3306 check

六、HTTPS(运维常见)

方式 1:HAProxy 终止 SSL(推荐)

frontend https_front
    bind *:443 ssl crt /etc/haproxy/certs/example.pem
    default_backend web_back

example.pem = 证书 + 私钥合并

方式 2:透传 HTTPS

mode tcp

七、会话保持(Session)

按 Cookie

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

按 IP

balance source

八、高可用(HAProxy 不自己 HA)

⚠️ HAProxy 本身是单点

标准方案

Keepalived + HAProxy + VIP
  • 两台 HAProxy
  • 一个 VIP(虚拟 IP)
  • 一台挂了,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 规则 → 不生效


十一、你适合用 HAProxy 还是 Nginx?

场景 推荐
高并发 TCP HAProxy
复杂 Web 反向代理 Nginx
纯负载均衡 HAProxy
静态资源 Nginx

如果你愿意,可以告诉我:

  • 你是 Web / API / 数据库 场景?
  • 是否要 HTTPS / 高可用 / 容器环境?

我可以直接给你一套可复制的配置文件。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手