新闻资讯

掌握最新资讯,了解关于我们的最新动态!
您当前位置首页 > 新闻资讯 > 网络安全相关

CentOS 9 StreamHAProxy负载均衡与高可用服务配置完整指南

更新时间:2026-06-02 02:05

负载均衡是企业IT架构中实现高可用和水平扩展的关键组件。HAProxy作为业界领先的开源负载均衡器,支持TCP和HTTP协议的流量分发,具备丰富的健康检查和会话保持功能。本文以CentOS 9 Stream为例,详细介绍HAProxy和Nginx的负载均衡配置方法和最佳实践。

一、负载均衡算法选型

不同的负载均衡算法适用于不同的业务场景。轮询(Round Robin)适合后端服务器性能均匀的场景;最少连接(Least Connections)适合请求处理时间差异大的场景;源IP哈希(Source IP Hash)实现会话保持,适合需要粘性会话的应用;URI哈希适合缓存服务器集群,相同URI的请求分发到同一后端。

二、安装HAProxy

# Ubuntu/Debian安装
apt update && apt install -y haproxy

# CentOS/RHEL安装
yum install -y haproxy

# 查看版本
haproxy -v

# 验证配置语法
haproxy -f /etc/haproxy/haproxy.cfg -c

# 启动服务
systemctl start haproxy
systemctl enable haproxy

三、HAProxy基础配置

# /etc/haproxy/haproxy.cfg
global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon
    maxconn 100000

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http

frontend web_front
    bind *:80
    bind *:443 ssl crt /etc/haproxy/ssl/bacaiyun.com.pem
    default_backend web_servers

backend web_servers
    balance roundrobin
    option httpchk GET /health HTTP/1.1
Host:\ www.bacaiyun.com
    server web1 192.168.1.101:8080 check weight 3
    server web2 192.168.1.102:8080 check weight 2
    server web3 192.168.1.103:8080 check backup

四、健康检查配置

# HTTP健康检查
backend web_servers
    option httpchk GET /health
    http-check expect status 200
    server web1 192.168.1.101:8080 check inter 3s fall 3 rise 2

# TCP健康检查
backend db_servers
    option tcp-check
    tcp-check connect port 3306
    tcp-check send PING

    tcp-check expect string OK
    server db1 192.168.1.201:3306 check
    server db2 192.168.1.202:3306 check

# MySQL健康检查
backend mysql_servers
    option mysql-check user haproxy_check
    server mysql1 192.168.1.201:3306 check
    server mysql2 192.168.1.202:3306 check backup

五、会话保持配置

# 基于Cookie的会话保持
backend web_servers
    balance roundrobin
    cookie SERVERID insert indirect nocache
    server web1 192.168.1.101:8080 check cookie s1
    server web2 192.168.1.102:8080 check cookie s2

# 基于源IP的会话保持
backend app_servers
    balance source
    hash-type consistent  # 一致性哈希
    server app1 10.0.0.1:3000 check
    server app2 10.0.0.2:3000 check
    server app3 10.0.0.3:3000 check

# 基于SSL Session ID的保持
backend ssl_servers
    balance source
    stick-table type binary len 32 size 30k expire 30m
    stick on ssl_fc_session_id
    server ssl1 10.0.0.1:443 check
    server ssl2 10.0.0.2:443 check

六、SSL终端配置

# HAProxy SSL终端
global
    tune.ssl.default-dh-param 2048

frontend https_front
    bind *:443 ssl crt /etc/haproxy/ssl/ crt-ignore-err all
    option httplog
    default_backend web_servers

# HTTP自动跳转HTTPS
frontend http_front
    bind *:80
    redirect scheme https code 301 if !{ ssl_fc }

# Nginx SSL终端配置
server {
    listen 443 ssl http2;
    ssl_certificate /etc/nginx/ssl/bacaiyun.com.pem;
    ssl_certificate_key /etc/nginx/ssl/bacaiyun.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
}

七、监控和管理界面

# HAProxy统计页面
frontend stats
    bind *:8404
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth admin:your_password
    stats admin if LOCALHOST

# 通过Socket实时管理
echo "show info" | socat /run/haproxy/admin.sock stdio
echo "show stat" | socat /run/haproxy/admin.sock stdio

# 动态禁用/启用服务器
echo "disable server web_servers/web1" | socat /run/haproxy/admin.sock stdio
echo "enable server web_servers/web1" | socat /run/haproxy/admin.sock stdio

# 查看当前连接状态
echo "show sess" | socat /run/haproxy/admin.sock stdio

八、Nginx负载均衡补充方案

# Nginx upstream负载均衡配置
upstream api_backend {
    # 负载均衡算法
    ip_hash;  # IP哈希保持会话
    # least_conn;  # 最少连接
    # random;  # 随机

    keepalive 32;  # 连接池

    server 10.0.0.1:3000 weight=5 max_fails=3 fail_timeout=30s;
    server 10.0.0.2:3000 weight=5 max_fails=3 fail_timeout=30s;
    server 10.0.0.3:3000 backup;
}

server {
    location /api/ {
        proxy_pass http://api_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

九、Keepalived双机热备

# /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.200/24 dev eth0
    }
    track_script {
        chk_haproxy
    }
}

# 健康检查脚本
vrrp_script chk_haproxy {
    script "/usr/bin/killall -0 haproxy"
    interval 2
    weight 2
}

十、高可用架构最佳实践

生产环境负载均衡架构推荐:Active-Active双活HAProxy配合Keepalived实现VIP漂移;HAProxy后端对接多台Nginx反向代理;Nginx后端对接应用服务器集群。健康检查实现多层次故障检测(HAProxy→Nginx→应用)。每层设置合理的超时和重试策略,确保单点故障不影响整体服务可用性。

十一、会话保持策略选型

不同应用对会话保持的需求不同,选择合适的保持策略至关重要。Cookie插入方式对客户端透明,适合HTTP应用;源IP哈希实现简单但网络环境变化时可能失效;SSL Session ID保持适用于HTTPS应用无侵入性。对于WebSocket和长连接应用,需要配置应用层的心跳检测和重连机制配合负载均衡的健康检查,确保单点故障后连接自动恢复。

十二、全局负载均衡(GSLB)架构

对于跨数据中心部署的多活架构,需要全局负载均衡(GSLB)将用户流量分发到最近或负载最低的数据中心。GSLB基于DNS智能解析实现,支持根据地理位置、链路质量、数据中心健康状态智能选路。常用的GSLB方案包括F5 GTM、AWS Route 53、阿里云DNS解析。GSLB配合本地的HAProxy或Nginx反向代理,构建完整的全局+本地两级负载均衡体系。

十三、负载均衡性能基准测试

在负载均衡上线前需要做全面的性能基准测试,评估HAProxy或Nginx反向代理的最大并发连接数、每秒请求处理能力(RPS)和SSL终端性能。使用wrk、hey或ab进行HTTP加压测试,测试通过后调整worker进程数、连接超时和缓冲区大小。记录基准测试结果作为SLA承诺依据和日常监控基准线。

十四、负载均衡方案对比与选型建议

HAProxy、Nginx和云负载均衡各有适用场景。HAProxy专注四层和七层负载均衡配置简单性能卓越支持丰富的健康检查和会话保持机制。Nginx在七层负载均衡外还提供反向代理、缓存和SSL终端功能非常适合Web架构。云负载均衡(SLB/ALB)在公有云环境中无需运维、自动扩缩容且与云产品集成。对于自建机房推荐HAProxy+Nginx组合架构,HAProxy负责入口负载均衡和SSL卸载Nginx负责反向代理和缓存加速。

选择负载均衡方案时还需要考虑运维团队的技术储备和维护成本。HAProxy配置学习成本低适合快速上手,Nginx反向代理功能丰富配置稍复杂。对于非核心业务先进行小规模试用积累经验后再推广到生产环境。负载均衡的故障切换时间直接影响业务可用性,需在方案选型阶段重点评估。综合各方面因素选择最适合自身业务需求的负载均衡方案,可以最大化均衡效果和投入产出比。

安全合格的云服务,让您的业务轻松上云!

立即选购