如何在 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 BACKUPpriority 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 脚本能力与实时动态配置,还可以在此基础上深度定制。

posted @ 2026-01-08 10:57  A5IDC  阅读(60)  评论(0)    收藏  举报