前言
在现代企业级 Web 服务架构中,负载均衡集群是保障系统高并发、高可用、可扩展的核心基础设施。当前开源领域主流的负载均衡调度工具主要包含 LVS、Nginx 与 HAProxy 三款,三者在性能、配置复杂度、功能特性上存在明显差异。HAProxy 作为一款专注于负载均衡与代理的开源软件,支持 TCP、HTTP (S) 等多种协议,具备强大的健康检查、会话保持、流量调度能力,且在高并发场景下性能表现优异,配置灵活易用,成为中小型企业搭建 Web 集群的首选方案。
本文基于 openEuler 24.03 操作系统,完整讲解HAProxy+Nginx搭建 Web 负载均衡集群的全流程,包含环境规划、软件安装、核心配置、功能验证、日志配置、参数优化等关键环节,贴合生产环境实战需求,可直接用于企业落地部署。
一、负载均衡核心理论基础
1.1 主流负载均衡工具对比
在搭建集群前,需明确三款主流工具的核心差异,选择适配业务的方案:
表格
| 工具名称 | 性能等级 | 配置复杂度 | 健康检查能力 | 高并发支持 | 核心适用场景 |
|---|---|---|---|---|---|
| LVS | 内核级,最优 | 高 | 强 | 极佳 | 大型高并发流量入口 |
| Nginx | 应用级,良好 | 低 | 较弱 | 良好 | Web 服务、反向代理 |
| HAProxy | 应用级,优秀 | 中 | 极强 | 优秀 | 负载均衡、API 网关 |
HAProxy 官方站点:http://www.haproxy.org/,持续更新迭代,社区活跃,文档完善。
1.2 HTTP 请求基础
Web 集群基于 HTTP 协议提供服务,HTTP 请求是流量调度的核心载体:
- 请求方式
- GET 请求:参数拼接在 URL 中,可见性高,适合数据查询、页面访问;
- POST 请求:参数存储在请求体中,安全性高,适合表单提交、敏感数据传输。
- 响应状态码
- 2xx/3xx:请求正常(200 成功、301 重定向);
- 4xx/5xx:请求异常(404 资源不存在、500 服务器错误)。
1.3 负载均衡核心调度算法
LVS、Nginx、HAProxy 通用三大调度算法,决定流量分发规则:
表格
| 算法缩写 | 英文全称 | 核心原理 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|---|---|
| RR | Round Robin | 轮询分发请求,依次分配至后端节点 | 配置简单、公平分发 | 不考虑节点性能差异 | 节点性能一致、无会话要求 |
| LC | Least Connections | 分配至当前连接数最少的节点 | 动态适配负载、利用率高 | 配置略复杂 | 长连接、动态负载场景 |
| SH | Source Hashing | 基于源 IP 哈希固定分配节点 | 实现会话保持 | 易造成负载不均衡 | 需要 Session 绑定的业务 |
1.4 Web 集群调度器分类
- 软件调度器:开源免费,灵活可定制,代表为 LVS、HAProxy、Nginx;
- 硬件调度器:性能强劲、稳定性高,成本昂贵,代表为 F5、梭子鱼、绿盟。
二、实验环境规划
2.1 集群拓扑结构
本实验采用1 台 HAProxy 调度器 + 2 台 Nginx 后端节点的经典架构,HAProxy 负责流量调度,Nginx 节点提供 Web 服务,实现负载均衡与故障转移。
2.2 服务器配置清单
所有节点均采用 openEuler 24.03 操作系统,IP 规划与角色分工如下:
表格
| 主机角色 | 操作系统 | IP 地址 | 部署软件 | 核心职责 |
|---|---|---|---|---|
| Nginx 节点 1 | openEuler 24.03 | 192.168.10.101 | Nginx 1.26.3 | 提供 Web 服务 |
| Nginx 节点 2 | openEuler 24.03 | 192.168.10.102 | Nginx 1.26.3 | 提供 Web 服务 |
| HAProxy 调度器 | openEuler 24.03 | 192.168.10.103 | HAProxy 2.9.5 | 流量调度、健康检查 |
2.3 实验核心目标
- 完成两台 Nginx 后端节点的编译安装与测试;
- 完成 HAProxy 调度器的安装与负载均衡配置;
- 验证集群高性能(负载均衡)与高可用(故障转移);
- 配置 HAProxy 独立日志系统,便于运维排查;
- 完成生产环境核心参数优化。
三、Nginx 后端节点部署
两台 Nginx 节点操作完全一致,仅测试页面内容不同,以下为标准化部署流程。
3.1 安装编译依赖
Nginx 需源码编译,提前安装依赖包:
dnf install -y gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker git wget tar
3.2 创建 Nginx 运行用户
创建专用系统用户,禁止登录提升安全性:
useradd -M -s /sbin/nologin nginx
3.3 源码编译安装 Nginx
-
解压源码包(提前下载 nginx-1.26.3.tar.gz):
tar zxf nginx-1.26.3.tar.gz
cd nginx-1.26.3 -
配置编译参数:
./configure --prefix=/usr/local/nginx
--user=nginx --group=nginx
--with-http_ssl_module
--with-http_v2_module
--with-pcre -
编译并安装:
make && make install
3.4 Nginx 安装核心信息
- 默认安装目录:/usr/local/nginx
- 默认 Web 根目录:/usr/local/nginx/html
- 默认监听端口:80
- 默认日志目录:/usr/local/nginx/logs
3.5 配置测试页面
节点 1(192.168.10.101):
echo "Server 192.168.10.101" > /usr/local/nginx/html/test.html
节点 2(192.168.10.102):
echo "Server 192.168.10.102" > /usr/local/nginx/html/test.html
3.6 启动服务与防火墙配置
-
启动 Nginx:
/usr/local/nginx/sbin/nginx
-
关闭防火墙(实验环境,生产需开放 80 端口):
systemctl stop firewalld
3.7 验证 Nginx 服务
浏览器访问对应 IP 的 test.html 页面:
- 192.168.10.101/test.html 显示:Server 192.168.10.101
- 192.168.10.102/test.html 显示:Server 192.168.10.102验证通过则 Nginx 节点部署完成。
四、HAProxy 调度器部署
HAProxy 采用 openEuler 官方源安装,无需源码编译,部署便捷。
4.1 安装 HAProxy
直接使用 dnf 包管理器安装:
dnf install haproxy -y
4.2 HAProxy 配置文件结构
HAProxy 核心配置文件为/etc/haproxy/haproxy.cfg,分为三大模块:
- global:全局配置,定义进程、日志、最大连接数等系统级参数;
- defaults:默认配置,被所有应用模块继承,定义超时、重试等通用参数;
- listen:应用模块配置,定义监听端口、后端节点、调度算法、健康检查。
4.3 核心配置文件修改
编辑配置文件:
vim /etc/haproxy/haproxy.cfg
替换为以下完整配置:
global
log 127.0.0.1 local2
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
timeout http-keep-alive 5s
timeout check 5s
maxconn 3000
listen webcluster
bind 0.0.0.0:80
option httpchk GET /index.html
balance roundrobin
server inst1 192.168.10.101:80 check inter 2000 fall 3
server inst2 192.168.10.102:80 check inter 2000 fall 3
4.4 核心配置参数详解
表格
| 配置项 | 所属模块 | 作用说明 |
|---|---|---|
| maxconn 4000 | global | 全局最大连接数,限制总并发 |
| daemon | global | 守护进程模式运行 |
| mode http | defaults | 工作模式为 HTTP 代理 |
| retries 3 | defaults | 节点检查失败重试 3 次 |
| bind 0.0.0.0:80 | listen | 监听所有网卡 80 端口 |
| balance roundrobin | listen | 采用轮询调度算法 |
| check inter 2000 | listen | 健康检查间隔 2 秒 |
| fall 3 | listen | 连续 3 次失败标记节点下线 |
| option httpchk | listen | 启用 HTTP 健康检查 |
4.5 启动 HAProxy 服务
systemctl start haproxy
systemctl enable haproxy
五、集群功能验证
集群需满足 ** 高性能(负载均衡)与高可用(故障转移)** 两大核心特性,以下为验证步骤。
5.1 高性能负载均衡验证
- 浏览器访问 HAProxy 调度器地址:
http://192.168.10.103/test.html; - 第一次访问:显示
Server 192.168.10.101; - 刷新页面:显示
Server 192.168.10.102; - 持续刷新:页面轮询显示两个节点标识,证明 RR 轮询调度生效,流量均匀分发。
5.2 高可用故障转移验证
-
模拟节点故障:停止节点 2 的 Nginx 服务
/usr/local/nginx/sbin/nginx -s stop
-
持续访问 HAProxy 地址,仅显示节点 1 内容,无访问异常;
-
恢复节点 2 服务,重新轮询分发;
-
同理停止节点 1,集群仍正常提供服务。证明 HAProxy 健康检查生效,故障节点自动隔离,实现高可用。
六、HAProxy 独立日志配置
HAProxy 默认日志输出至系统 syslog,不利于运维排查,生产环境需配置独立日志。
6.1 修改 HAProxy 日志配置
编辑配置文件:
vim /etc/haproxy/haproxy.cfg
修改 global 模块:
global
log /dev/log local0 info
# chroot /var/lib/haproxy
6.2 配置 Rsyslog 日志规则
创建 HAProxy 专用日志规则文件:
vim /etc/rsyslog.d/99-haproxy.conf
添加内容:
local0.* /var/log/haproxy.log
6.3 创建日志文件并授权
# 创建日志文件
touch /var/log/haproxy.log
# 设置权限
chmod 640 /var/log/haproxy.log
# 归属用户组
chown root:adm /var/log/haproxy.log
6.4 重启服务生效
systemctl restart rsyslog
systemctl restart haproxy
6.5 实时查看日志
tail -f /var/log/haproxy.log
日志包含访问 IP、请求路径、响应状态、调度节点等信息,可用于流量分析、故障排查。
七、HAProxy 生产环境参数优化
生产环境高并发场景下,需调整核心参数提升性能,以下为关键优化项:
表格
| 参数名称 | 配置模块 | 作用 | 生产优化建议 |
|---|---|---|---|
| maxconn | global | 全局最大连接数 | 10240,根据服务器内存调整 |
| maxconn | defaults | 默认最大连接数 | 不超过 global 模块定义值 |
| daemon | global | 守护进程模式 | 必须开启,后台运行 |
| nbproc | global | 并发进程数 | 与 CPU 核心数一致,提升并发 |
| retries | defaults | 节点重试次数 | 5-6 次,避免误判下线 |
| timeout check | defaults | 检查超时时间 | 2-3 秒,快速识别故障节点 |
| inter | listen | 健康检查间隔 | 1000-2000ms,平衡性能与实时性 |
八、集群扩展与生产落地建议
8.1 双机热备扩展
单台 HAProxy 存在单点故障,生产环境需结合Keepalived实现 HAProxy 双机热备,配置虚拟 IP(VIP),主节点故障自动切换至备节点,保障调度器高可用。
8.2 调度算法选择
- 无会话要求:优先使用 RR 轮询,配置简单;
- 长连接业务:优先使用 LC 最小连接数,负载更均匀;
- 会话绑定业务:使用 SH 源地址哈希,保证会话一致性。
8.3 安全配置建议
- 开启防火墙,仅开放 80/443 端口;
- 配置 HTTPS,提升数据传输安全;
- 限制 HAProxy 管理页面访问权限;
- 定期备份配置文件与日志。
九、总结
本文完整实现了HAProxy+Nginx高可用 Web 负载均衡集群的搭建,覆盖从环境规划、软件部署、核心配置、功能验证到参数优化的全流程,是企业生产环境落地的标准化方案。
HAProxy 核心优势总结:
- 性能优异,支持十万级并发连接;
- 健康检查机制完善,自动故障转移,高可用有保障;
- 支持多种调度算法,适配各类业务场景;
- 配置简洁灵活,运维成本低;
- 日志系统完善,便于监控与排查