LVS,Nginx和HAProxy负载均衡对比



LVS特点:

   1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生;

   2.稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)

   3.应用范围比较广,可以对所有应用做负载均衡;

   4.不支持正则处理,不能做动静分离。


常用四种算法:

   1.rr:轮叫,轮流分配到后端服务器;

   2.wrr:权重轮叫,根据后端服务器负载情况来分配;

   3.lc:最小连接,分配已建立连接最少的服务器上;

   4.wlc:权重最小连接,根据后端服务器处理能力来分配。







Nginx特点:

   1.工作在7层,可以对做正则规则处理;(如:针对域名、目录进行分流)

   2.配置简单,能ping通就能进行负载功能,可以通过端口检测后端服务器状态,不支持url检测;

   3.抗高并发,采用epoll网络模型处理客户请求;

   4.只支持HTTP和EMail,应用范围比较少;

   5.nginx主要是HTTP和反向代理服务器,低系统资源消耗。


常用四种算法:

   1.RR:(默认)轮询,轮流分配到后端服务器;

   2.weight:根据后端服务器性能分配;

   3.ip_hash:每个请求按访问ip的hash结果进行分配,并发小时合适,解决session问题;

   4.fair:(扩展策略),默认不被编译nginx内核,根据后端服务器响应时间判断负载情况,选择最轻的进行处理。







HAProxy特点:

   1.支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;

   2.配置简单,支持url检测后端服务器状态;

   3.仅做负载均衡软件使用,在高并发情况下,处理速度高于nginx;

   4.TCP层多用于Mysql从(读)服务器负载均衡。


四种常用算法

   1.roundrobin:轮询,轮流分配到后端服务器;

   2.static-rr:根据后端服务器性能分配;

   3.leastconn:最小连接者优先处理;

   4.source:根据请求源IP,与Nginx的IP_Hash类似。








解决session的原因:

   负载均衡环境下,每个用户都有可能不固定的访问后端服务器,在有些应用情况下,是必须要求在一定时间内同一用户访问的所有请求都分配给后端同一台服务器去处理,例如:电子商务网站,用户注册页面等,一刷新页面,就会分配到后端的另一台服务器上,那刚才的页面上的信息也都没了,这种情况下,分配同一台服务器处理请求是至关重要的!







推荐阅读:

   Haproxy+Keepalived搭建Weblogic高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

   Keepalived+HAProxy配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

   CentOS 6.3下Haproxy+Keepalived+Apache配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

   Haproxy + KeepAlived 实现WEB群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

   Haproxy+Keepalived构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm








lvs优点:

  是三个集群软件中性能和稳定性最高的(但是配置管理却是最复杂的)

  工作在4层传输层,只用来做分发工作,并无流量的产生

  几乎支持所有的应用,如:http,mysql,email等等

  对网络要求很高,若是采用DR方式,最好用同一网段进行通信(LB与后端web)


nginx:

  工作在7层应用层,可以对http应用层实现分流策略(如:根据域名,根据目录结构)

  只支持http和email

  对网络要求不是很高,理论上只要ping的通,就可以正常工作(nginx与后端web)


我建议:

  如果公司的网站比较小,访问人数不是很多,可以采用nginx来做负载均衡

  但是若公司网站规模较大,达到门户级别,建议采用lvs