当前位置:首页 > 行业动态 > 正文

haproxy配置网站

HAProxy配置网站需编辑/etc/haproxy/ haproxy.cfg,定义前端监听端口,配置后端服务器池,设置负载均衡算法,重启haproxy服务使配置

HAProxy基础

HAProxy是一款高性能的开源TCP/HTTP负载均衡器,广泛应用于网站流量分发、反向代理、高可用架构等场景,它支持多种负载均衡算法(如轮询、加权轮询、IP哈希等),具备健康检查、SSL终止、会话保持等核心功能,适用于中大型网站的架构设计。

核心特性

特性 说明
负载均衡 支持多种算法(Round Robin、Least Connections、Source Hashing等)
健康检查 可配置TCP/HTTP/HTTPS健康检查,自动剔除故障节点
SSL终止 支持SSL/TLS证书卸载,降低后端服务器压力
会话保持 基于Cookie、IP地址或自定义标识实现会话粘性
高可用性 支持主备模式(Hot Standby)和多节点集群部署

HAProxy安装与基础配置

安装HAProxy

  • CentOS/RHEL
    yum install haproxy -y 
  • Ubuntu/Debian
    apt-get update && apt-get install haproxy -y 
  • Windows
    下载MSI安装包:https://www.haproxy.org/download/1.8/src/windows/

配置文件结构

HAProxy的主配置文件为/etc/haproxy/haproxy.cfg,包含以下核心段:

  • global:全局配置(日志、进程优先级等)
  • defaults:默认参数(超时时间、日志格式等)
  • frontend:前端配置(监听端口、协议类型)
  • backend:后端配置(负载均衡算法、健康检查)

基础配置示例

以下是一个简单的HTTP负载均衡配置:

haproxy配置网站  第1张

global  
    log /var/log/haproxy.log local0  
    maxconn 4096  
    daemon  
defaults  
    log global  
    mode http  
    timeout connect 5000ms  
    timeout client 50000ms  
    timeout server 50000ms  
frontend http_front  
    bind :80  # 监听80端口  
    default_backend http_back  # 指定后端  
backend http_back  
    balance roundrobin  # 轮询算法  
    server web1 192.168.1.10:80 check  # 后端服务器1  
    server web2 192.168.1.11:80 check  # 后端服务器2 

高级功能配置

SSL终止与HTTPS支持

frontend段添加SSL配置:

frontend https_front  
    bind :443 ssl crt /etc/haproxy/cert.pem  # 指定证书路径  
    default_backend https_back  
backend https_back  
    server web1 192.168.1.10:443 check ssl verify none  # 后端HTTPS服务需关闭验证 

会话保持(Cookie插入)

通过appsession实现会话粘性:

backend http_back  
    balance roundrobin  
    appsession cookie_name mycookie len 64 expire 3600  # 生成64位Cookie,有效期1小时  
    server web1 ...  
    server web2 ... 

健康检查配置

支持HTTP/TCP/SSL健康检查:

backend http_back  
    option httpchk HEAD /health_check HTTP/1.1r
Host: www.example.com  # HTTP健康检查  
    server web1 ... inter 2s fall 3 rise 2  # 每2秒检查一次,失败3次移除,恢复2次重新加入 

动态权重与条件路由(ACL)

根据请求来源分配不同后端:

frontend http_front  
    acl src_acl src 192.168.2.0/24  # 定义来源IP段ACL  
    use_backend back_a if src_acl   # 如果匹配则路由到back_a后端  
    default_backend back_b           # 默认路由到back_b后端 

性能优化与监控

连接队列与并发优化

  • 调整maxconn:根据服务器性能设置最大连接数(默认2000)。
  • 启用option reuse:复用连接以减少TCP握手开销。
  • 调优超时时间:根据业务需求调整timeout参数。

日志与统计监控

  • 访问日志:在frontendbackend段启用日志记录。

  • 实时统计:通过http-request指令暴露监控页面:

    frontend stats_front  
        bind :8888  # 监控页面端口  
        mode http  
        http-request set-var(txn.txn_type) type_trans  # 标记事务类型  
        default_backend stats_back  
        # 显示后端服务器状态  
        backend stats_back  
            server stats_server status.local:8080 send-name-resolution-addr show-node  
            http-request disable-trace    # 禁用跟踪日志以提升性能  
            http-response set-header Content-Type text/html; charset=utf-8    # HTML
0