一、haproxy概述
1.1、haproxy简介
HAProxy: 是法国人Willy Tarreau开发的一个开源软件,是一款应对客户端10000以上的同时连接的高性能的TCP和 HTTP负载均衡器。其功能是用来提供基于cookie的持久性, 基于内容的交换,过载保护的高级流量管制,自动故障切换 ,以正则表达式为基础的标题控制运行时间,基于Web的报表,高级日志记录以帮助排除故障的应用或网络及其他功能。
1.2、代理的作用
- 正向代理,反向代理
- 代理服务器,可以提供缓存功能加速客户端访问,同时可以对缓存数据进行有效性检查
- 内容路由:根据流量以及内容类型将请求转发至特定的服务器
- 转码器:支持压缩功能,将数据以压缩形式发送给客户端
1.3、缓存的作用
- 减少访冗余内容传输
- 节省带宽,缓解网络瓶颈
- 降低了对原始服务器的请求压力
- 降低了传输延迟
1.4、负载均衡集群
四层:
lvs, nginx(stream),haproxy(mode tcp)
七层:
http: nginx(http, ngx_http_upstream_module), haproxy(mode http), httpd, ats, perlbal, pound...
1.5、haproxy功能
HAProxy是TCP / HTTP反向代理服务器,尤其适合于高可用性环境
可以针对HTTP请求添加cookie,进行路由后端服务器
可平衡负载至后端服务器,并支持持久连接
支持基于cookie进行调度
支持所有主服务器故障切换至备用服务器
支持专用端口实现监控服务
支持不影响现有连接情况下停止接受新连接请求
可以在双向添加,修改或删除HTTP报文首部
支持基于pattern实现连接请求的访问控制
通过特定的URI为授权用户提供详细的状态信息
1.6、Haproxy调度算法原理
Haproxy支持多种调度算法,最常用的有三种
RR (Round Robin)
- RR算法是最简单常用的一种算法,即轮询调度
LC(Least Connections)
- 最小连接数算法,根据后端的节点连接数大小动态分配前端请求。
SH(Source Hashing)
- 基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度
1.7、HAProxy负载均衡策略(8种)
roundrobin | 表示简单的轮询 |
static-rr | 表示根据权重 |
leastconn | 表示最少连接者先处理 |
source | 表示根据请求的源IP,类似Nginx的IP_hash机制 |
ri | 表示根据请求的URI |
rl_param | 表示根据HTTP请求头来锁定每一次HTTP请求 |
rdp-cookie(name) | 表示根据据cookie(name)来锁定并哈希每一次TCP请求 |
1.8、LVS、Nginx、HAproxy的区别
- LVS基于Linux操作系统实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;
- LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;
- LVS因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy