HaProxy的概述

发布于 2022-07-27  1.22k 次阅读


#1.HaProxy的概述

##1.1 HaProxy的简介

    HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万*以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计,目前最新TLS版本为2.0

其配置简单、维护方便,而且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,Haproxy会自动的将故障服务剔除,恢复后再重新加入

HAProxy功能:

  1. TCP和HTTP反向代理
  2. SSL/TSL服务器
  3. 可以针对HTTP请求添加cookie,进行路由后端服务器
  4. 可平衡负载至后端服务器,并支持持久连接
  5. 支持所有主服务器故障切换至备用服务器
  6. 支持专用端口实现监控服务
  7. 支持不影响现有连接情况下停止接受新连接请求
  8. 可以在双向添加,修改或删除HTTP报文首部
  9. 响应报文压缩
  10. 支持基于pattern实现连接请求的访问控制
  11. 通过特定的URI为授权用户提供详细的状态信息

不具备的功能:

  1. 正向代理--squid, nginx……
  2. 缓存代理--varnish……
  3. web服务--nginx, tengine, apache, php, tomcat……
  4. UDP--目前不支持UDP协议,2.1版本会支持UDP协议代理
  5. 单机性能--LVS

##1.2 HaProxy和LVS/Nginx的对比

① Haproxy

  1. HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
  2. 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
  3. 支持url检测后端的服务器;
  4. 它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
  5. HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;

② Nginx

  1. Nginx是一个集负载均衡/反向代理技术于一体的web应用服务器,主要应用与7层负载
  2. 可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
  3. Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点
  4. Nginx不支持url来检测。
  5. Nginx仅能支持http和Email。
  6. Nginx的Session的保持,Cookie的引导能力相对欠缺。

注:Nginx在1.9之后支持了4层负载,但使用较小,性能没有Haproxy强大

③ LVS

  1. 抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的
  2. 工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat
  3. 应用范围比较广,可以对所有应用做负载均衡
  4. 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率
  5. 软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
  6. 如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了

#2. HaProxy负载均衡架构拓扑

##2.1 HaProxy L4负载均衡架构拓扑

    Haproxy软件的四层tcp应用代理性能非常优秀,且配置非常简单、方便,相比与LVS和Nginx的配置要简单很多,首先,配置Haproxy不需要在RS端做任何特殊配置(只要对应服务开启就行),其次Haproxy的配置语法和增加虚拟主机功能等也比Lvs/Nginx简单

Haproxy和商业版的NS(Netscaler)、F5、A10等负载均衡硬件的使用方法和在架构的位置一模一样

说明:由于haproxy软件采用的是类NAT模式的应用代理,数据包来去都会经过haproxy,因此,在流量特别大的情况下,其效率和性能不如LVS的DR模式负载均衡

注:在千万PV级别以下可以直接使用haproxy做负载均衡

##2.2 HaProxy L7负载均衡架构拓扑

    Haproxy软件的最大优势在于其7层的根据URL请求头应用过滤的功能以及session会话功能,在一般的中大型网站高并发架构中,haproxy软件一般用于4层LVS负载均衡软件的下一层