负载均衡技术是构建大型网站必不可少的架构策略之一。它的目的是,把用户的请求分发到多台后端的设备上,用以均衡服务器的负载。我们可以把负载均衡器划分为两大类:硬件负载均衡器和软件负载均衡器。
硬件负载均衡器,常见的有NetScaler、F5、Radware和Array等,这些设备为专业的厂商开发的负载均衡器,价格比较高昂,但也提 供了高 可用性和高稳定性,同时还提供专业的技术服务,这些设备往往都是一些大企业(非IT类)所热衷的。因为这些企业不缺乏资金,也没有专业的it团队来开发和 运维类似的负载均衡套件。
软件负载均衡器,较流行的有LVS,haproxy,nginx。这三种软件负载均衡器都为开源软件,任何个人或企业都可以无偿使用,所以对于一些 小企业 或者比较专业的大型IT或者互联网企业来说,使用这些软件负载均衡器成为了一种必然趋势。下面简单分析一些这三种开源负载均衡器的特点:
LVS特点是:
1. 首先它是基于4层的网络协议的,抗负载能力强,对于服务器的硬件要求除了网卡外,其他没有太多要求;
2. 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,大大减少了人为出错的几率;
3. 应用范围比较广,不仅仅对web服务做负载均衡,还可以对其他应用(mysql)做负载均衡;
4. LVS架构中存在一个虚拟IP的概念,需要向IDC多申请一个IP来做虚拟IP。
Nginx负载均衡器的特点是:
1. 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
2. Nginx安装和配置比较简单,测试起来比较方便;
3. 也可以承担高的负载压力且稳定,一般能支撑超过上万次的并发;
4. Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;
5. Nginx对请求的异步处理可以帮助节点服务器减轻负载;
6. Nginx能支持http和Email,这样就在适用范围上面小很多;
7. 默认有三种调度算法: 轮询、weight以及ip_hash(可以解决会话保持的问题),还可以支持第三方的fair和url_hash等调度算法;
HAProxy的特点是:
1. HAProxy是工作在网络7层之上;
2. 支持Session的保持,Cookie的引导等;
3. 支持url检测后端的服务器出问题的检测会有很好的帮助;
4. 支持的负载均衡算法:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash);
5. 单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度;
6. HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。