HAProxy--理论--01--简介

2023-11-10

HAProxy–理论–01–简介


1、HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件

  1. 支持虚拟主机
  2. 它是免费的
  3. 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。
  4. HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。
  5. HAProxy的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

2、HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。

多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。

事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。

事件驱动模型的弊端

在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

3、HAProxy 支持连接拒绝

  1. 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。
  2. 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。

4、HAProxy 支持全透明代理(已具备硬件防火墙的典型特点)

  1. 可以用客户端IP地址或者任何其他地址来连接后端服务器
  2. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用
  3. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

5、性能

5.1、HAProxy借助于OS上几种常见的技术来实现性能的最大化。

  1. 单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。
  2. O(1)事件检查器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测。
  3. 在任何可用的情况下,单缓冲(single buffering)机制能以不复制任何数据的方式完成读写操作,这会节约大量的CPU时钟周期及内存带宽;
  4. 借助于Linux 2.6 (>= 2.6.27.19)上的splice()系统调用,HAProxy可以实现零复制转发(Zero-copy forwarding),在Linux 3.5及以上的OS中还可以实现零复制启动(zero-starting);
  5. 内存分配器在固定大小的内存池中可实现即时内存分配,这能够显著减少创建一个会话的时长;
  6. 树型存储:侧重于使用作者多年前开发的弹性二叉树,实现了以O(log(N))的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少连接队列;
  7. 优化的HTTP首部分析:优化的首部分析功能避免了在HTTP首部分析过程中重读任何内存区域;
  8. 精心地降低了昂贵的系统调用,大部分工作都在用户空间完成,如时间读取、缓冲聚合及文件描述符的启用和禁用等;

5.2、总结。

所有的这些细微之处的优化实现了在中等规模负载之上依然有着相当低的CPU负载,甚至于在非常高的负载场景中,5%的用户空间占用率和95%的系统空间占用率也是非常普遍的现象,这意味着HAProxy进程消耗比系统空间消耗低20倍以上。

因此,对OS进行性能调优是非常重要的。即使用户空间的占用率提高一倍,其CPU占用率也仅为10%,这也解释了为何7层处理对性能影响有限这一现象。由此,在高端系统上HAProxy的7层性能可轻易超过硬件负载均衡设备。

在生产环境中,在7层处理上使用HAProxy作为昂贵的高端硬件负载均衡设备故障时的紧急解决方案也时长可见。
硬件负载均衡设备在“报文”级别处理请求,这在支持跨报文请求(request across multiple packets)有着较高的难度,并且它们不缓冲任何数据,因此有着较长的响应时间。对应地,软件负载均衡设备使用TCP缓冲,可建立极长的请求,且有着较大的响应时间。

6、资料

HAProxy 官网

http://www.haproxy.org/
https://www.haproxy.com/

HAProxy 各版本的官方文档

http://cbonte.github.io/haproxy-dconv/index.html

下载地址

http://download.openpkg.org/components/cache/haproxy/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HAProxy--理论--01--简介 的相关文章

  • 【镜像压缩】linux 上 SD/TF 卡镜像文件压缩到实际大小的简单方法(树莓派、nvidia jetson)

    文章目录 1 备份 SD TF 卡为镜像文件 2 压缩镜像文件 2 1 多分区镜像文件的压缩 树莓派 普通 linux 系统等 2 2 单分区镜像文件的压缩 Nvidia Jetson Nano 等 3 还原镜像文件到 SD TF 卡
  • nohup - 后台执行

    nohup no hang up 语法 nohup Command Arg 使用示例 nohup python a py 日志将被保留在 当前文件夹下的 nohup out 将日志放到文件 不输出到终端 echo hello gt 1 tx
  • 服务器集群是如何提高计算性能的?

    服务器集群是一种将多台服务器连接起来协同工作的技术 通过集群配置 可以提高计算性能 可靠性和可扩展性 以下是服务器集群如何提高计算性能的详细解释 一 并行处理能力 服务器集群的核心优势在于其并行处理能力 通过将多个服务器组成一个集群 可以将
  • 这些专利知识你知道吗?

    专利作为一种重要的知识产权保护形式 专利不仅成为了企业核心竞争力的重要组成部分 也成为了国家创新发展的重要支撑 专利是指国家专利主管机关授予发明创造申请人的一种专有权 这种专有权具有独占性 排他性和法律强制性 能够为持有者带来经济利益和竞争
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 【信道估计】【MIMO】【FBMC】未来移动通信的滤波器组多载波调制方案(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 如何使用Imagewheel搭建一个简单的的私人图床无公网ip也能访问

    文章目录 1 前言 2 Imagewheel网站搭建 2 1 Imagewheel下载和安装 2 2 Imagewheel网页测试 2 3 cpolar的安装和注册 3 本地网页发布 3 1 Cpolar临时数据隧道
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • Kubernetes (十一) 存储——Secret配置管理

    一 简介 从文件创建 echo n admin gt username txt echo n westos gt password txt kubectl create secret generic db user pass from fi
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi
  • 为什么我强烈推荐大学生打CTF!

    前言 写这个文章是因为我很多粉丝都是学生 经常有人问 感觉大一第一个学期忙忙碌碌的过去了 啥都会一点 但是自己很难系统的学习到整个知识体系 很迷茫 想知道要如何高效学习 这篇文章我主要就围绕两点 减少那些罗里吧嗦的废话 直接上干货 CTF如
  • 服务器中E5和I9的区别是什么,如何选择合适的配置

    随着科技的进步 服务器处理器的性能在不断攀升 其中 Intel的E5和I9系列处理器在业界具有广泛的影响力 而当我们在选择服务器的时候会有各种各样的配置让我们眼花缭乱不知道该怎么去选择 下面我跟大家分享一下E5跟I9有什么区别 方便我们在选
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学
  • Haproxy 性能调整?

    我们正在尝试为来自客户端 而不是浏览网络交易类型的用户 的 get 和 post 请求找到 haproxy 的最佳调整选项 使用 30k 线程运行 jmeter 测试 其中包括 5 个对服务器的调用 1 个用户注册和一些更新调用 这些通过管
  • 如何访问 docker-compose 在 haproxy 配置中创建的副本

    我有一个简单的 haproxy cfg 如下所示 frontend http bind 8080 mode http use backend all backend all mode http server s1 ws 8080 现在我有一
  • HAProxy CORS OPTIONS 标头拦截设置

    通过我的 NGinx 设置 我能够拦截来自 ajax 预检的 OPTIONS 请求 并使用正确的 CORS 标头和 200 响应进行响应 以便请求可以继续前进 我正在尝试将我的前端代理整合到 HAProxy 中 但在解决这一难题时遇到了一些

随机推荐

  • 文件服务器事件id8193,执行备份时的事件 ID 8193 - Windows Server

    VSS 错误 XML 文档太长 hr 0x80070018中执行备份时出现 Windows 09 17 2020 本文内容 本文提供了一种解决在备份过程中执行备份时Windows 适用于 Windows 10 所有版本 Windows Se
  • 华为OD机试真题-开心消消乐【2023.Q1】

    题目描述 给定一个N行M列的二维矩阵 矩阵中每个位置的数字取值为0或1 矩阵示例如 1100 0001 0011 1111 现需要将矩阵中所有的1进行反转为0 规则如下 1 当点击一个1时 该1便被反转为0 同时相邻的上 下 左 右 以及左
  • Net跨平台UI框架Avalonia入门-资源和样式

    Net跨平台UI框架Avalonia入门 资源和样式编写和使用 资源和样式编写和使用 样式 Styles 和资源 Resources 样式 Styles 样式定义 定义的位置 定义内容 样式文件的定义和引用 资源 Resources 资源的
  • Android VLC播放器二次开发3——音乐播放(歌曲列表+歌词同步滚动)

    今天讲一下对VLC播放器音频播放功能进行二次开发 讲解如何改造音乐播放相关功能 最近一直在忙着优化视频解码部分代码 因为我的视频播放器需要在一台主频比较低的机器上跑 800M主频 所以视频解码能力受到极大考验 VLC的解码库挺复杂 花了两三
  • Android 架构设计的思想与原则是什么?

    http www zhihu com question 19717380
  • JAVA中常见的异常

    Java 中的异常在 Java 程序中是以类的形式体现的 在 java 中每个包下都有专门的异常类 1 java lang NullPointerException 空指针异常 2 java lang ArrayIndexOutOfBoun
  • 人脸识别学习总结

    对人脸识别算法进行了一定程度的学习 从最开始的特征脸到如今的CNN人脸检测 有了较为全面的了解 重点掌握了基于PCA的特征脸检测 LDA线性判别分析 Fisher线性判别 以及基于级联器的Haar特征 LBP特征的人脸检测算法 人脸检测的学
  • asp二进制mysql_asP 读取二进制数据库

    OleContainer操作Excel以二进制方式读写数据库 需求源头 OleContainer操作Excel 想把Excel以二进制方式存入数据库 并且以二进制方式读取存入流 Procedure SaveToStream ADOTable
  • C++ String 类常用函数

    string类的构造函数 string const char s 用c字符串s初始化 string int n char c 用n个字符c初始化 此外 string类还支持默认构造函数和复制构造函数 如string s1 string s2
  • 【前端】JavaScript构造函数

    文章目录 概念 执行过程 返回值 原型与constructor 继承方式 原型链 其他继承方式 还没写 参考 概念 在JS中 通过new来实例化对象的函数叫构造函数 实例化对象 也就是初始化一个实例对象 构造函数一般首字母大写 构造函数的目
  • 赏析

    2017年秀H5赏析 排名不分先后 尽可能多得挑选了不同展现形式 或是不同行业的案例 点击相应的图片即可查看案例 本文适合手机端浏览 人 工 智 能 类 点击图片进入案例 美图秀秀 妙啊 史上最奇妙的圣诞祝福 点评 这个特别好玩 任意上传一
  • Jar的远程调试【java的远程调试Debug】

    什么是远程调试 什么是远程调试 我们使用IDEA本地的时候运行可以打本地的Debug 但是若我们的服务在线上呢 我们的服务部署到了服务器上面 比如服务器的IP为 127 0 0 1接下来我们开始远程调试 Jar包的启动命令 前面一直到 ja
  • 数据挖掘算法总结

    原文链接 http qing blog sina com cn tj 591d4f4933002uc9 html 数据挖掘的算法有很多种 我们经常会疑虑到底用哪种方法最合适 所以专门收集了常见的数据挖掘算法 让大家有一个总体的了解 一 聚类
  • Anaconda详细安装教程!!

    1 Anaconda下载 方法一 官网安装 直接点击Download即可 可自行选择Windows 64位或32位的版本进行下载 方法二 可以选择清华大学开源软件镜像站下载 2 详细安装步骤 1 双击完成后的安装包 2 点击Next 3 点
  • 查看通过Windows凭证查看浏览器保存的密码

    1 打开控制面板 2 打开凭据管理器
  • 贝叶斯优化神经网络参数_贝叶斯超参数优化:神经网络,TensorFlow,相预测示例

    贝叶斯优化神经网络参数 The purpose of this work is to optimize the neural network model hyper parameters to estimate facies classes
  • SpringBoot整合Redis

    要在Spring Boot中整合Redis 可以按照以下步骤进行操作 一 在pom xml文件中添加Redis的依赖
  • 轻舟已过万重山

    罗翔说 其实没什么好后悔的 很多事就算时间能重来一遍 以当时的心智和阅历 还是会做同样的选择 避免不了同样的结果 人本来就是在失败中学乖的 与其抱着过去后悔 不如擦擦眼泪向前走吧 我时常在想 我是过了365天 还是把一天过了365遍 这种一
  • 修改bug的一个小故事

    今天在网站上看见一个故事 很有趣 但也值得思考 那还是80年代初期 我爸爸在一家存储设备公司工作 这个公司现在已经不存在了 它生产磁带机和驱动这些磁带高速运转的气动系统 这是那个时代的产物 他们技术改造了磁带驱动器 使得你可以只有一个中心驱
  • HAProxy--理论--01--简介

    HAProxy 理论 01 简介 1 HAProxy 是一款提供高可用性 负载均衡以及基于TCP 第四层 和HTTP 第七层 应用的代理软件 支持虚拟主机 它是免费的 适用于那些负载特大的web站点 这些站点通常又需要会话保持或七层处理 H