上一篇
halvs负载均衡
- 行业动态
- 2025-05-15
- 4
HALVS负载均衡基于HAProxy实现,支持四层/七层流量分发,具备高可用、 高性能特性,提供健康检查、SSL卸载、会话保持等功能,适用于Web
HAProxy负载均衡基础概念
1 什么是负载均衡
负载均衡(Load Balancing)是通过算法将网络流量分配到多个服务器的技术,主要解决以下问题:
- 高并发处理:分散请求压力,避免单点过载
- 高可用性:当某台服务器故障时自动切换流量
- 资源优化:根据服务器性能动态分配请求
- 会话保持:支持持久化连接(如Cookie插入)
2 HAProxy核心特性
特性 | 说明 |
---|---|
开源免费 | 基于GPLv3协议,社区活跃 |
高性能架构 | 单进程事件驱动模型,支持万级并发 |
多协议支持 | HTTP/HTTPS/TCP/UDP,兼容WebSocket、gRPC等现代协议 |
动态配置 | 无需重启服务即可热更新配置 |
健康检查机制 | 支持TCP/HTTP/HTTPS多种检测方式,可自定义检测间隔和重试次数 |
高级路由规则 | ACL(访问控制列表)支持基于请求头、IP地址、域名等多维度流量分发 |
HAProxy安装与基础配置
1 安装方式对比
# Debian/Ubuntu系统 sudo apt-get update sudo apt-get install haproxy # CentOS/RHEL系统 sudo yum install epel-release -y sudo yum install haproxy -y # Docker容器部署 docker run -d --name haproxy -p 80:80 -p 443:443 -v /path/to/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
2 配置文件结构解析
默认主配置文件路径:/etc/haproxy/haproxy.cfg
# 全局默认设置 global log stdout format { local0 } maxconn 4096 user haproxy group haproxy # 定义前端监听器 frontend http_front bind :80 mode http default_backend http_back # 定义后端服务器池 backend http_back mode http balance roundrobin server web1 192.168.1.10:80 check server web2 192.168.1.11:80 check
核心负载均衡策略
1 负载均衡算法对比
算法类型 | 适用场景 |
---|---|
roundrobin | 简单轮询,适用于服务器性能相近的场景 |
leastconn | 最少连接数,适合长连接场景 |
source | 基于客户端IP哈希,实现会话保持 |
uri | 根据请求URI特征分流,适合动静资源分离 |
header | 基于HTTP头部字段(如User-Agent)进行智能路由 |
2 会话保持配置示例
backend app_servers cookie SERVERID insert indirect nocache server app1 10.0.0.1:80 check inter 10s downinter 5s rise 2 fall 3 server app2 10.0.0.2:80 check cookie app2
高级功能配置
1 SSL终端配置
frontend https_front bind :443 ssl crt /etc/ssl/cert.pem ca-file /etc/ssl/ca.pem mode http default_backend http_back
2 健康检查配置
backend db_cluster option httpchk OPTIONS="HEAD /health HTTP/1.1r Host:localhost" server db1 192.168.2.10:5432 check inter 5s server db2 192.168.2.11:5432 check port 5432
3 ACL高级路由规则
frontend advanced_front bind :80 mode http acl is_mobile hdr(User-Agent) -i MOBILE use_backend mobile_pool if is_mobile default_backend desktop_pool
性能优化与监控
1 关键性能参数调整
参数 | 说明 | 推荐值 |
---|---|---|
maxconn | 最大并发连接数 | 实际需求×1.5倍 |
tune.ssl.default-dh-param | SSL握手Diffie-Hellman参数 | >=2048位 |
cli-timeout-server | 空闲连接保持时间 | 30s-60s |
http-request-rate | 每秒处理请求数上限 | 根据CPU性能调整 |
2 实时监控命令
# 查看当前连接状态 haproxy -fx stats show sock,cur,max,rate,qcur,qmax,scur,smax,stot,ret,rea,err,uptime,limit,downtime,bin,bout,dreq,dresp,ereq,erep,hrq,hre,hrsp,hcq,hcc,hch,hbe,hbp,hby,hbl,hbs,hbt,hbu,hbq,hbr,hbc,hba,hbb,hbc,hbd,hbe,hbf,hbg,hbh,hbi,hbj,hbk,hbl,hbm,hbn,hbo,hbp,hbq,hbr,hbs,hbt,hbu,hbv,hbw,hbx,hby,hbz,hca,hcb,hcc,hcd,hce,hcf,hcg,hch,hci,hcj,hck,hcl,hcm,hcn,hco,hcp,hcq,hcr,hcs,hct,hcu,hcv,hcw,hcx,hcy,hcz,hda,hdb,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,hdc,hdd,hda,