HAProxy 搭建 Web 集群

一. HAProxy 是什么

HAProxy 是开源、高性能、支持 TCP/HTTP 的负载均衡器与代理软件 ,专门用于将客户端流量均匀分发到多台后端服务器,实现高并发、高可用、流量调度、故障自动隔离

二. HAProxy 核心作用

  1. 负载均衡:把请求分摊到多台 Web 服务器,避免单点压力过大。
  2. 健康检查:自动检测后端节点存活,故障节点自动剔除,恢复后自动加入。
  3. 高可用:某台服务器宕机不影响整体业务,保证服务不间断。
  4. 会话保持:支持按 IP、Cookie 绑定用户到固定节点,适配需要 Session 的业务。
  5. 日志与监控:详细记录请求状态、响应时间、节点状态,便于运维排查。

三. HAProxy 与同类工具对比

  • LVS:性能最强,内核级转发,但搭建复杂,功能偏底层。
  • Nginx:轻量易用,适合 Web 反向代理,但健康检查弱、高并发不如 HAProxy。
  • HAProxy :兼顾性能与易用性,健康检查强、调度算法丰富、支持 TCP/HTTP,是 Web 集群主流选择。

四. 负载均衡三大核心调度算法

  1. RR(Round Robin)轮询按顺序轮流分配请求,简单公平,适合后端服务器配置相同的场景。
  2. LC(Least Connections)最少连接把新请求分给当前连接数最少的节点,动态适配,适合长连接业务。
  3. SH(Source Hashing)源地址哈希 根据客户端 IP 哈希计算,同一 IP 始终访问同一节点,实现会话保持

五. 实验环境

  • HAProxy 服务器:192.168.1.61
  • Nginx Web01:192.168.1.60
  • Nginx Web02:192.168.1.62
  • 系统:CentOS/RHEL,关闭防火墙与 SELinux
实验步骤
1. 两台 Nginx 服务器安装配置(步骤相同,页面不同)

安装依赖

复制代码
yum -y install pcre-devel zlib-devel gcc*

创建 Nginx 运行用户

复制代码
useradd -M -s /sbin/nologin nginx

解压、编译安装

复制代码
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

制作软链接

复制代码
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

编写测试页面

复制代码
# Web01
echo "test web01" > /usr/local/nginx/html/test.html
# Web02
echo "test web02" > /usr/local/nginx/html/test.html

启动 Nginx

复制代码
nginx

验证端口

复制代码
netstat -anpt | grep nginx
2. HAProxy 安装
复制代码
dnf install haproxy -y
3. HAProxy 配置(/etc/haproxy/haproxy.cfg)

vim /etc/haproxy/haproxy.conf

复制代码
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.1.60:80 check inter 2000 fall 3
    server inst2 192.168.1.62:80 check inter 2000 fall 3
4. 启动 HAProxy
复制代码
systemctl start haproxy
systemctl enable haproxy
5. 测试负载均衡

浏览器访问:http://192.168.1.61/test.html多次刷新,交替显示 web01/web02。

命令批量测试:

复制代码
for i in $(seq 10); do curl http://192.168.1.61/test.html; done
6. HAProxy 日志配置

修改 haproxy.cfg

复制代码
global
    log 127.0.0.1 local3

创建 rsyslog 配置

复制代码
vim /etc/rsyslog.d/haproxy.conf

写入:

复制代码
$ModLoad imudp
$UDPServerRun 514
local3.*     /var/log/haproxy.log
&~

重启服务

复制代码
systemctl restart rsyslog
systemctl restart haproxy

查看日志

复制代码
cat /var/log/haproxy.log

六. 总结

HAProxy 是一款高性能、开源的 TCP/HTTP 负载均衡器,专为 Web 集群高并发、高可用场景设计,可将客户端请求智能分发至多台后端服务器,实现流量分担、故障自动剔除与服务稳定运行。

它相比 LVS 更易部署,相比 Nginx 健康检查更强、并发能力更优,支持轮询、最少连接、源 IP 哈希等丰富调度算法,可灵活适配不同业务需求。通过完整的全局、默认、应用模块三层配置,结合健康检查与日志管理,能快速搭建稳定可靠的 Web 集群,有效解决单点故障与性能瓶颈,是生产环境中构建高可用 Web 服务的核心工具。

相关推荐
码视野5 分钟前
基于 Spring Boot + Vue3 的【城市雨污水管网液位淤积溯源与立交桥下穿隧洞防汛排涝智控中台】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端
雪芽蓝域zzs5 分钟前
第五节:Vue‑Router4 路由配置,布局嵌套路由
前端·javascript·vue.js
雪芽蓝域zzs8 分钟前
第十二节:完整用户管理 CRUD 页面(表格分页、新增 / 编辑弹窗、删除、Mock 接口)
前端·javascript·vue.js
深念Y19 分钟前
NativeScript 移动端开发踩坑记录
前端·ui·vue·安卓·移动端·native·原生
HackTwoHub24 分钟前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss
2601_9620662332 分钟前
golang超详细基础入门教程_golang教程
前端·python·golang
单线程1213834 分钟前
从案例分析 Vue3 Tokenizer 源码二
前端·javascript·vue.js
单线程_0143 分钟前
从案例分析 Vue3 Tokenizer 源码二
前端·javascript·vue.js
山甫aa1 小时前
【从零开始的 Web 后端学习】文件上传一篇搞定(MultipartFile + 本地存储 + 阿里云 OSS 保姆级教程)
前端·学习·阿里云
风骏时光牛马1 小时前
AIRAGDebug智能检索链路异常定位与调试分析
前端