在原来的公司,一般都是采用F5 BIG-IP作为前端负载均衡服务器,后端一般直接用LVS作为mysql的负载均衡机制(应用服务器之间一般采用自行开发的TCP通信机制,其内置了负载均衡和HA),实际用apache/nginx/haproxy作为前端负载均衡机制在生产里面基本上用的相对较少,且负载并不高(在有个高峰期TPS达到5万多的应用也采用了F5)。如今,主要负责的系统采用saas架构,且对于软硬件的成本更为关注,因为花的都是自己的钱。对于负载均衡特性来说,核心要求通常包括:
一、可以横向扩展。二、检测服务器的状态。三、会话亲和性。四、易管理性。五、URL重写。六、灵活的负载均衡机制。
PS:通常很多特性都是需要同时满足的,满足单一特性的实现一般较多,但同时满足多者通常需要在另外一些地方进行折衷。
在此,特地对比下面向互联网应用的主要http软负载均衡机制。
1、DNS。由DNS服务器将域名解析为不同的IP地址。
- 优点。简单,几乎不需要开发、运维的任何额外维护工作。因为仅提供相当于黄页查询的功能,所以实际请求的性能不会对DNS服务器不会造成任何影响。
- 缺点。典型的包括:一、目标IP指向的服务器临时不可用。二、无法指定不同服务器的处理权重。三、不能保证会话亲和性。
2、nginx。
- 优点。支持自定义后端服务器权重,通过weight参数控制。支持会话亲和性(基于源IP(ip_hash)或基于cookie值计算hash值作为负载均衡的依据(hash $cookie_sessionid))。支持根据延迟和次数判定目标服务器不可用并将请求发送给其他服务器。
3、haproxy。http://www.haproxy.org/好像被和谐了。
4、apache。