浅谈 Nginx 和 LVS 的各种优缺点

LVS 的负载能力强,因为其工作方式逻辑非常简单,仅进行请求分发,而且工作在网络的第 4 层,没有流量,所以其效率不需要有过多的忧虑。

LVS 基本能支持所有应用,因为工作在第 4 层,所以 LVS 可以对几乎所有应用进行负载均衡,包括 Web、数据库等。

注意:LVS 并不能完全判别节点故障,比如在 WLC 规则下,如果集群里有一个节点没有配置 VIP,将会导致整个集群不能使用。还有一些其他问题,目前尚需进一步测试。

Nginx 工作在网路第 7 层,所以可以对 HTTP 应用实施分流策略,比如域名、结构等。相比之下,LVS 并不具备这样的功能,所以 Nginx 可使用的场合远多于 LVS。并且 Nginx 对网络的依赖比较小,理论上只要 Ping 得通,网页访问正常就能连通。LVS 比较依赖网络环境。只有使用 DR 模式且服务器在同一网段内分流,效果才能得到保证。

Nginx 可以通过服务器处理网页返回的状态吗、超时等来检测服务器内部的故障,并会把返回错误的请求重新发送到另一个节点。目前 LVS 和 LDirectd 也支持对服务器内部情况的监控,但不能重新发送请求。

比如用户正在上传一个文件,而处理该上传信息的节点刚好出现故障,则 Nginx 会把上传请求重新发送到另一台服务器,而 LVS 在这种情况下会直接断掉。Nginx 还能支持 HTTP 和 Email(Email 功能很少有人使用),LVS 所支持的应用在这个电商比 Nginx 更多。

Nginx 同样能承受很高负载并且能稳定运行,由于处理流量受限于机器 I/O 等配置,所以负载能力相对较差。

Nginx 安装、配置及测试相对来说比较简单,因为有相应的错误日志进行提示。LVS 的安装、配置及测试所花的时间比较长,因为 LVS 对网络以来比较大,很多时候有可能因为网络问题而配置不能成功,出现问题时,解决的难度也相对较大。Nginx 本身没有现成的热备方案,所以在单机上运行风险较大,建议 KeepAlived 配合使用。另外,Nginx 可以作为 LVS 的节点机器使用,充分利用 Nginx 的功能和性能。当然这种情况也可以直接使用 Squid 等其他具备分发功能的软件。

具体应用具体分析。如果是比较小型的网站(每日 PV 小于 100 万),用户 Nginx 就完全可以应对,如果机器也不少,可以用 DNS 轮询。LVS 后用的机器较多,在构建大型网站或者提供重要服务且机器较多时,可多加考虑利用 LVS。

转载:https://blog.csdn.net/barnetthe/article/details/48784233