上一篇
haproxy配置网站
- 行业动态
- 2025-05-09
- 4
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负载均衡配置:
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
参数。
日志与统计监控
访问日志:在
frontend
或backend
段启用日志记录。实时统计:通过
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