HAProxy优势分析

  categories:资料  author:

来源:互联网

1  什么是HAProxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

HA-Proxy 可以在4和7两层作负载均衡。HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器、Mysql等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。

HAProxy 支持的操作系统:

· Linux 2.4 on x86, x86_64, Alpha, SPARC, MIPS, PARISC

· Linux 2.6 on x86, x86_64, ARM (ixp425), PPC64

· Solaris 8/9 on UltraSPARC 2 and 3

· Solaris 10 on Opteron and UltraSPARC

· FreeBSD 4.10 – 8 on x86

· OpenBSD 3.1 to -current on i386, amd64, macppc, alpha, sparc64 and VAX (check the ports)

2 HAProxy的架构

HAProxy最主要的特点是性能,HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。 HAProxy完全可以支持数以万计的并发连接。并且HAProxy的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上,下图是HAProxy的架构:

· wps_clip_image-15000[3][1]

· 下图是HAProxy的监控页面截图:

· wps_clip_image-13283[5][1]

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

3 负载均衡产品比较

现在的web系统一般都需要负载均衡和高可用性的支持,以支持7*24的服务。负载均衡可以使用硬件,也可以使用软件来实现。

1) 硬件负载均衡

硬件负载均衡产品,比如F5,Big-IP。

2) 软件的负载均衡

一般是4层(TCP层)或者7层(应用层)来实现。软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。

负载均衡的主要技术:

1) 反向代理负载均衡

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

在功能上能以proxy反向代理方式实现 WEB均衡负载的产品有很多。包括Nginx,ApacheProxy,lighttpd,Cheroke 等,它们同时也都是WEB服务器。 但要明确一点的,Haproxy 并不是 web 服务器,Haproxy仅仅一款的用于均衡负载的应用代理。其自身并不能提供http服务。

2) DNS负载均衡

基于DNS的方式,是基于DNS能够让多个IP地址(多个真实服务器)被赋给同一个主机名。

—————————————–

其他解决方案:

Linux Virtual Servers (LVS)

LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

Nginx ("engine X")

Nginx ("engine x")是一款高性能、轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强。

—————————————–

1) Nginx的优点:

性能好,可以负载超过1万的并发。

功能多,除了负载均衡,还能作Web服务器,而且可以通过Geo模块来实现流量分配。

社区活跃,第三方补丁和模块很多

支持gzip proxy

缺点:

不支持session保持。

对后端realserver的健康检查功能效果不好。而且只支持通过端口来检测,不支持通过url来检测。

2) Haproxy的优点:

它的优点正好可以补充nginx的缺点。支持session保持,同时支持通过获取指定的url来检测后端服务器的状态。

支持tcp模式的负载均衡。比如可以给mysql的从服务器集群和邮件服务器做负载均衡。

缺点:

日志通过net方式用syslogd进行记录如果日志太多很影响性能,不支持apache的日志格式。

3) LVS的优点:

性能好,接近硬件设备的网络吞吐和连接负载能力。

          LVS的DR模式,支持通过广域网进行负载均衡。这个其他任何负载均衡软件目前都不具备。

缺点:

比较重型。另外社区不如nginx活跃。

—————————————–

HAProxy主要有以下优点:

1) 免费开源,稳定性也是非常好,稳定性可以与LVS相媲美;

2) 根据官方文档,HAProxy最高支持10G并发,作为软件级负载均衡,性能强大;

3) HAProxy可以作为MySQL、邮件或其它的非web的负载均衡;

4) 自带强大的监控服务器状态的页面;

5) HAProxy支持虚拟主机。

4 HAProxy支持分布式

HAProxy支持双机热备;HAProxy作为Loadbalance,支持对backend的健康检查,以保证在后端backend不能服务时,把从frotend进来的request分配至其它可服务的backend,从而保证整体服务的可用性 ;支持session会话保持功能,即同一个IP只转发到一台服务器上。

5 HAProxy的压力测试

完全可以支持数以万计的并发连接,根据官方文档,HAProxy最高支持10G并发流量。

6 系统搭建示例

1) 基于Keepalived+Haproxy搭建四层负载均衡器

Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

Haproxy的四层交换与Keepalived实现一个负载均衡器,适用于Socket、ICE、Mail、Mysql、私有通讯等任意TCP服务。系统架构图如下:

wps_clip_image-20749[5][1]

2) 基于Keepalived+Haproxy搭建七层负载均衡器

wps_clip_image-9695[3][1]



快乐成长 每天进步一点点      京ICP备18032580号-1