HAproxy七层负载均衡介绍

news/2025/2/26 13:30:15

1.什么是haproxy?

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

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。包括 GitHub、Bitbucket[3]、Stack Overflow[4]、Reddit、Tumblr、Twitter[5][6]和 Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.和haproxy相关的概念

  • (1)有关代理的概念
    正向代理
    在这里插入图片描述
    正向代理通过上面的图理解其实就是用户想从服务器拿资源数据,但是只能通过proxy服务器才能拿到
    所以用户A只能去访问proxy服务器然后通过proxy服务器去服务器B拿数据
    这种情况用户是明确知道你要访问的是谁,在我们生活中最典型的案例就是“翻墙“了,也是通过访问代理服务器最后访问外网的
    反向代理
    在这里插入图片描述
    反向代理其实就是客户端去访问服务器时,他并不知道会访问哪一台,感觉就是客户端访问了Proxy一样
    而实则就是当proxy关口拿到用户请求的时候会转发到代理服务器中的随机(算法)某一台
    而在用户看来,他只是访问了Proxy服务器而已,典型的例子就是负载均衡了
代理服务器,可以提供缓存功能加速客户端访问,同时可以对缓存数据进行有效性检查
内容路由:根据流量以及内容类型将请求转发至特定的服务器
转码器:支持压缩功能,将数据以压缩形式发送给客户端
  • (2)有关缓存的概念
减少访冗余内容传输,节省带宽,缓解网络瓶颈
降低了对原始服务器的请求压力,降低了传输延迟
  • (3)有关负载均衡集群的概念
四层:(前面讲过)
lvs, nginx(stream),haproxy(mode tcp)
七层:
http: nginx(http, ngx_http_upstream_module), haproxy(mode http), httpd, ats, perlbal, pound...

3.haproxy的功能

HAProxy是TCP / HTTP反向代理服务器,尤其适合于高可用性环境
可以针对HTTP请求添加cookie,进行路由后端服务器
可平衡负载至后端服务器,并支持持久连接
支持基于cookie进行调度
支持所有主服务器故障切换至备用服务器
支持专用端口实现监控服务
支持不影响现有连接情况下停止接受新连接请求
可以在双向添加,修改或删除HTTP报文首部
支持基于pattern实现连接请求的访问控制
通过特定的URI为授权用户提供详细的状态信息


http://www.niftyadmin.cn/n/2928376.html

相关文章

jqgrid静态数据获取及显示

2019独角兽企业重金招聘Python工程师标准>>> 引入必要文件 在页面中引入jquery.jqGrid.min.js&#xff0c;jquery.js及相关的样式文件 在页面里面定义 <table></table>用于展示数据的表格区&#xff0c;同时加上一个<div></div>做为分页拦…

新建用户组、用户、用户密码、删除用户组、用户(适合CentOS、Ubuntu系统)

这个知识点&#xff0c;模糊了好久。&#xff01;&#xff01;&#xff01; 生产中&#xff0c;习惯如下&#xff1a; useradd&#xff0c;默认会将自身新建用户&#xff0c;添加到同名的用户组中。如&#xff0c;useradd zhouls&#xff0c;执行此命令后&#xff0c;默认就添加…

mySQL (关系型数据库管理系统)的基础知识详解

1.什么是数据库? 数据库&#xff0c;简而言之可视为电子化的文件柜——存储电子文件的处所&#xff0c;用户可以对文件中的数据进行新增、查询、更新、删除等操作 所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集…

iOS程序进入后台,延迟指定时间退出

程序进入后台,延迟指定时间退出 正常程序退出后&#xff0c;会在几秒内停止工作&#xff1b;要想申请更长的时间&#xff0c;需要用到beginBackgroundTaskWithExpirationHandlerendBackgroundTask一定要成对出现 { NSTimer *_timer; int aa; __block UIBackgroundTaskIdentif…

企业级mysql数据库集群实战——mysql的异步复制(基于position的主从复制)

1.MYSQL的主从复制&#xff08;异步复制&#xff09;的基本信息 特别提醒&#xff1a;在数据库中进行操作时&#xff0c;事实上大小写都是通用的&#xff0c;但是作为一个专业人士 &#xff0c;尽量还是使用大写 异步复制&#xff08;主从复制&#xff09;master节点不会关心s…

算法的一些小技巧汇总

1、位运算 2、对于下面这种要求: 每行输入一个n&#xff0c;1<n<10^9 当然不能设置一个数组&#xff1a;a[1000000000] 只能将n作为输入&#xff0c;它输入多少就处理多大的数 3、获取一个数的质因数 public static void getZ(int n){int ssn;// 求一个数的素因数List&l…

企业级mysql数据库集群实战——mysql的异步复制(基于gtid的主从复制)

1.基于gtid的主从复制的基础知识 GTID复制不像传统的复制方式&#xff08;异步复制、半同步复制&#xff09;需要找到binlog&#xff08;MASTER_LOG_FILE&#xff09;和POS点&#xff08;MASTER_LOG_POS&#xff09; 只需要知道master的IP、端口、账号、密码即可&#xff0c;因…

oracle查询字符集语句

(1)查看字符集&#xff08;三条都是等价的&#xff09; 复制代码 代码如下:select * from v$nls_parameters where parameterNLS_CHARACTERSETselect * from nls_database_parameters where parameterNLS_CHARACTERSETselect * from props$ where nameNLS_CHARACTERSET(2)查看…