欢迎光临
我们一直在努力

Haproxy搭建web群集

HAProxy 搭建高性能 Web 负载均衡集群

在高并发 Web 服务架构中,负载均衡是保证服务高可用、高性能的核心组件。HAProxy 作为一款支持四层 / 七层、性能强劲、配置简洁的开源负载均衡器,广泛用于 Nginx、Apache、MySQL 等服务的集群调度。


一、核心知识点补充(必看)

1. 负载均衡层级区别

  • 四层(TCP):基于 IP + 端口转发,性能极高,LVS/HAProxy 支持。
  • 七层(HTTP):基于 URL、Header、Cookie 转发,策略更灵活,HAProxy/Nginx 支持。

2. HAProxy 八大调度算法(常用 3 种)

  • roundrobin(RR 轮询):按顺序轮流分配,默认算法。
  • leastconn(LC 最小连接):分给连接数最少的节点,长连接场景更优。
  • source(SH 源地址哈希):同一 IP 固定访问同一节点,实现会话保持。
  • static-rr、uri、url_param、hdr、rdp-cookie(进阶使用)。
  • 3. LVS / Nginx / HAProxy 对比

    • LVS:纯四层,性能最强,配置复杂,无七层规则。
    • Nginx:七层为主,轻量 HTTP 代理,健康检查较弱。
    • HAProxy:四层 + 七层全能,健康检查完善,并发能力强,适合 Web 集群入口。

    4. 健康检查关键参数

    • check:开启节点健康检查
    • inter 2000:每 2000ms 检查一次
    • fall 3:连续 3 次失败判定节点下线
    • rise 2:连续 2 次成功判定节点上线

    二、实验环境规划

    角色系统IP 地址服务
    Web 节点 1 openEuler 24.03 192.168.10.101 Nginx
    Web 节点 2 openEuler 24.03 192.168.10.102 Nginx
    负载均衡器 openEuler 24.03 192.168.10.103 HAProxy

    关闭防火墙与 SELinux(所有节点执行)

    bash

    运行

    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config


    三、步骤 1:两台 Web 节点安装 Nginx(编译安装)

    1. 安装依赖

    bash

    运行

    dnf install -y gcc make pcre-devel zlib-devel openssl-devel

    2. 创建 Nginx 运行用户

    bash

    运行

    useradd -M -s /sbin/nologin nginx

    3. 解压、编译、安装

    bash

    运行

    tar zxf nginx-1.26.3.tar.gz
    cd nginx-1.26.3
    ./configure –prefix=/usr/local/nginx \\
    –user=nginx –group=nginx \\
    –with-http_stub_status_module \\
    –with-http_ssl_module

    make && make install

    4. 创建测试页面(两台节点区分内容)

    节点 1(101):

    bash

    运行

    echo "Web Server 01 — 192.168.10.101" > /usr/local/nginx/html/test.html

    节点 2(102):

    bash

    运行

    echo "Web Server 02 — 192.168.10.102" > /usr/local/nginx/html/test.html

    5. 启动 Nginx

    bash

    运行

    /usr/local/nginx/sbin/nginx
    netstat -anpt | grep nginx


    四、步骤 2:HAProxy 安装与核心配置

    1. 安装 HAProxy

    bash

    运行

    dnf install haproxy -y

    2. 备份并修改配置文件

    bash

    运行

    cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
    vim /etc/haproxy/haproxy.cfg

    3. 完整配置

    plaintext

    global
    log 127.0.0.1 local3 info
    chroot /var/lib/haproxy
    pidfile /var/run/haproxy.pid
    user haproxy
    group haproxy
    daemon
    maxconn 4000

    defaults
    mode http
    log global
    option httplog
    option dontlognull
    retries 3
    timeout http-request 5s
    timeout queue 1m
    timeout connect 5s
    timeout client 1m
    timeout server 1m
    maxconn 3000

    listen webcluster
    bind 0.0.0.0:80
    option httpchk GET /index.html
    balance roundrobin
    server web1 192.168.10.101:80 check inter 2000 fall 3 rise 2
    server web2 192.168.10.102:80 check inter 2000 fall 3 rise 2

    4. 启动 HAProxy

    bash

    运行

    systemctl start haproxy
    systemctl enable haproxy
    systemctl status haproxy


    五、步骤 3:HAProxy 日志独立配置

    HAProxy 默认无独立日志,需配置 rsyslog。

    1. 编辑 HAProxy 日志配置

    bash

    运行

    vim /etc/rsyslog.d/haproxy.conf

    写入:

    plaintext

    $ModLoad imudp
    $UDPServerRun 514
    local3.* /var/log/haproxy.log
    &~

    2. 重启服务

    bash

    运行

    systemctl restart rsyslog
    systemctl restart haproxy

    3. 查看日志

    bash

    运行

    tail -f /var/log/haproxy.log


    六、步骤 4:集群功能测试

    1. 负载均衡测试

    浏览器访问:http://192.168.10.103/test.html多次刷新,交替显示 Web1 和 Web2 内容,说明轮询生效。

    命令行批量测试:

    bash

    运行

    for i in {1..10}; do curl http://192.168.10.103/test.html; done

    2. 高可用测试

    • 停止节点 1 Nginx:/usr/local/nginx/sbin/nginx -s stop
    • 继续访问 VIP,流量全部切到节点 2
    • 重启节点 1,自动恢复轮询

    证明:HAProxy 健康检查自动剔除故障节点,服务不中断。


    七、步骤 5:HAProxy 代理 MySQL

    HAProxy 不仅能代理 Web,还可代理 MySQL(四层 TCP):

    plaintext

    listen mysql-cluster
    bind 0.0.0.0:3306
    mode tcp
    balance leastconn
    server mysql1 192.168.10.205:3306 check port 3306 maxconn 300


    八、生产环境优化建议

  • maxconn:根据服务器内存调大,建议 10000~20000。
  • nbproc:多核 CPU 可开启多进程,提升并发。
  • 调度算法:动态业务用 leastconn,需要会话保持用 source。
  • 健康检查:生产建议 inter 3000 fall 2 rise 2。
  • 日志:必须独立配置,便于排查故障。

  • 九、总结

    本文完整实现了 HAProxy + Nginx 高可用 Web 集群,包含:

    • Nginx 编译安装
    • HAProxy 四层 / 七层配置
    • 健康检查、轮询调度
    • 独立日志配置
    • 高可用测试与扩展应用

    HAProxy 凭借高性能、强健康检查、灵活的调度策略,成为中小型到中大型 Web 架构的首选负载均衡器。掌握本文内容,可直接用于生产环境部署。


    要不要我帮你把这篇文章直接生成 CSDN 发布格式(带目录、代码高亮、排

    赞(0)
    未经允许不得转载:171主机测评 » Haproxy搭建web群集
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址