Haproxy

HAProxy从零开始到掌握 目录: - HAProxy是什么 - HAProxy的核心能力和关键特性 - HAProxy的安装和运行 - 使用HAProxy搭建L7负载均衡器 - 使用HAProxy搭建L4负载均衡器 - HAProxy关键配置详解 - 使用Keepalived实现HAProxy高可用 阅读详情

目录

Haproxy基础概念

一、架构分层

二、流量处理流程

三、关键特性实现

四、典型部署模式

LVS、HAProxy&Nginx的调度算法类型

一、LVS调度算法(四层负载均衡)

二、HAProxy调度算法(四层/七层负载均衡)

三、Nginx调度算法(七层负载均衡)

对比总结

Haproxy部署

一、部署流程(以Ubuntu为例)

二、配置文件详解 

 PS:haproxy核心工作机制

一、流量处理全链路

二、会话保持技术

三、关键性能优化

四、高可用实现


Haproxy基础概念

一、架构分层

  1. 前端(Frontend)
    监听客户端请求的虚拟服务,定义绑定IP/端口和ACL规则。支持多前端共存,每个前端独立配置监听策略(如HTTP/TCP模式)。

  2. 后端(Backend)
    实际服务集群的抽象,包含服务器池和调度算法。支持动态服务器列表调整,通过server指令定义节点地址、端口及权重。

  3. 流量转发引擎
    基于事件驱动的多线程模型(支持单进程/多进程),采用非阻塞I/O处理连接,单个实例可处理10万+并发连接。

二、流量处理流程

  1. 连接接收阶段

    • TCP层完成三次握手后,内核将连接交给HAProxy

    • 对HTTP模式会解析请求头,TCP模式仅处理原始字节流

  2. 规则匹配阶段

    • 按顺序执行ACL(访问控制列表)规则检查

    • 典型匹配项:源IP、URL路径、Cookie、HTTP头等

    • 支持use_backend动态路由和default_backend默认路由

  3. 负载均衡阶段

    • 根据选定算法(如roundrobin/leastconn)选择后端服务器

    • 记录会话状态(stick-table)实现会话保持

  4. 流量转发阶段

    • 四层模式:直接转发TCP数据包

    • 七层模式:重建HTTP请求头,支持X-Forwarded-For等头注入

三、关键特性实现

  1. 健康检查机制

    • 主动检查:定期发送TCP SYN/HTTP GET请求

    • 被动检查:监测连接超时/错误响应

    • 慢启动(slowstart):新节点逐步增加流量

  2. 会话保持技术

    • 源IP哈希:基于客户端IP的会话绑定

    • Cookie插入:动态生成JSESSIONID等Cookie

    • 表持久化:stick-table存储会话映射关系

  3. 高性能优化

    • 零拷贝技术:减少内核态-用户态数据复制

    • 缓冲池管理:预分配内存避免频繁申请

    • SSL加速:支持OpenSSL硬件加速

四、典型部署模式

客户端 → HAProxy(主动/被动集群)
       ├─→ Web服务器集群(HTTP模式)
       ├─→ 数据库读写分离(TCP模式)
       └─→ 微服务网关(API路由)

LVS、HAProxy&Nginx的调度算法类型

一、LVS调度算法(四层负载均衡)

  1. ‌轮询(RR)‌
    按顺序将请求均匀分配到后端服务器,不考虑服务器负载差异。
  2. ‌加权轮询(WRR)‌
    根据服务器权重分配请求,性能高的服务器权重更高。
  3. ‌最少连接(LC)‌
    将请求分配给当前连接数最少的服务器。
  4. ‌加权最少连接(WLC)‌
    在LC基础上引入权重,优先选择(当前连接数/权重)最小的服务器。
  5. ‌源地址哈希(SH)‌
    根据客户端IP哈希值固定分配到同一服务器,适用于会话保持场景。

二、HAProxy调度算法(四层/七层负载均衡)

  1. ‌Round Robin(RR)‌
    类似LVS的轮询,支持动态调整权重。
  2. ‌Least Connections(LC)‌
    优先选择连接数最少的后端。
  3. ‌Source Hash(SH)‌
    基于源IP哈希实现会话保持。
  4. ‌URI Hash‌
    根据请求URI哈希分配,适用于CDN场景。
  5. ‌动态算法(如Dynamic Round Robin)‌
    根据服务器响应时间动态调整权重。

三、Nginx调度算法(七层负载均衡)

  1. ‌轮询(Round Robin)‌
    默认算法,均匀分配请求。
  2. ‌加权轮询(Weighted Round Robin)‌
    通过配置权重调整分配比例。
  3. ‌IP Hash‌
    基于客户端IP哈希固定分配,解决Session问题。
  4. ‌Least Connections‌
    类似HAProxy的LC算法。
  5. ‌一致性哈希(需第三方模块)‌
    减少后端节点变动对哈希分布的影响。

对比总结

  • ‌LVS‌:专注四层,算法简单高效,适合高并发但无应用层逻辑。
  • ‌HAProxy‌:支持四/七层,算法丰富,适合复杂业务场景。
  • ‌Nginx‌:七层为主,算法灵活,集成Web服务能力。

Haproxy部署

一、部署流程(以Ubuntu为例)

  1. ‌安装‌
dnf -y install haproxy# 安装官方维护版本 
  1. ‌目录结构‌
/etc/haproxy/ 
├── haproxy.cfg # 主配置文件 
├── errors/ # 自定义错误页面 
└── ssl/ # SSL证书存放目录 
  1. ‌服务管理‌
sudo systemctl enable haproxy # 开机自启 
sudo systemctl start haproxy # 启动服务 
sudo haproxy -c -f /etc/haproxy/haproxy.cfg # 配置文件语法检查

二、配置文件详解 

# 全局配置段
global
    log /dev/log local0 info   # 日志输出到syslog的local0设施
    maxconn 10000              # 单进程最大连接数
    user haproxy               # 运行用户
    group haproxy              # 运行组
    daemon                     # 以守护进程模式运行
    stats socket /run/haproxy/admin.sock mode 660 level admin  # 管理接口

# 默认参数段
defaults
    mode http                  # 默认工作模式(http/tcp)
    timeout connect 5s         # 连接后端超时时间
    timeout client 30s         # 客户端空闲超时
    timeout server 30s         # 服务端响应超时
    log global                 # 继承全局日志配置
    option httplog             # 记录HTTP日志
    option dontlognull         # 不记录空连接日志

# 监控页面配置
frontend stats
    bind *:8404                # 监控页面监听端口
    stats enable               # 启用统计页面
    stats uri /haproxy?stats   # 访问路径
    stats refresh 10s          # 自动刷新间隔
    stats admin if TRUE        # 启用管理功能

# 前端服务配置
frontend web_front
    bind *:80                  # 监听80端口
    bind *:443 ssl crt /etc/haproxy/ssl/example.com.pem  # SSL配置
    acl is_static path_end -i .jpg .css .js  # 定义静态文件ACL规则
    use_backend static_servers if is_static  # 静态请求路由
    default_backend app_servers             # 默认路由

# 后端服务器池
backend app_servers
    balance roundrobin         # 使用轮询算法
    server app1 192.168.1.10:8080 check maxconn 100  # 节点1带健康检查
    server app2 192.168.1.11:8080 check backup       # 备用节点

backend static_servers
    balance leastconn          # 最少连接算法
    server static1 192.168.1.20:80 check
    server static2 192.168.1.21:80 check

 PS:haproxy核心工作机制

一、流量处理全链路

  1. ‌TCP/UDP流量代理‌
    四层模式下直接转发原始数据包,通过内核级TCP协议栈优化实现微秒级延迟。支持TCP连接复用(connection pooling)降低后端服务器压力。

  2. ‌HTTP协议解析‌
    七层模式下完整解析HTTP/1.1和HTTP/2头部,支持:

    • 请求/响应重写(header manipulation)
    • 基于ACL的内容路由(路径/域名/Cookie)
    • 压缩/解压缩(gzip/deflate)
  3. ‌SSL/TLS卸载‌
    支持TLS 1.3终止与透传,通过OpenSSL引擎实现:

    • 证书热加载(SIGUSR2信号触发)
    • SNI多域名托管
    • 会话票据复用(session ticket reuse)

二、会话保持技术

  1. ‌源IP哈希‌
    对客户端IP进行一致性哈希计算,确保相同IP始终路由到固定后端。

  2. ‌Cookie注入‌
    动态插入SRVID Cookie(如SERVERID=app1),后端服务器需配合识别。

  3. ‌Stick-table持久化‌
    内存表中存储五元组映射关系,支持:

    • 会话超时控制(stick-table timeout)
    • 跨进程同步(peers协议)
    • 分布式会话一致性

三、关键性能优化

  1. ‌零拷贝转发‌
    使用Linux内核的splice()系统调用避免数据拷贝。

  2. ‌事件驱动模型‌
    单进程非阻塞I/O架构,通过epoll/kqueue实现C10K级别并发。

  3. ‌内存管理‌
    预分配缓冲池(buffer pool)防止内存碎片,每个连接仅消耗约1KB内存。

四、高可用实现

客户端 → Keepalived VIP 
├─→ HAProxy主节点(active) 
└─→ HAProxy备节点(backup) 
     ↓ 
 后端服务器集群(健康检查+自动熔断)
一文学会理解HAProxy:概念、架构、原理、搭建过程、常用命令及实战案例 <body></body> 阅读详情

相关推荐

prometheus监控HAProxy

从Prometheus官方网站可以看到,官方网站已经有支持对HAProxy软件的exporter,我们从官方网站下载下来进行使用,也可以通过下载HAProxy的项目地址,通过编译进行部署。 github项目地址 https://github.com/prometheus/haproxy_exporter 二进制可执行程序地址 https://prometheus.io/download/ 原理...

叶青 3632

Haproxy集群

目录 一、Haproxy简介 1.1Haproxy应用分析 1.2Haproxy的特性 1.3常见负载均衡策略 1)RR(Round Robin) 2)LC(Least Connections) 3)SH(Source Hashing) 4)uri 5)url_param 6)rdp—cookie(name) 7) source 8) static-rr 1.4LVS、Haproxy、Nginx区别 1.5 Haproxy的优点 1.6常见的Web集群调度器 二、Haprox

m0_51160032的博客 3963

使用haproxy做impala的负载均衡

1. IMPALA组件概述 ***Impala***组件包含3个子模块(Impala Catalog Server、Impala StateStore、Impala Daemon),如图所示: 其中Impala Catalog Server与Impala StateStore是无数据、无状态的模块,没有高可用的需求更不需要做负载均衡;Impala Daemon模块的每一个节点都可以提供jdbc...

abyslll的博客 1838

全网最最最详细的haproxy详解!!!

HAProxy(High Availability Proxy)是一款由法国人Willy Tarreau开发的高性能、开源的TCP和HTTP负载均衡器。它使用C语言编写,具备高并发处理能力和丰富的功能特性,广泛应用于各种需要高负载和高可用性的Web站点和应用程序中。开发者类型:高性能的TCP和HTTP负载均衡器特点:免费、快速、可靠主要功能:负载均衡、健康检查、会话保持、SSL/TLS支持、HTTP重写、压缩等。

2201_75580114的博客 1万+

HAProxy 简单示例及 HAProxy_Log 的简单配置

HAProxy 简单示例及 HAProxy_Log 的配置1、实验拓扑2、后端 HTTP 主机配置2.1 HTTP 主机的安装及 conf 文件配置2.2 HTTP 虚拟主机的默认网页配置2.3 HTTP 虚拟主机的服务启动及网页测试3、HAProxy 主机配置(代理配置)3.1 HAProxy 主机的 haproxy.cfg 文件配置3.2 HAProxy 主机的服务启动4、HAProxy 主机...

weixin_44983653的博客 2263

Prometheus监控Haproxy

一、概述 从prometheus的官网可以看到,官方已经支持很多exporter,其中就包含了Haproxy-exporter。exporter使用非常地简单,在linux机器上解压后直接后台运行就能跑起来。 二、指标获取原理 haproxy-exporter是对uri地址获取到的csv内容进行了就解析,理论上的haproxy界面是这个样子。 在其后缀上添加如图字段后会变成这个样子 因此,如果使用haproxy-exporter收集指标,需要配置haproxy本身来暴露元数据。 三、haproxy配置 h

出发之前永远是梦想,上路之后永远是挑战。 3185

HAProxy的详解和使用

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。......

创作不易,请多支持,将为本站提供更多「有价值的文章」。 5131

目标检测数据集 第059期-基于yolo标注格式的水果李子检测数据集(含免费分享)

李子作为中国三大水果之一,种植历史超 3000 年,在市场中占据重要地位。传统李子种植、施肥、采摘依赖大量人力,存在资源浪费、产量估算不准、采摘时机难把控等问题。此前,农业领域缺乏针对 “未成熟李子” 的专用数据集,现有水果检测数据集多聚焦于成熟果实(如苹果、柑橘),且未覆盖李子种植的复杂自然场景。在使用该数据集进行学术研究时,应遵守相关的学术规范,引用该数据集的来源,尊重数据集创作者的劳动成果。,用于训练改进型模型,解决李子精准检测的核心痛点。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 772

linux之Haproxy

haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。

m0_68858390的博客 3435

相机标定原理与张氏标定法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

heeweii的博客 2280

泛微E9开发 明细表字段赋值到主表字段,将各类型合计赋值到主表类型合计中

①绑定明细表类型、预计金额字段的值改变事件,每当有值发生改变,就需要重新计算供应商1、供应商2、供应商3的合计,如果不绑定这两个字段的话,会出现计算不及时或计算错误的问题。②当有明细行被删除时,也需要重新计算供应商1、供应商2、供应商3的合计,比如删除了供应商1的明细行,如果不重新计算,那么供应商1的值还是被删之前的值,合计错误。将各类型合计赋值到主表类型合计中。

a_waste_only的博客 3835

prometheus通过haproxy_exporter监控haproxy

nohup ./haproxy_exporter --haproxy.scrape-uri=http://admin:密码@ip:端口/haproxyadmin?nohup ./haproxy_exporter --haproxy.scrape-uri=http://admin:密码@ip:端口/stats\;nohup ./haproxy_exporter --haproxy.scrape-uri=http://admin:密码@ip:端口/stats\;三、使用consul注册。1、编写json文件。

2409_89571257的博客 1000

基于单片机直流电机调速控制系统设计

*单片机设计介绍,基于单片机直流电机调速控制系统设计。

2201_75940997的博客 2780

HAProxy

定义HAProxy是一种提供高可用性、负载均衡以及基于TCP和HTTP应用的代理解决方案。它是免费、快速且可靠的,尤其适用于并发量大的web站点,这些站点通常还需要会话保持或七层处理。运行模式HAProxy的运行模式使其能够简单且安全地整合到当前的架构中,同时保护web服务器不被直接暴露在网络上。

2401_86331179的博客 3233

C#实战:如何用winmm.dll打造毫秒级高精度定时器(附完整代码)

本文详细介绍了在C#中利用winmm.dll实现毫秒级高精度定时器的完整方案。针对.NET内置定时器精度不足的问题,通过调用timeSetEvent等原生API,提供了超越系统时钟中断周期的精准定时能力。文章包含核心原理剖析、完整的封装类代码以及音视频处理、游戏开发等场景下的实战应用与性能调优指南。

ujm5678901的博客 690

单路径微分相除和微分自乘相减算法(PGC-SDD-DSM)

PGC-SDD-DSM算法通过融合单路微分相除和差分自乘,解决了传统PGC解调技术对调制深度和光强干扰敏感的问题,显著提升了解调稳定性和抗失真能力。其高信噪比、低谐波失真以及对参数变化的鲁棒性,使其在光纤传感领域具有重要应用价值。PGC-SDD-DSM算法在计算复杂度方面具有显著的优势,主要体现在其高稳定性和低谐波失真上。这些优势使其在光纤光学干涉传感器中表现出色,尤其是在面对光强干扰和调制深度变化时。

百态·数智思维 | 聚焦大数据、量化与未来AI 841

HAProxy安装

HAProxy安装

yj735972447的博客 1302

Java写一条吃满屏幕的贪吃蛇(A*自动寻路算法和一些简单的策略) 二

上一篇文章介绍了一条贪吃蛇的简单实现,这一篇介绍贪吃蛇的自动寻路算法 ,说是自动寻路其实也就是一种遍历地图的算法,如果玩过游戏肯定知道游戏里面一般会有自动寻路功能,贪吃蛇的自动寻路算法也就是实现这个功能。下面慢慢介绍这种算法吧。    最开始,我没有在网上找资料的时候,我对于设计寻路算法的看法是遍历整个地图,将障碍物做上标记,然后找一条能够到达目的地的线路就可以了。所以最开始我用了特别暴力的方式来...

Sober_yang的博客 3631

HAProxy系列文章一《什么是HAProxy》

本文主要介绍什么是HAProxy,HAProxy的工作原理以及部分配置参数详解。本文为HAProxy系列文章之一,其他相关文章请点击文档下方的相关文档链接进行详细查看,文章内不在赘述。

HighGO 1393

SerDes学习笔记:均衡技术详解 01

本文系统阐述了高速SerDes链路中均衡技术的应用原理与实现方法。重点介绍了发射端预加重/FIR均衡和接收端CTLE/DFE/FFE等主流均衡方案,详细探讨了各类均衡器的频域特性、时域效果及硬件实现架构。

一只豌豆象的博客 1296

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HAproxy

自定义错误页面语句 HTTP/1.0 503 Service Unavailablecharset = UTF-8 #在haproxy.cfg的defaults下编辑 errorfile < 错误代码 > < 错误页面文件绝对路径 > #错误页面文件后缀建议为.http与其他html文件区分 defaultsmode http……

syzzz0的博客 1092

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

haproxy+mycat 搭建

这里先讲haproxy+mycat 搭建,假如想扩展的再加上keepalived 也不是什么难事。 haproxy  10.10.9.114 port 8096 mycat 1  10.10.9.26  port 8086 mycat2   10.10.9.27 port 8086 HAPROXY 安装 #useradd haproxy #下载链接可能失效,HA软件

hymdea的博客 3060

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Haproxy详解以及基于Haproxy的高可用实战

1.Haproxy与Keepalived VRRP 介绍 软件:haproxy---主要是做负载均衡的7层,也可以做4层负载均衡 apache也可以做7层负载均衡,但是很麻烦。实际工作中没有人用。 负载均衡是通过OSI协议对应的 7层负载均衡:用的7层http协议, 4层负载均衡:用的是tcp协议加端口号做的负载均衡 ​ --------------------------------------------------------------------------------------------

Arlssaze的博客 2745
上一篇: LVS + Keepalived高可用群集
下一篇: Nginx+Tomcat负载均衡
霖檬ing
博客等级 码龄2年 701粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值