砍材农夫砍材农夫
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • nginx

    • nginx日常使用

      • 概念
      • 常用命令
      • nginx安装和部署
    • nginx项目实战

      • 高可用配置
      • nginx配置https证书
      • nginx负载配置
  • linuxs

    • 基础

      • 常用命令
      • grep
      • 防火墙
      • 基础常用命令
      • linux基础常用命令2
      • 配置应用自动启动
      • 自动同步北京时间
      • 防火墙操作
      • ifconfig无ip
      • Rocky-8无网络和局域网无法访问
    • 高级

      • 常用命令
      • vm虚拟机磁盘扩容
      • jdk安装
      • centos7 不显示IP
      • linux分析问题常用命令
      • linux任务管理
      • 权限控制
      • 记录用户操作日志
      • 日常分析问题命令介绍
      • 网络配置
      • cached过高问题
      • 找回删除文件
      • cpu负载突然升高
      • 磁盘爆满查找大文件
      • CentOS7系统配置国内yum源和epel源
    • vi

    • curl

  • docker

    • 基础
      • 安装和配置

        • window相关安装和配置
        • window基础简单操作
        • linux安装
      • 相关命令

        • 相关概念
        • 相关命令
        • docker镜像相关命令
      • 安装实例

        • 安装elasticsearch
        • docker其他常见快速部署
        • docker搭建Jenkins
        • docker搭建mysql
        • docker备份mysql
        • docker更改mysql配置
        • docker搭建nexus
      • 其他

        • 镜像的迁移和备份
        • 构建私有仓库
        • 网络
        • 常见错误集
        • dockerfile
        • dockerfile案例(springboot)
        • docker部署hdfs
        • docker容器时间和本地时间不一致
        • docker批量操作
    • 日常运维案例

      • docker实例内文件下载
    • docker-compose

      • docker-compose意义
      • docker-compose
      • docker实例内文件下载
  • k8s

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • haproxy

    • haproxy部署实战

      • haproxy部署介绍
      • haproxy部署实战
      • haproxy案例分析
  • jenkins

    • jenkins实战

      • 发布sheel脚本
      • 版本升级或重装备份问题
      • 多模块关联关闭
      • 环境搭建
      • 获取远程git项目|分支选择
      • 权限管理
      • 项目获取远程java项目并发布
      • 获取web项目并发布
      • 集成maven获取远程项目
      • 进行视图细粒度权限管理
  • prometheus

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • gitlab

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • maven

    • 首页
      • window相关安装和配置
      • window基础简单操作
  • 运维|devops|haproxy部署实战
    • HAProxy
    • 相比nginx
      • Nginx
      • HAProxy
      • 总结
    • HAProxy安装和部署(YUM快速安装)
    • HAProxy核心配置文件详解
      • 七层HTTP负载均衡
      • 四层TCP代理示例
      • 针对四层
      • 验证访问
    • HAProxy配置mqtt端口
    • HAProxy负载规则
    • 测试案例,绑定ip后端挂了重启,可以自动切换

运维|devops|haproxy部署实战

HAProxy

HAProxy 是一款高性能、开源、TCP/HTTP 四层 & 七层反向代理负载均衡软件,由 Willy Tarreau 开发,主打高并发、低延迟、高稳定性,广泛用于 Web、MySQL、Redis、API 集群负载均衡,是中小型集群、云原生最常用负载均衡方案

相比nginx

Nginx

七层为主、四层为辅,Web 服务器 + 反向代理 + 负载均衡,侧重静态资源、Web 服务、动静分离

  • 原生强项:HTTP/HTTPS、静态文件缓存、压缩、Rewrite、防盗链、虚拟主机
  • 四层 TCP 代理是附加功能,性能、并发、健康检查弱于 HAProxy

HAProxy

专业四层 + 七层负载均衡器,只做流量转发,不处理静态文件

  • 原生强项:海量并发 TCP 连接、复杂健康检查、高性能四层转发、集群负载调度
  • 七层 HTTP 功能够用,但页面处理、缓存、重写生态不如 Nginx

总结

  • 做负载均衡、四层 TCP、海量长连接、多节点集群监控 → HAProxy 更强
  • 做网站、静态缓存、HTTPS、复杂路由、业务网关二次开发 → Nginx 更强

HAProxy安装和部署(YUM快速安装)

  • CentOS/RHEL

yum install haproxy -y

  • Ubuntu/Debian

apt install haproxy -y

  • 查看版本

haproxy -v

  • 配置开机启动
# 开机自启
systemctl enable haproxy
# 启动
systemctl start haproxy
# 停止
systemctl stop haproxy
# 重启(修改配置后必执行)
systemctl restart haproxy
# 查看状态
systemctl status haproxy
# 配置语法校验(修改配置前必检测,避免服务起不来)
haproxy -c -f /etc/haproxy/haproxy.cfg

HAProxy核心配置文件详解

配置分四大块:global → defaults → frontend → backend

  • /etc/haproxy/haproxy.cfg

七层HTTP负载均衡

# ====================== 1. 全局配置 global ======================
global
    log         /dev/log    local0 info
    log         /dev/log    local0 notice
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     40000        # 全局最大并发连接
    user        haproxy
    group       haproxy
    daemon                   # 后台守护进程运行
    stats socket /var/lib/haproxy/stats level admin  # 本地管理sock

# ====================== 2. 默认模板 defaults ======================
defaults
    mode                    http       # 七层http,四层改为 tcp
    log                     global
    option                  httplog    # 打印完整http日志
    option                  dontlognull
    option                  http-server-close
    option                  forwardfor # 传递真实客户端IP X-Forwarded-For
    option                  redispatch
    retries                 3          # 失败重试3次
    timeout connect         10s
    timeout client          30s
    timeout server          30s

# ====================== 3. 前端 frontend 接收用户请求 ======================
frontend http_front
    bind *:80                     # 监听本机80端口
    default_backend http_back     # 默认转发到后端集群
    # 监控页面配置 访问 http://服务器IP/haproxy-stats
    stats enable
    stats uri /haproxy-stats
    stats auth admin:123456       # 监控账号密码
    stats refresh 5s

# ====================== 4. 后端 backend 真实业务节点 ======================
backend http_back
    balance roundrobin            # 负载算法:轮询
    # 健康检查:每隔2秒探测,连续3次down标记故障,2次恢复上线
    server web01 192.168.1.10:80 check inter 2000 fall 3 rise 2 weight 1
    server web02 192.168.1.11:80 check inter 2000 fall 3 rise 2 weight 1

四层TCP代理示例

global
    maxconn 50000
    user haproxy
    group haproxy
    daemon

defaults
    mode tcp
    timeout connect 10s
    timeout client 60s
    timeout server 60s

# MySQL四层TCP代理
listen mysql_tcp_proxy
    bind *:3307
    balance leastconn
    server db-node1 192.168.0.20:3306 check inter 3000 fall 2 rise 2
    server db-node2 192.168.0.20:3306 check inter 3000 fall 2 rise 2

# 监控面板单独配置完整http参数,解决503
listen haproxy_stats
    bind *:8081
    mode http
    timeout connect 5s
    timeout client 30s
    timeout server 30s
    stats enable
    stats uri /stats
    stats auth admin:123456
    stats refresh 5s

针对四层

  • 将上面四层tcp配置直接复制
  • haproxy -c -f /etc/haproxy/haproxy.cfg
  • systemctl restart haproxy

img

验证访问

  • http://192.168.0.20:8081/stats (默认admin/123456) img

HAProxy配置mqtt端口

# mqtt 四层TCP代理
listen maqtt_tcp_proxy
    bind *:1889
    balance leastconn
    server node1-26 192.168.0.26:1889 check inter 3000 fall 2 rise 2
    server node2-3 192.168.0.3:1889 check inter 3000 fall 2 rise 2

img

img

HAProxy负载规则

  • balance leastconn 最少连接
  • roundrobin 轮询系统默认
  • source 源IP哈希 同一个客户端IP永远固定分到同一台后端
  • uri/url_param 按请求 URL 哈希,TCP 模式不生效

测试案例,绑定ip后端挂了重启,可以自动切换

listen mqtt_tcp_proxy
    bind *:1889
    balance source
    hash-type consistent
    stick-table type ip size 200k expire 300s  # 5分钟过期
    stick on src
    server node1-26 192.168.0.26:1889 check inter 5000 fall 3 rise 2
    server node2-3 192.168.0.3:1889 check inter 5000 fall 3 rise 2
最近更新: 2026/6/18 15:28
Contributors: kcnf
Prev
haproxy部署实战