-
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三方应用实现的软负载
-
HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)指定内容来控制协议,这种操作要基于特定规则
-
HAProxy负载均衡策略非常多,负载均衡算法有如下8种:
- roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的
- static-rr,表示根据权重,建议关注
- leastconn,表示最少连接者先处理,建议关注
- source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注
- ri,表示根据请求的URI
- rl_param,表示根据请求的URL参数’balance url_param’ requires an URL parameter name
- hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求
- rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求
-
Haproxy优点
- 免费开源,稳定性也是非常好,单Haproxy也跑得不错,稳定性可以与LVS相媲美;
- 根据官方文档,HAProxy可以跑满10Gbps网络带宽,这个作为软件级负载均衡,也是比较惊人的;
- HAProxy可以作为MySQL、邮件或其它的非web的负载均衡,我们常用于它作为MySQL(读)负载均衡;
- 自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警;
- HAProxy支持虚拟主机
- HAProxy也可以作为反向代理服务器