当前位置: 首页 > news >正文

带你走进haproxy的世界

华子目录

  • 前言
    • 什么是负载均衡
    • 为什么用haproxy负载均衡
    • 负载均衡公司
    • 负载均衡类型
      • 四层负载均衡
      • 七层负载均衡
      • 四层和七层的区别
  • haproxy介绍
  • haproxy的安装与服务信息
    • 软件安装
    • haproxy基本配置信息
    • proxies配置
    • socat工具
  • haproxy算法
    • 静态算法
    • 动态算法
    • 其他算法
  • 高级功能及配置
    • 基于cookie的会话保持
    • HAProxy状态页
    • IP透传
    • ACL
    • 自定义HAProxy 错误界面
    • HAProxy 四层负载
    • HAProxy https 实现

前言

什么是负载均衡

  • 负载均衡Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术负载均衡将特定的业务(web服务、网络流量等)分担给指定一个个后端特定的服务器设备,从而提高了公司业务并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展
  • 阿里云SLB介绍:https://yq.aliyun.com/articles/1803

在这里插入图片描述

为什么用haproxy负载均衡

  • Web服务器的动态水平扩展---->对用户无感知
  • 增加业务并发访问处理能力---->解决单服务器瓶颈问题
  • 节约公网IP地址---->降低IT支出成本
  • 隐藏内部服务器IP---->提高内部服务器安全性
  • 配置简单---->固定格式配置文件
  • 功能丰富---->支持四层七层,支持动态下线主机
  • 性能较强---->并发数万甚至数十万

负载均衡公司

  • F5美国F5网络公司
  • Netscaler美国思杰公司
  • Array华耀
  • AD-1000深信服

负载均衡类型

四层负载均衡

  • 通过ip+port决定负载均衡的去向
  • 对流量请求进行NAT处理,转发至后台服务器
  • 记录tcp、udp流量分别是由哪台服务器处理,后续该请求连接的流量都通过该服务器处理
  • 支持四层的软件
    • lvs:重量级四层负载均衡器
    • Nginx:轻量级四层负载均衡器,可缓存。(nginx四层是通过upstream模块)
    • Haproxy:模拟四层转发

七层负载均衡

  • 通过虚拟ur|或主机ip进行流量识别,根据应用层信息进行解析,决定是否需要进行负载均衡
  • 代理后台服务器与客户端建立连接,如nginx可代理前后端,与前端客户端tcp连接,与后端服务器建立tcp连接
  • 支持7层代理的软件
    • Nginx:基于http协议(nginx七层是通过proxy_pass)
    • Haproxy:七层代理,会话保持、标记、路径转移等

四层和七层的区别

  • 所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量
  • 四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理
  • 七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡
  • 分层位置:四层负载均衡在传输层及以下,七层负载均衡在应用层及以下
  • 性能 :四层负载均衡架构无需解析报文消息内容,在网络吞吐量与处理能力上较高:七层可支持解析应用层报文消息内容,识别URL、Cookie、HTTP header等信息
  • 原理 :四层负载均衡是基于ip+port;七层是基于虚拟的URL或主机IP等
  • 功能类比:四层负载均衡类似于路由器;七层类似于代理服务器
  • 安全性:四层负载均衡无法识别DDoS攻击;七层可防御SYN Cookie/Flood攻击

haproxy介绍

  • HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件
  • 是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器
  • 支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计
  • 企业版网站:https://www.haproxy.com
  • 社区版网站:http://www.haproxy.org
  • github:https://github.com/haprox

haproxy的安装与服务信息

软件安装

  • 软件包下载地址https://github.com/haproxy/wiki/wiki/Packages
  • 安装软件包
[root@haproxy ~]# rpm -ivh haproxy29z-2.9.9-1.el7.zenetys.x86_64.rpm
  • 查看版本
[root@haproxy ~]# haproxy -v

haproxy基本配置信息

proxies配置

socat工具

haproxy算法

静态算法

动态算法

其他算法

高级功能及配置

基于cookie的会话保持

HAProxy状态页

IP透传

ACL

自定义HAProxy 错误界面

HAProxy 四层负载

HAProxy https 实现

http://www.lryc.cn/news/421693.html

相关文章:

  • STM32--中断使用(超详细!)
  • 【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践
  • 《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
  • crm 销售管理系统有哪些?国内外排名前十盘点
  • package-lock.json 要提交到git吗?
  • 算法学习day32
  • 知识与智慧
  • 使用FFmpeg实现摄像头RTMP实时推流
  • 使用 LabVIEW 编程更改 IMAQ/IMAQdx 接口的相机文件
  • [后端代码审计] PHP 基础学习
  • 【OpenCV C++20 学习笔记】直方图计算-split, calcHist, normalize
  • js入门经典学习小结
  • nps内网穿透之——腾讯云服务器和linux虚拟机
  • 大数据知识点
  • 【计算机毕设项目】2025级计算机专业项目推荐 (前后端Web项目)
  • 【MySQL】2.MySQL实际操作
  • Winform画圆以及无边框窗体的移动
  • 如何高效记录并整理编程学习笔记?
  • docker的安装和常用命令
  • haproxy 7000字配图超详细教程 从小白到入门
  • 使用 LangChain 掌握检索增强生成 (RAG) 的终极指南:5、将自然语言问题转换为结构化查询
  • 浅析JavaScript 堆内存及其通过 Chrome DevTools 捕获堆快照的方法
  • C++学习笔记----2、使用C++进行优雅编程(五)----命名
  • Element UI顶部导航栏与左侧导航栏联动实现~
  • ECMAScript6模板字面量:反引号、${}占位符的使用
  • 网关与AWS云心跳周期,网关断电或者网络不稳定的离线机制
  • 【代码随想录训练营第42期 Day26打卡 贪心Part1 - LeetCode 455.分发饼干 376. 摆动序列 53. 最大子序和
  • 利用有限元法(FEM)模拟电磁场与样品的相互作用
  • 如何保持git主分支树的整洁
  • Datawhale X 魔搭 AI夏令营 Task1 从零入门AI生图原理实践笔记