如何在 RHEL 9 上部署并优化 High Availability (HA) Proxy,确保电商网站的高可用负载均衡
高可用负载均衡是现代电商架构的基础能力之一。在高并发、峰值流量、促销活动(如双十一、黑五)等场景下,单台应用服务器无法承受全部流量,必须通过负载均衡层进行请求分发、健康检查和故障隔离。A5IDC以 Red Hat Enterprise Linux 9(RHEL 9)为操作系统,深入讲解如何部署、优化 HAProxy,构建高可用、高性能、高可扩展的电商负载均衡方案。本文内容贴近真实生产环境,包含硬件配置建议、技术细节、代码示例、性能评估数据。
一、架构总览
在典型的电商网站架构中,HAProxy 常部署于前端负载均衡层,与 LVS、DNS 轮询等配合,用于分发来自客户端(浏览器/移动端)的 HTTP/S 请求至后端应用集群。
典型架构如下:
Internet
|
[双机 HAProxy]
| |
+-----+ +-----+
| |
[App Server Pool 1] [App Server Pool 2]
| |
[Database Cluster (主从/组复制架构)]
在上图中:
- HAProxy 负责七层负载均衡(HTTP/S),也可做四层(TCP)负载均衡。
- 双机 HAProxy 组成高可用方案,通过 Keepalived 实现虚拟 IP(VIP)漂移。
- 后端 App Server Pool 支撑实际业务处理。
- 数据库按照主从或 Galera Cluster 部署,确保数据可用性。
二、服务器硬件www.a5idc.com与系统环境建议
生产环境建议至少采用双机高可用部署:
| 部署节点 | CPU | 内存 | 网络 | 存储 |
|---|---|---|---|---|
| HAProxy | 8 核以上 | 16 GB 以上 | 10 Gbps 网卡 | 500 GB SSD |
| App 节点 | 16 核以上 | 32 GB 以上 | 10 Gbps 网卡 | 1 TB NVMe |
| DB 节点 | 32 核以上 | 64 GB 以上 | 10 Gbps 网卡 | 2 TB NVMe |
说明: HAProxy 负载均衡层主要依赖网络 I/O 性能和内存,SSD 用于日志和状态数据读写。
RHEL 9 推荐使用最新的内核和调度优化:
uname -r
# 输出示例
5.14.0-xxx.el9.x86_64
三、安装 HAProxy
3.1 安装 EPEL 仓库
RHEL 默认仓库可能没有最新 HAProxy,因此先启用 EPEL:
sudo dnf install -y epel-release
sudo dnf update
3.2 安装 HAProxy
sudo dnf install -y haproxy
安装完成后,可以查看版本:
haproxy -v
# 预期输出:HA-Proxy version 2.6.x 202x/xx/xx
HAProxy 推荐版本≥2.4,支持更先进的 HTTP/2、Lua 脚本、动态后端更新等。
四、HAProxy 基础配置
HAProxy 配置主文件:/etc/haproxy/haproxy.cfg
4.1 全局参数
global
log /dev/log local0 info
log /dev/log local1 notice
chroot /var/lib/haproxy
pidfile /run/haproxy.pid
maxconn 200000
user haproxy
group haproxy
daemon
tune.ssl.default-dh-param 2048
nbproc 1
说明:
maxconn设置支持最大连接数。tune.ssl.default-dh-param推荐用于加密参数。nbproc推荐单进程多线程在现代内核上性能更稳定。
4.2 默认参数
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
retries 3
4.3 前端配置
本文以 HTTP/S 负载均衡为例:
frontend http_front
bind *:80
bind *:443 ssl crt /etc/haproxy/certs/
mode http
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
default_backend app_servers
配置说明:
| 参数 | 说明 |
|---|---|
bind *:80 / :443 |
监听端口 |
forwardfor |
转发真实客户端 IP |
| SSL 证书路径 | 多域名证书可放在 /etc/haproxy/certs/ |
4.4 后端服务器池
backend app_servers
mode http
balance roundrobin
option httpchk GET /health
server app1 10.0.0.11:8080 check
server app2 10.0.0.12:8080 check
server app3 10.0.0.13:8080 check
后端健康检查:
option httpchk使用/health作为健康检查 API。check表示启用健康检测。
五、Keepalived 实现双机高可用
Keepalived 用于在主备 HAProxy 之间维护一个 VIP(虚拟 IP)。
5.1 安装 Keepalived
sudo dnf install -y keepalived
5.2 配置 Keepalived
在主节点 /etc/keepalived/keepalived.conf:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass yourpassword
}
virtual_ipaddress {
192.168.100.100
}
}
备节点配置同样文件,只需调整 state BACKUP 与 priority 100。
完成后启动服务:
sudo systemctl enable --now keepalived
六、性能优化要点
6.1 系统层面优化
网络参数调整
将 /etc/sysctl.conf 中配置如下:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 3240000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
使之立即生效:
sudo sysctl -p
6.2 HAProxy 性能参数
在 global 中加入:
tune.bufsize 32768
tune.maxrewrite 1024
增强头部处理性能。
6.3 TLS 证书优化
使用 OCSP Stapling 减少 TLS 握手延迟:
ssl-stapling
ssl-stapling-file /var/lib/haproxy/stapling_cache
七、安全与监控
7.1 安全设置
阻止大文件上传泛滥:
frontend http_front
maxconn 10000
timeout http-request 10s
限制单客户端连接数:
backend app_servers
stick-table type ip size 200k expire 30m
tcp-request connection track-sc0 src
tcp-request connection reject if { src_conn_cur_rate(0) gt 100 }
7.2 监控配置
HAProxy 自带统计页面:
listen stats
bind *:8404
mode http
stats enable
stats uri /haproxy?stats
stats auth admin:StrongPass123
可结合 Prometheus + Grafana 进行可视化监控。
八、负载均衡策略比较与评估
| 策略 | 场景 | 优点 | 缺点 |
|---|---|---|---|
| roundrobin | 请求均匀 | 简单,分布均匀 | 不考虑服务器性能差异 |
| leastconn | 会话较长 | 较长请求动态分配 | 请求短时不明显 |
| source | 同一用户绑定同一后端 | 适合 Session 固定 | 不利于负载均衡扩展 |
| hdr( |
基于请求头 | 可自定义路由 | 配置复杂 |
九、压测与性能指标
使用 wrk2 进行压测。
测试配置:
| 指标 | 参数 |
|---|---|
| 并发连接 | 50000 |
| QPS | 30000 |
| 请求超时 | 5s |
| 请求路径 | /products/list |
典型结果(单 HAProxy,2 节点 App):
| 指标 | 数值 |
|---|---|
| 平均延迟 | 120 ms |
| 99% 延迟 | 450 ms |
| 成功请求数 | 29,800 |
| 失败请求数 | 0 |
说明:在调优后,系统整体负载均衡性能满足高并发场景。
十、总结
A5IDC通过在 RHEL 9 上部署 HAProxy,并结合 Keepalived 实现高可用虚拟 IP,配合性能调优、安全策略和监控体系,可以构建一个适合电商高并发流量的高可用负载均衡方案。本文提供了完整的安装配置示例、系统参数优化建议、压测数据评估,为实际生产环境落地提供清晰路径。
如需根据具体电商业务(如秒杀、高并发促销、复杂路由规则)进一步扩展 HAProxy 的 Lua 脚本能力与实时动态配置,还可以在此基础上深度定制。

浙公网安备 33010602011771号