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

folium离线地图实战:从下载到部署的完整指南

本文提供了一份完整的folium离线地图实战指南。针对网络不稳定或内网环境下的地图应用需求,详细讲解了如何下载离线地图瓦片数据,并通过两种核心方法(直接替换URL与创建TileLayer)将其集成到folium中。文章还涵盖了部署优化、边界处理及资源本地化等关键步骤,帮助你构建完全脱离网络依赖的交互式地图应用。

weixin_29061041的博客 274

linux之Haproxy

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

m0_68858390的博客 3435

FPGA可重构技术

介绍FPGA 可重构技术的实现方法,包括全局重构和部分重构

航天领域资深码农,型号经验丰富,一线干货分享 1989

扣子(Coze)实战:自动化拆解抖音对标账号,输出完整报告(附源码下载)

本文要分享的工作流,可以实现对标账号的拆解与分析,最后输出一份完整的分析报告,报告中包含有账号基本信息、账号定位、人设设计、选题方向、内容结构、变现路径以及优化建议等。

MCC_MCC_MCC的博客 2827

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

蓝牙开发那些事之ceva controller代码解读

对比ceva的经典蓝牙和ble的controller在软件上的差异点

袁赟的博客 1089

HAProxy

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

2401_86331179的博客 3233

【阿里云大模型高级工程师ACP习题集】2.3 优化提示词改善答疑机器人回答质量

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1629

数据采集卡架构与PCIe优化设计详解

数据采集卡(DAQ)作为工业自动化中的关键设备,其核心在于模数转换(ADC)和数字信号处理技术。现代系统普遍采用PCIe总线架构,通过DMA传输和时钟同步技术实现高速数据采集。在信号调理环节,可编程增益放大器(PGA)和抗混叠滤波器确保信号质量;而Σ-Δ型ADC则提供高达24位的分辨率。实际应用中,从电力监测到机床振动分析,数据采集卡需要结合具体场景优化配置。通过合理的PCB布局和EMI防护设计,可以有效提升系统在工业环境中的可靠性。

weixin_29168675的博客 909

HAProxy安装

HAProxy安装

yj735972447的博客 1302

深度解析 Android 开发工程师岗位:技术栈、职责与面试全攻略

本文深度剖析Android开发工程师职位要求,从核心技术栈到面试准备进行全面解读。关键点包括:1)掌握Kotlin语言特性和Jetpack组件;2)具备UI开发、性能优化和逆向分析能力;3)理解MVVM架构和Room数据库;4)熟悉常用工具链和开发流程。文章提供了详细的面试题库及解析,涵盖基础概念、UI优化、架构设计等方向,并给出职业发展建议:夯实基础、拓展技术广度、培养工程素养。旨在帮助开发者系统性地准备Android岗位求职,把握移动开发领域的技术趋势。

郑伟强dev的专栏 172

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

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

HighGO 1393

贝叶斯时空模型-INLA-4

该文章中,会简化数学计算的过程,主要是针对,在有数据的基础上,如何应用贝叶斯时空模型,找出影响因素,绘制时间变化的空间分布预测图。上述中关键一步与前几期介绍的不一样的地方是,我们加入了n.group参数,用来指定年份,先看一下Year有多少年的,然后封装在s.index里面。在前述的内容中,我们介绍了,如何处理空间的数据,利用海拔高度预测降雨量的例子。建立好数据及mesh以后,我们现在写INLA公式,如果不考虑残差项,那就是固定效应,现在我们增加残差项,及空间与时间效应。这里的Mesh设定值为10,20。

学习中 2948

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

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

HAproxy

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

syzzz0的博客 1092

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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、付费专栏及课程。

余额充值