技能目标
- 理解主流负载均衡调度器的特点与适用场景
- 掌握 HTTP 请求、状态码与常用调度算法
- 熟练完成 HAProxy + Nginx 高可用 Web 集群搭建
- 实现 HAProxy 健康检查、日志独立配置与性能调优
前言
在高并发 Web 服务场景中,单台服务器难以支撑海量访问,负载均衡集群成为标配架构。目前主流调度工具包括 LVS、Nginx 与 HAProxy,三者各有优势:LVS 性能最强但部署复杂;Nginx 轻量易用但健康检查与高并发能力较弱;HAProxy 则兼顾高性能、健康检查与会话保持,是企业 Web 集群的热门选择。
本章从基础理论入手,通过完整实操案例,带你一步步搭建 HAProxy 负载均衡集群,实现流量分发、故障自动剔除与日志规范化管理,最终构建稳定、高效、可扩展的 Web 服务架构。
一、案例基础理论
1.1 负载均衡调度器对比
常见 Web 集群调度工具对比,帮助理解选型依据:
- LVS:性能最高,四层转发,适合超大流量,但配置复杂、无七层处理能力
- Nginx:轻量易用,支持七层规则,适合静态资源与 API 网关,但健康检查较弱
- HAProxy:支持四层 / 七层,健康检查完善、并发强、支持会话保持,适合 Web 集群
1.2 HTTP 请求基础
浏览器访问网站使用 HTTP 协议,包含两种核心请求方式:
- GET:参数显示在 URL 中,适合查询、获取数据
- POST:参数隐藏在请求体,适合提交表单、用户名密码等敏感数据
HTTP 状态码分类:
- 2xx:请求成功(如 200)
- 3xx:重定向(如 301)
- 4xx:客户端错误(如 404)
- 5xx:服务端错误(如 500)
1.3 三大核心调度算法
- **RR(轮询)**请求依次分配给后端节点,均匀分发,适合节点配置相同场景。
- **LC(最小连接数)**将新请求分配给当前连接数最少的节点,动态均衡负载。
- **SH(源地址哈希)**同一客户端 IP 始终分配到同一台后端节点,实现会话保持。
1.4 集群环境规划
本次实验使用 3 台服务器搭建高可用集群:
表格
| 节点角色 | 操作系统 | IP 地址 | 运行服务 |
|---|---|---|---|
| Web 节点 1 | openEuler 24.03 | 192.168.20.101 | Nginx |
| Web 节点 2 | openEuler 24.03 | 192.168.20.102 | Nginx |
| 负载均衡器 | openEuler 24.03 | 192.168.20.100 | HAProxy |
二、案例实施步骤
2.1 搭建两台 Nginx 后端节点
在 101、102 两台服务器分别执行:
bash
运行
dnf install -y gcc make pcre-devel zlib-devel openssl-devel
useradd -M -s /sbin/nologin nginx
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
make && make install
创建测试页面:
- 101 节点:
bash
运行
echo "Web Backend Server 192.168.20.101" > /usr/local/nginx/html/test.html
/usr/local/nginx/sbin/nginx
- 102 节点:
bash
运行
echo "Web Backend Server 192.168.20.102" > /usr/local/nginx/html/test.html
/usr/local/nginx/sbin/nginx
关闭防火墙:
bash
运行
systemctl stop firewalld
systemctl disable firewalld
2.2 安装与配置 HAProxy
在 192.168.20.100 安装:
bash
运行
dnf install -y haproxy
编辑主配置文件:
bash
运行
vim /etc/haproxy/haproxy.cfg
完整配置示例:
ini
global
log 127.0.0.1 local0 info
maxconn 4096
user haproxy
group haproxy
daemon
defaults
mode http
log global
option httplog
option dontlognull
retries 3
timeout connect 5s
timeout client 1m
timeout server 1m
listen web_cluster
bind 0.0.0.0:80
balance roundrobin
option httpchk GET /test.html
server web1 192.168.20.101:80 check inter 2000 fall 3
server web2 192.168.20.102:80 check inter 2000 fall 3
启动服务:
bash
运行
systemctl start haproxy
systemctl enable haproxy
三、集群功能验证
3.1 负载均衡测试
浏览器访问:
plaintext
http://192.168.20.100/test.html
多次刷新页面,可交替看到:
plaintext
Web Backend Server 192.168.20.101
Web Backend Server 192.168.20.102
说明 RR 轮询调度正常生效。
3.2 高可用故障测试
- 停止 101 的 Nginx:
bash
运行
/usr/local/nginx/sbin/nginx -s stop
- 再次访问 VIP,页面只显示 102 节点内容
- 重启 101 Nginx,节点自动恢复加入集群
证明 HAProxy 可自动剔除故障节点,保障业务不中断。
四、HAProxy 独立日志配置
HAProxy 默认日志混杂在系统日志,生产环境需单独配置:
- 修改 haproxy.cfg 日志配置
ini
global
log /dev/log local0 info
- 创建 Rsyslog 规则
bash
运行
vim /etc/rsyslog.d/haproxy.conf
写入:
plaintext
local0.* /var/log/haproxy.log
- 创建日志文件并授权
bash
运行
touch /var/log/haproxy.log
chmod 640 /var/log/haproxy.log
chown root:adm /var/log/haproxy.log
- 重启服务
bash
运行
systemctl restart rsyslog
systemctl restart haproxy
- 实时查看日志
bash
运行
tail -f /var/log/haproxy.log
五、HAProxy 性能调优
生产环境常用优化参数:
- maxconn:增大最大连接数(如 10240)
- nbproc:启动多进程,提升并发能力
- retries:节点检查重试次数(建议 3~6)
- timeout check:健康检查超时合理设置
- mode:四层代理用 tcp,七层用 http
总结
本章完整实现了 HAProxy + Nginx 高性能 Web 负载均衡集群,核心内容包括:
- 理解负载均衡原理、调度算法与调度器选型
- 完成 Nginx 后端节点部署与测试页面配置
- 实现 HAProxy 负载均衡、健康检查、自动故障剔除
- 配置独立日志系统,便于运维排查
- 掌握生产环境性能调优思路
通过本章学习,你可以独立搭建企业级 Web 负载均衡集群,提升服务并发能力、稳定性与可用性。