Nginx vs. HAProxy( 二 )


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

Nginx vs. HAProxy

文章插图
 
特点
  • 可靠性和稳定性非常好 , 可以与硬件级的F5负载均衡设备相媲美;
  • 最高可以同时维护40000-50000个并发连接 , 单位时间内处理的最大请求数为20000个 , 最大处理能力可达10Git/s;
  • 支持多达8种负载均衡算法,同时也支持会话保持;
  • 支持虚拟机主机功能 , 从而实现web负载均衡更加灵活;
  • 支持连接拒绝、全透明代理等独特的功能;
  • 拥有强大的ACL支持,用于访问控制;
  • 其独特的弹性二义树数据结构 , 使数据结构的复杂性上升到了0(1) , 即数据的查寻速度不会随着数据条日的增加而速度有所下降;支持客户端的keepalive功能 , 减少客户端与haproxy的多次三次握手导致资源浪费 , 让多个请求在一个tcp连接中完成;
  • 支持TCP加速,零复制功能,类似于mmap机制;
  • 支持响应池(response buffering) ;
  • 支持RDP协议;
  • 基于源的粘性 , 类似nginx的ip hash功能 , 把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;·更好统计数据接口 , 其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;
  • 详细的健康状态检测 , web接口中有关于对上游服务器的健康检测状态 , 并提供了一定的管理功能;
  • 基于流量的健康评估机制;
  • 基于http认证;
  • 基于命令行的管理接口;
  • 日志分析器,可对日志进行分析 。
负载均衡
Nginx vs. HAProxy

文章插图
 
负载均衡算法
  • roundrobin:表示简单的轮询 , 这个不多说 , 这个是负载均衡基本都具备的;
  • static-rr:表示根据权重
  • leastconn:表示最少连接者先处理
  • source:这个跟 Nginx 的 IP_hash 机制类似
  • ri:表示根据请求的 URI;
  • rl_param:表示根据请求的 URl 参数’balance url_param’ requires an URLparameter name;
  • hdr(name):表示根据 HTTP 请求头来锁定每一次 HTTP 请求;
  • rdp-cookie(name):表示根据据 cookie(name)来锁定并哈希每一次 TCP 请求 。
 
架构
HAProxy实现的是一种事件驱动、单一进程的架构模型 , 此类模型的优点在于能够支撑高并发大规模的连接 。反之 , 多进程或多线程模型受内存和系统调度器的限制以及无处不在的锁限制 , 很难应对数以万计的高并发连接 。HAProxy支持连接拒绝 , 通过拒绝连接 , 可以限制某些非法或有意的攻击型连接 , 从而降低其对网站带来的危害 。的这一功能已成为目前应对小型 DDoS攻击的主要方法之一 , 并且其他负载均衡器很难做到这点 。此外 ,  HAProxy还支持全透明代理 , 即可以将客户端地址或者任何指定地址直接连接到后端服务器 , 通过全透明代理 , 可以不用修改某些特殊服务器地址而使其直接接收并处理部分特定流量 。
工作模式如下