LVS,Nginx,Haproxy三种负载均衡产品的对比[通俗易懂]

LVS,Nginx,Haproxy三种负载均衡产品的对比[通俗易懂]本文介绍LVS,Nginx,Haproxy这三种负载均衡产品的区别。

大家好,又见面了,我是你们的朋友全栈君。

原文网址: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到一个后端服务器,由客户端直接和后端服务器建立连接。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163768.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • html精灵图跟img标签,css精灵图怎么使用?

    html精灵图跟img标签,css精灵图怎么使用?什么是css精灵图(sprite)?css精灵图怎么使用?下面本篇文章就来给大家介绍一下css精灵图的使用。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。在了解精灵图怎么使用前,我们要先知道什么是精灵图。只有先知道什么是精灵图,了解精灵图的原理了,我们才可是说使用精灵图。什么是css精灵图(sprite)?css精灵图(sprite)直译为“CSS精灵”,也被称为通常被解释为“C…

  • android 关于提高第三方app的service优先级

    android 关于提高第三方app的service优先级

  • Python程序中for循环用法详解「建议收藏」

    Python程序中for循环用法详解「建议收藏」Python程序中for循环用法详解一个通用的序列迭代器,用于遍历任何有序的序列对象内的元素,可用于字符串、元组、列表和其它内置可迭代对象,以及通过类所创建的新对象。1、for循环语法格式:forexpressioninobject:      for_suiteelse:      else_suite2、for语法格式扩展:forexpressioninobject:     …

  • pycharm崩溃_pubg lite手机闪退报错

    pycharm崩溃_pubg lite手机闪退报错问题描述今天在用pycharm跑模型时,突然报错自OutofMemoryThereisnotenoughmemorytoperformtherequestedoperation.Pleaseincrease‘Xmx’settingandrestarttheIDEforchangetotakeeffect.解决方案找到pycharm安装目录bin下的pycharm64.exe.vmoptions,用记事本打开将前两个适当加大找到bin目录下的P

  • CSS中如何解决子元素继承父元素的opacity属性?

    CSS中如何解决子元素继承父元素的opacity属性?解决方案这里有两个方案,使用rgba()间接的设定opacity的值,这个属性不会向下继承,或者既然opacity会被子级元素继承,那就把opacity属性放到同级元素实现,下面通过示例具体说说这两种方式:1.使用rgba()间接的设定opacityrgba()有四个参数,最后一个参数就是opacity的值,和opacity单独设定效果一样,但是这个是有background属性来控制的,background不会向下继承,所以就解决这个问题啦,示例如下:<!DOCTYPEhtml>&l

  • Android 通过应用程序来设置系统的日期和时间中的

    Android 通过应用程序来设置系统的日期和时间中的

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号