Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >负载均衡 LVS vs Nginx 对比!还傻傻分不清?

负载均衡 LVS vs Nginx 对比!还傻傻分不清?

作者头像
Java技术栈
发布于 2022-04-15 08:10:15
发布于 2022-04-15 08:10:15
4K0
举报
文章被收录于专栏:Java技术栈Java技术栈

点击关注公众号,Java干货及时送达

作者:等不到的口琴 链接:cnblogs.com/Courage129/p/14383897.html

今天总结一下负载均衡中LVS与Nginx的区别,好几篇博文一开始就说LVS是单向的,Nginx是双向的,我个人认为这是不准确的,LVS三种模式中,虽然DR模式以及TUN模式只有请求的报文经过Director,但是NAT模式,Real Server回复的报文也会经过Director Server地址重写:

首先要清楚的一点是,LVS是一个四层的负载均衡器,虽然是四层,但并没有TCP握手以及分手,只是偷窥了IP等信息,而Nginx是一个七层的负载均衡器,所以效率势必比四层的LVS低很多,但是可操作性比LVS高,后面所有的讨论都是基于这个区别。

为什么四册比七层效率高? 四层是TCP层,使用IP+端口四元组的方式。只是修改下IP地址,然后转发给后端服务器,TCP三次握手是直接和后端连接的。只不过在后端机器上看到的都是与代理机的IP的established而已,LVS中没有握手。 7层代理则必须要先和代理机三次握手后,才能得到7层(HTT层)的具体内容,然后再转发。意思就是代理机必须要与client和后端的机器都要建立连接。显然性能不行,但胜在于七层,人工可操作性高,能写更多的转发规则。

Nginx特点

Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。

另外,Nginx 系列面试题和答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。

正向代理与反向代理

正向代理:局域网中的电脑用户想要直接访问服务器是不可行的,服务器可能Hold不住,只能通过代理服务器来访问,这种代理服务就被称为正向代理,特点是客户端知道自己访问的是代理服务器。

反向代理:客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。

此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

想成为架构师,这份架构师图谱建议看看,少走弯路。

负载均衡

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕之后,再将结果返回给客户端。最新面试题整理好了,大家可以在Java面试库小程序在线刷题。

普通请求和响应过程如下图:

但是随着信息数量增长,访问量和数据量增长,单台的Server以及Database就成了系统的瓶颈,这种架构无法满足日益增长的需求,这时候要么提升单机的性能,要么增加服务器的数量。

关于提升性能,这儿就不赘述,提提如何增加服务器的数量,构建集群,将请求分发到各个服务器上,将原来请求集中到单个服务器的情况改为请求分发到多个服务器,也就是我们说的负载均衡。

图解负载均衡:

关于服务器如何拆分组建集群,这儿主要讲讲负载均衡,也就是图上的Proxy,可以是LVS,也可以是Nginx。假设有 15 个请求发送到代理服务器,那么由代理服务器根据服务器数量,这儿假如是平均分配,那么每个服务器处理 5 个请求,这个过程就叫做负载均衡。

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析的速度,降低由单个服务器的压力。

点击关注公众号,Java干货及时送达

动静分离之前的状态

动静分离之后

光看两张图可能有人不理解这样做的意义是什么,我们在进行数据请求时,以淘宝购物为例,商品详情页有很多东西是动态的,随着登录人员的不同而改变,例如用户ID,用户头像,但是有些内容是静态的,例如商品详情页,那么我们可以通过CDN(全局负载均衡与CDN内容分发)将静态资源部署在用户较近的服务器中,用户数据信息安全性要更高,可以放在某处集中,这样相对于将说有数据放在一起,能分担主服务器的压力,也能加速商品详情页等内容传输速度。

Nginx的优势

可操作性大

Nginx是一个应用层的程序,所以用户可操作性的空间大得多,可以作为网页静态服务器,支持 Rewrite 重写规则;支持 GZIP 压缩,节省带宽;可以做缓存;可以针对 http 应用本身来做分流策略,静态分离,针对域名、目录结构等相比之下 LVS 并不具备这样的功能,所以 nginx 单凭这点可以利用的场合就远多于 LVS 了;但 nginx 有用的这些功能使其可调整度要高于 LVS,所以经常要去触碰,人为出现问题的几率也就大

网络依赖小

nginx 对网络的依赖较小,理论上只要 ping 得通,网页访问正常,nginx 就能连得通,nginx 同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;LVS 就比较依赖于网络环境,目前来看服务器在同一网段内并且 LVS 使用 direct 方式分流,效果较能得到保证。另外注意,LVS 需要向托管商至少申请多于一个 ip 来做 visual ip

安装简单

nginx 安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。LVS 的安装和配置、测试就要花比较长的时间,因为同上所述,LVS 对网络依赖性比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦的多

nginx 也同样能承受很高负载且稳定,但负载度和稳定度差 LVS 还有几个等级:nginx 处理所有流量所以受限于机器 IO 和配置;本身的 bug 也还是难以避免的;nginx 没有现成的双机热备方案,所以跑在单机上还是风险比较大,单机上的事情全都很难说

支持健康检查以及请求重发

nginx 可以检测到服务器内部的故障(健康检查),比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前 LVS 中 ldirectd 也能支持针对服务器内部的情况来监控,但 LVS 的原理使其不能重发请求。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx 会把上传切到另一台服务器重新处理,而 LVS 就直接断掉了。

最新面试题整理好了,大家可以在Java面试库小程序在线刷题。

LVS 的优势

抗负载能力强

因为 LVS 工作方式的逻辑是非常简单的,而且工作在网络的第 4 层,仅作请求分发用,没有流量,所以在效率上基本不需要太过考虑。LVS 一般很少出现故障,即使出现故障一般也是其他地方(如内存、CPU 等)出现问题导致 LVS 出现问题

配置性低

这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率

工作稳定

因为其本身抗负载能力很强,所以稳定性高也是顺理成章的事,另外各种 LVS 都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,LVS 会自动判别,所以系统整体是非常稳定的

无流量

LVS 仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的 IO 性能不会受到大流量的影响

LVS 基本上能支持所有应用,因为 LVS 工作在第 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库、聊天室等。

参考:https://www.jianshu.com/p/3ed7575c8c47

疯了!Spring 再官宣惊天大漏洞。。

2021 年发生的 10 件技术大事!!

23 种设计模式实战(很全)

Spring Boot 保护敏感配置的 4 种方法!

再见单身狗!Java 创建对象的 6 种方式

阿里为什么推荐使用 LongAdder?

AnotherRedisDesktopManager 开始收费了?

别再写爆爆爆炸类了,试试装饰器模式!

Java 18 发布,默认 UTF-8,finalize 被弃用。

Spring Boot Admin 横空出世!

Spring Boot 学习笔记,这个太全了!

关注Java技术栈看更多干货

获取 Spring Boot 实战笔记!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
选择正确的负载均衡器:LVS还是Nginx?
LVS和nginx都是负载均衡软件。LVS是Linux内核级别的负载均衡软件,nginx则是应用级的、采用事件驱动的方式进行负载均衡软件。LVS是内核级的,更加专注于负载均衡功能的实现,可以提供更高的性能和稳定性;而Nginx的功能更加多元,除了负载均衡外,还可以作为Web服务器、反向代理服务器、缓存服务器等多种用途。
Lion 莱恩呀
2024/07/28
7350
选择正确的负载均衡器:LVS还是Nginx?
三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)(转)
LVS: 1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低 2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。 2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived) 3、应用范围比较广,可以对所有应用做负载均衡; 4、不支持正则处理,不能做动静分离。 5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接) 6、配置 复杂,对网络依赖比较大,稳定性很高。
wuweixiang
2019/03/12
2.7K0
三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)(转)
FastDFS蛋疼的集群和负载均衡(十二)之浅谈负载均衡
Interesting things 学习负载均衡技术。 What did you do today 什么是负载均衡? 一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,
用户2032165
2018/06/05
1.3K0
基于云落地SLB+Tengine实现高可用集群负载均衡 - 中
如果不用nginx,仅仅只是tomcat,要想在同一个80端口下去开多个http服务是不行的,只能开一个,但是使用nginx后,可以开多个,并且可以针对不同的域名去进行访问和配置,这就是虚拟主机的功能。而配置中的server就是一个虚拟主机。
风间影月
2020/06/24
3.2K0
基于云落地SLB+Tengine实现高可用集群负载均衡 - 中
负载均衡以及Nginx如何实现负载均衡
负载均衡是指在一组后端服务器(也称为服务器群或服务器池)之间有效地分配传入网络流量。 现代高流量网站必须以快速可靠的方式处理来自用户或客户端的数十万并发请求,并返回正确的文本、图像、视频或应用程序数据。为了经济高效地扩展以满足这些高容量,现代计算最佳实践通常需要添加更多服务器。 负载均衡器充当“流量交警”,位于你的服务器前,并在所有服务器之间路由客户端请求,这些服务器能够以最大限度地提高速度和容量利用率的方式满足这些请求,并确保没有任何服务器过度工作,这可能会降低性能.如果单个服务器出现故障,负载均衡器会将流量重定向到其余的在线服务器。将新服务器添加到服务器组时,负载均衡器会自动开始向其发送请求。 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
SakuraTears
2022/01/13
4.5K0
7层负载均衡与4层负载均衡区别
OSI: open system interconnection 开放式系统互联参考模型
用户1392128
2024/01/08
9410
7层负载均衡与4层负载均衡区别
Linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结
1.抗负载能力强,使用IP负载均衡技术,只做分发,所以LVS本身并没有多少流量产生;
星哥玩云
2022/06/30
4960
玩转企业集群运维管理系列(一):负载均衡基础入门
在这之前,我们相继卷完了:关系型数据库 MySQL 、 NoSQL 数据库 Redis 、 MongoDB 、搜索引擎 ElasticSearch 、大数据 Hadoop框架、PostgreSQL 数据库、消息中间件 Kafka、分布式协调中间件 Zookeeper、消息中间件 RabbitMQ、企业级监控平台、企业常用应用与服务等这些系列的知识体系。
民工哥
2023/12/02
6830
玩转企业集群运维管理系列(一):负载均衡基础入门
Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。 一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和A
用户1263954
2018/01/30
1.5K0
Nginx/LVS/HAProxy负载均衡软件的优缺点详解
(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。 一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和A
小小科
2018/05/02
7290
Nginx 除了负载均衡,还能做什么?
本文只针对 Nginx 在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过的。
好好学java
2021/03/29
4750
深入浅出负载均衡
大型网站都要面对庞大的用户量,高并发,海量数据等挑战。为了提升系统整体的性能,可以采用垂直扩展和水平扩展两种方式。
2020labs小助手
2021/06/07
5200
1、LVS 有哪些负载均衡,和Nginx有什么区别?+2、DR模式、NAT模式和TUN模式的区别?
网络地址翻译技术实现虚拟服务器。客户端访问调度器时,调度器通过网络地址转换,调速器重写请
用户10048459
2022/10/07
9290
玩转企业集群运维管理系列(二):主流软件负载均衡器(LVS、Nginx、HAproxy)对比
前面介绍了负载均衡入门等相关的知识点,今天我将详细的为大家介绍主流软件负载均衡相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!
民工哥
2023/12/03
6300
玩转企业集群运维管理系列(二):主流软件负载均衡器(LVS、Nginx、HAproxy)对比
网络四层、七层负载均衡的区别
区别 所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。
sunsky
2021/01/27
9390
网络四层、七层负载均衡的区别
【Nginx】静态资源部署、反向代理、负载均衡
注:http块中可配置多个Service块,每个Service块可配置多个location块。
.29.
2023/10/17
1.7K0
【Nginx】静态资源部署、反向代理、负载均衡
Nginx一文精通:反向代理、负载均衡、动静分离
   Nginx(“engine x”)一个具有高性能的HTTP和反向代理的WEB服务器,同时也是一个POP3/SMTP/IMAP代理服务器,是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本。另外值得一提的是伊戈尔·赛索耶夫将Nginx的源码进行了开源,这也为Nginx的发展提供了良好的保障。
上分如喝水
2021/08/16
7680
Nginx一文精通:反向代理、负载均衡、动静分离
LVS Nginx HAProxy 对比
目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LVS,Nginx及HAProxy,高可用软件有Heartbeat、Keepalived,成熟的架构有LVS+Keepalived、Nginx+Keepalived、HAProxy+keepalived及DRBD+Heartbeat.
高广超
2018/12/12
1.4K0
你真的掌握 LVS、Nginx 及 HAProxy 的工作原理吗?
当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。
猿哥
2019/03/22
1.2K0
你真的掌握 LVS、Nginx 及 HAProxy 的工作原理吗?
Nginx技术总结之四——集群和负载均衡的算法与实现
负载均衡器可以是专用设备,也可以是在通用服务器上运行的应用程序。 分散请求到拥有相同内容或提供相同服务的服务器。 专用设备一般只有以太网接口,可以说是多层交换机的一种。 负载均衡器一般会被分配虚拟IP地址,所有来自客户端的请求都是针对虚拟IP地址完成的。负载均衡器通过负载均衡算法将来自客户端的请求转发到服务器的实际IP地址上。
剑影啸清寒
2020/07/20
6710
Nginx技术总结之四——集群和负载均衡的算法与实现
推荐阅读
相关推荐
选择正确的负载均衡器:LVS还是Nginx?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档