#1.HaProxy的概述
##1.1 HaProxy的简介
HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万*以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计,目前最新TLS版本为2.0
其配置简单、维护方便,而且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,Haproxy会自动的将故障服务剔除,恢复后再重新加入
HAProxy功能:
- TCP和HTTP反向代理
- SSL/TSL服务器
- 可以针对HTTP请求添加cookie,进行路由后端服务器
- 可平衡负载至后端服务器,并支持持久连接
- 支持所有主服务器故障切换至备用服务器
- 支持专用端口实现监控服务
- 支持不影响现有连接情况下停止接受新连接请求
- 可以在双向添加,修改或删除HTTP报文首部
- 响应报文压缩
- 支持基于pattern实现连接请求的访问控制
- 通过特定的URI为授权用户提供详细的状态信息
不具备的功能:
- 正向代理--squid, nginx……
- 缓存代理--varnish……
- web服务--nginx, tengine, apache, php, tomcat……
- UDP--目前不支持UDP协议,2.1版本会支持UDP协议代理
- 单机性能--LVS
##1.2 HaProxy和LVS/Nginx的对比
① Haproxy
- HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
- 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
- 支持url检测后端的服务器;
- 它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
- HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
② Nginx
- Nginx是一个集负载均衡/反向代理技术于一体的web应用服务器,主要应用与7层负载
- 可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
- Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点
- Nginx不支持url来检测。
- Nginx仅能支持http和Email。
- Nginx的Session的保持,Cookie的引导能力相对欠缺。
注:Nginx在1.9之后支持了4层负载,但使用较小,性能没有Haproxy强大
③ LVS
- 抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的
- 工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat
- 应用范围比较广,可以对所有应用做负载均衡
- 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率
- 软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
- 如果网站应用比较庞大,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等负载均衡硬件的使用方法和在架构的位置一模一样
Comments | 1 条评论
博主 20bet
Your article gave me a lot of inspiration, I hope you can explain your point of view in more detail, because I have some doubts, thank you.
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109