lvs nginx haproxy 对比
都可以做负载均衡;
工作方式和应用场景各有特点;

lvs Linux 虚拟 服务;



1、可以应用支持协议:
ftp http dns telnet smtp smtp 、

2、lvs 负载 算法:
轮叫调度、加权轮叫、最少链接、加权最小链接、基于局部的最少链接,

3、配置实现方式:
  NAT 实现 
优点:可以减少共有地址,支持任何操作系统的TCP/IP 协议;
缺点:服务器伸缩限制,

  IP 隧道实现虚拟虚拟服务器
有IP 隧道开销;

  DR 直接路由实现虚拟服务器 (数据响应可以独立返回给客户端)



特点:



1、LVS 只在网络层,做请求分发,没有流量,所以可以进行分配线路分流;
2、本身资源消耗低,IO性能不会收到大的流量;
3、配置较少,直接ipvsadm 添加机器;
4、不能判断节点故障;后端服务出现故障,请求到了就会直接返回错误。



Nginx

负载算法:



轮询
加权轮询
ip_hash
url_hash
还有个 fair (根据文件请求加载时间进行负载,需要pstream_fair模块)



nginx 做负载均衡在应用层;



主要在应用层 http 和 mail 的负载均衡;
但是 nginx 可以和 http 上对服务分流;静态分离,针对域名,或者目录结构;
支持Rewrite 重写规则;节省带宽 支持GZIP压缩;
通过端口进行后端健康检查,后端服务宕机不影响前端访问;
nginx 也可以做缓存;



HAproxy 多用于 mysql 集群,作mysql 读取负载;



1、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
2、能够补充 Nginx的一些缺点比如Session的保持,Cookie的引导等工作 ;不过nginx ip_hash 可以实现 会话保持,
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6、HAProxy 可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
10、不能做Web服务器即Cache。



其他负载均衡 有 heartbeat F5

F5
流量负载;
可以做4~7层的负载均衡;检查宕机,从而不会将用户的访问请求传送到故障机器上。
可以做 动态 Session 的会话保持;