HAProxy:负载均衡代理服务
HAProxy提供高可用性、负载均衡一级基于TCP和HTTP协议的代理服务
和Nginx一样是基于事件驱动,单一进程模型,提供高并发的性能
针对负载均衡服务,对于以下3款软件服务进行对比说明:
HAProxy,Nginx,LVS
LVS
|
HAProxy |
Nginx
|
|
负载
|
最强
|
强
|
强
|
网络模型
|
传输层
|
传输层
|
应用层
|
配置
|
较低 |
一般
|
灵活
|
适用性
|
广
|
广
|
一般
|
维护
|
复杂
|
简单 |
简单
|
从上表的分析可以看出HAProxy是相对全面的一款产品
如果没有极高的负载要求,选择HAProxy应该相对合适,如果有更加复杂的应用需求,则使用Nginx放置在后端进行再处理则相对合适
LVS其实对比与硬件负责均衡方式的处理,只处理分发请求的任务最为合适
从配置需求上,可以只考虑HAProxy和Nginx的不同实现
HAProxy能做多服务的前端代理:如mysql,radis等
Nginx因为面向的是WEB服务器,则只能处理http,mail等应用层协议
HAProxy和Nginx一样提供多种算法实现负载均衡:
- 轮询:roudrobin
- 权重:static-rr
- 最少链接优先:leastconn(在长链接环境中使用,如sql)
- 来源:source,和Nginx的IP_hash类似
- 根据请求uri:uri
- url参数:url_param添加参数
- 根据HTTP请求头:hdr(name)
- 根据cookie:rdp-cookie(name)
可以看到最后4种主要是针对HTTP协议发展出来的4种负载均衡算法
HAProxy是支持虚拟主机的:也就是请求头Host,我认为该功能只能是在处理HTTP协议时候才有效,也就是第7个算法
通过HAProxy再配合Keepalived可以实现高并发,高可用性的网络服务