原文网址:LVS,Nginx,Haproxy三种负载均衡产品的对比_IT利刃出鞘的博客-CSDN博客
简介
本文介绍LVS,Nginx,Haproxy这三种负载均衡产品的区别。
实际应用中,Web 服务器集群的上层要有一台负载均衡服务器,负载均衡设备的任务就是作为 Web 服务器流量的入口,挑选最合适的一台 Web 服务器,将客户端的请求转发给它处理。
使用场景
一般根据流量(并发量)来选型
流量比较小(每日 PV 小于 100 万):使用Nginx或者Hproxy(推荐使用Nginx)。
流量很大(每日 PV 大于 100 万):使用LVS。
LVS和Nginx结合使用的场景
Nginx处理请求的方法:请求和响应数据都会经过 Nginx。
Nginx:采用的是异步转发。可以做到:如果一个服务器请求失败,立即切换到其他服务器,直到请求成功或者最后一台服务器失败为止。可以最大程度的提高系统的请求成功率。异步转发:Nginx 在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由 Nginx 返回给客户端。
LVS处理请求的方法:请求数据经过 LVS网络,响应数据由后端服务器的网络返回。
LVS:采用的是同步转发。同步转发:LVS 服务器接收到请求之后,立即 redirect 到一个后端服务器,由客户端直接和后端服务器建立连接。
总结
若仅使用Nginx:后端的服务器规模庞大时,Nginx 的网络带宽就成了一个巨大的瓶颈。
若仅使用LVS:一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。
如果在 LVS 的后端在添加一层 Nginx(多个),每个 nginx 后端再有几台应用服务器,就可以结合两者的优势,既能避免单 Nginx 的流量集中瓶颈,又能避免单 LVS 在请求失败时无法切换服务器的问题。
详细对比
项 | Nginx | LVS |
所在网络层级 | 四层/七层 | 四层 |
抗负载能力 | 弱 | 强 |
功能 | 功能多 能够根据域名、url的不同,将http请求分到不同的后端服务器。 节省带宽:支持gzip压缩,可以添加浏览器本地缓存的header头。 | 功能少 同时也减少了人为出错的概率 |
稳定性 | 稳定性低,有单机故障 无现成的双机热备方案 | 稳定性高 有完整的双机热备方案 |
网络架构依赖 | 无依赖。 | 强依赖 很依赖网络架构设计(可以采用简单的NAT方式解决此问题) |
是否会重试 | 不重试 数据包分发到坏的后端并返回错误后,会尝试重新分发到健康的后端 | 会重试 数据包分发到坏的后端,不会重新分发,会直接返回错误 |
数据出入 | 所有的请求和响应流量都会经过Nginx | 仅请求流量经过LVS的网络,响应流量由后端服务器的网络返回。 FULL_NAT同Nginx。 |
宿主机性能要求 | 要求较高 Nginx对源端和目的端都单独建立连接,中间涉及数据包的解析,所以依赖宿主机的I/O性能和CPU内存. | 要求较低 LVS仅分发请求,流量并不从它本身出去,所以瓶颈仅仅受限于网络带宽和网卡性能 |
转发方式 | 异步转发 在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由Nginx返回给客户端 | 同步转发 LVS服务器接收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。 |