HAProxy搭建Web群集

核心概述

HAProxy 是高性能开源负载均衡 / 代理工具适合搭建 Web 高可用群集 对比 LVS(性能强 部署复杂)Nginx(健康检查弱 高并发一般)HAProxy 均衡性 健康检查 高并发表现更均衡


前置知识点

HTTP 请求

  • GET:参数显式在 URL 适合普通查询
  • POST:参数隐式传递 适合表单 账号密码提交
  • 正常状态码:2×× 3×× 异常:4×× 5××

三大负载均衡算法

  1. RR(轮询):请求依次分配给后端节点 简单常用 支持加权轮询
  2. LC(最小连接数):按节点当前连接数动态分配 并发场景更优
  3. SH(源地址哈希):同一 IP 固定访问同一节点 实现会话保持 但易导致负载不均

常见 Web 群集调度器

  • 软件:LVS,HAProxy,Nginx
  • 硬件:F5,梭子鱼,绿盟

实验环境

主机 IP 地址 角色
nginx1 192.168.10.101 Web 节点 1
nginx2 192.168.10.102 Web 节点 2
haproxy 192.168.10.103 负载均衡调度

两台 Nginx 节点编译安装

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
  • 节点 1 测试页:echo "Server 192.168.10.101" > /usr/local/nginx/html/test.html
  • 节点 2 测试页:echo "Server 192.168.10.102" > /usr/local/nginx/html/test.html
  • 启动:/usr/local/nginx/sbin/nginx
  • 关闭防火墙:systemctl stop firewalld

HAProxy 安装

bash 复制代码
dnf install haproxy -y

HAProxy 核心配置(/etc/haproxy/haproxy.cfg)

配置分三部分:global(全局)defaults(默认)listen(应用)

bash 复制代码
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 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 inst1 192.168.10.101:80 check inter 2000 fall 3
    server inst2 192.168.10.102:80 check inter 2000 fall 3
  • balance roundrobin:使用轮询算法
  • check inter 2000:每 2 秒健康检查
  • fall 3:连续 3 次失败则标记节点下线

群集测试

高性能(负载均衡)

访问 http://192.168.10.103/test.html 刷新会轮询显示 101/102 页面

高可用(故障自动切换)

停掉任意一台 Nginx 访问仍正常 HAProxy 自动剔除故障节点

HAProxy 独立日志配置

关键参数优化

  • maxconn:全局最大连接数 生产建议 10240
  • retries:节点重试次数 生产设 5--6 次
  • nbproc:并发进程数 提升并发能力
  • timeout:合理设置连接 / 客户端 / 服务端超时 避免阻塞
相关推荐
赖龙7 小时前
pnpm vs npm
前端·npm·node.js
学如逆水,不进则退8 小时前
在线免费音频剪辑:NBTools 可视化波形裁剪 MP3/WAV,本地处理免上传
前端·音视频
Mh8 小时前
虚拟滚动真的比普通滚动性能更好吗?
前端·javascript·性能优化
pe7er9 小时前
React + Ant Design 中的 IME (输入法合成)安全输入组件
前端
Super 含9 小时前
Android 启动优化(二):TTID、TTFD 与 Macrobenchmark 启动性能测量
前端
Python私教9 小时前
别急着加 llms.txt:企业官网面向 AI 搜索的工程清单
前端·人工智能·seo
东方小月9 小时前
从零开发一个 Coding Agent(十三):实现安全的 read 文件读取工具
前端·人工智能·全栈
东方小月10 小时前
从零开发一个 Coding Agent(十二):实现版本化 JSONL 与真实 CLI 入口
前端·设计模式·前端框架
FL162386312911 小时前
室内易燃物识别易燃评估室内易燃程度识别分割数据集labelme格式1015张85类别
java·服务器·前端
用户0595401744611 小时前
把 AI 长期记忆去重测试从 20 分钟压到 40 秒,重复率从 18% 干到 1.5%
前端·css