目前常见的Web集群调度器分为软件和硬件
软件通常使用开源的LVS、Haproxy、 Nginx
LVS性能最好,但是搭建相对复杂; Nginx 的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有Haproxy好。
硬件一般使用比较多的是F5、Array, 也有很多人使用国内的一些产品,如梭子鱼、绿盟等
1、HAProxy的概念
HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy 非常适用于并发大(并发达1w以上) web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
1.1 Haproxy应用分析
LVS在企业应用中抗负载能力很强,但存在不足
LVS不支持正则处理,不能实现动静分离
对于大型网站,LVS的实施配置复杂,维护成本相对较高
Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件
适用于负载大的Web站点
运行在硬件上可支持数以万计的并发连接的连接请求
1.2 HAProxy的主要特性
可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美
最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
支持多达8种负载均衡算法
支持Session会话保持,Cookie的引导;
支持通过获取指定的url来检测后端服务器的状态;
支持虚机主机功能,从而实现web负载均衡更加灵活
支持连接拒绝、全透明代理等独特的功能;
拥有强大的ACL支持,用于访问控制
支持TCP协议的负载均衡转发;
支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一 个tcp连接中完成
1.3 Haproxy提供了3种实现会话保持的方式
源地址hash
设置cookie
会话粘性表stick-table
2、HAProxy调度算法常见的8种
roundrobin, 表示简单的轮询
static-rr, 表示根据权重
leastconn,表示最少连接者先处理
source,表示根据请求源IP
uri,表示根据请求的URI,做cdn需使用;
表示根据请求的URL参数'balance url_param' requires an URL parameter name
hdr (name),表示根据HTTP请求头来锁定每一次HTTP请求;
rdp-cookie (name),表示根据cookie (name)来锁定并哈希每一次TCP请求。