负载均衡 LVS vs Nginx 对比

打印 上一主题 下一主题

主题 859|帖子 859|积分 2577

Nginx特点


  • 正向代理与反向代理
  • 负载均衡
  • 动静分离
Nginx的上风


  • 可操纵性大
  • 网络依靠小
  • 安装简朴
  • 支持康健检查以及请求重发
LVS 的上风


  • 抗负载本领强
  • 配置性低
  • 工作稳固
  • 无流量
(Nginx是双向的,LVS并非完全单向)LVS三种模式中,虽然DR模式以及TUN模式只有请求的报文经过Director,但是NAT模式,Real Server回复的报文也会经过Director Server地点重写:
NAT模式:

首先要清晰的一点是,LVS是一个四层的负载均衡器,虽然是四层,但并没有TCP握手以及分手,只是偷窥了IP等信息,而Nginx是一个七层的负载均衡器,以是服从势必比四层的LVS低很多,但是可操纵性比LVS高,后面所有的讨论都是基于这个区别。
为什么四册比七层服从高?
四层是TCP层,使用IP+端口四元组的方式。只是修改下IP地点,然后转发给后端服务器,TCP三次握手是直接和后端连接的。只不外在后端机器上看到的都是与代理机的IP的established而已,LVS中没有握手。
七层代理则必须要先和代理机三次握手后,才华得到7层(HTT层)的详细内容,然后再转发。意思就是代理机必须要与client和后端的机器都要创建连接。显然性能不行,但胜在于七层,人工可操纵性高,能写更多的转发规则。
Nginx特点
Nginx 专为性能优化而开辟,性能是其最重要的要求,非常注意服从,有报告 Nginx 能支持高达 50000 个并发连接数。
1、正向代理与反向代理
正向代理 :局域网中的电脑用户想要直接访问服务器是不可行的,服务器大概Hold不住,只能通过代理服务器来访问,这种代理服务就被称为正向代理,特点是客户端知道本身访问的是代理服务器。

反向代理 :客户端无法感知代理,由于客户端访问网络不必要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。
此时反向代理服务器和目标服务器对外就是一个服务器,袒露的是代理服务器地点,隐藏了真实服务器 IP 地点。

2、负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些大概要与数据库进行交互,服务器处理完毕之后,再将效果返回给客户端。
平常请求和响应过程如下图:

但是随着信息数量增长,访问量和数据量增长,单台的Server以及Database就成了体系的瓶颈,这种架构无法满足日益增长的需求,这时间要么提升单机的性能,要么增加服务器的数量。
关于提升性能,这儿就不赘述,提提怎样增加服务器的数量,构建集群,将请求分发到各个服务器上,将原来请求集中到单个服务器的环境改为请求分发到多个服务器,也就是我们说的负载均衡。

关于服务器怎样拆分组建集群,这儿重要讲讲负载均衡,也就是图上的Proxy,可以是LVS,也可以是Nginx。假设有 15 个请求发送到代理服务器,那么由代理服务器根据服务器数量,这儿假如是平均分配,那么每个服务器处理 5 个请求,这个过程就叫做负载均衡。
3、动静分离
为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析的速度,降低由单个服务器的压力。
动静分离之前的状态

动静分离之后

光看两张图大概有人不理解这样做的意义是什么,我们在进行数据请求时,以淘宝购物为例,商品详情页有很多东西是动态的,随着登录人员的不同而改变,例如用户ID,用户头像,但是有些内容是静态的,例如商品详情页,那么我们可以通过CDN(全局负载均衡与CDN内容分发)将静态资源摆设在用户较近的服务器中,用户数据信息安全性要更高,可以放在某处集中,这样相对于将说有数据放在一起,能分担主服务器的压力,也能加快商品详情页等内容传输速度。
Nginx的上风
1、可操纵性大
Nginx是一个应用层的程序,以是用户可操纵性的空间大得多,可以作为网页静态服务器,支持 Rewrite 重写规则;支持 GZIP 压缩,节流带宽;可以做缓存;可以针对 http 应用本身来做分流计谋,静态分离,针对域名、目录结构等相比之下 LVS 并不具备这样的功能,以是 nginx 单凭这点可以利用的场所就远多于 LVS 了;但 nginx 有用的这些功能使其可调整度要高于 LVS,以是经常要去触碰,人为出现问题的几率也就大。
2、网络依靠小
nginx 对网络的依靠较小,理论上只要 ping 得通,网页访问正常,nginx 就能连得通,nginx 同时还能区分表里网,假如是同时拥有表里网的节点,就相当于单机拥有了备份线路;LVS 就比较依靠于网络环境,目前来看服务器在同一网段内并且 LVS 使用 direct 方式分流,效果较能得到包管。别的注意,LVS 必要向托管商至少申请多于一个 ip 来做 visual ip。
3、安装简朴
nginx 安装和配置比较简朴,测试起来也很方便,由于它根本能把错误用日志打印出来。LVS 的安装和配置、测试就要花比较长的时间,由于同上所述,LVS 对网络依靠性比较大,很多时间不能配置乐成都是由于网络问题而不是配置问题,出了问题要解决也相应的会贫困的多。
nginx 也同样能承受很高负载且稳固,但负载度和稳固度差 LVS 另有几个品级:nginx 处理所有流量以是受限于机器 IO 和配置;本身的 bug 也照旧难以避免的;nginx 没有现成的双机热备方案,以是跑在单机上照旧风险比较大,单机上的事变全都很难说。
4、支持康健检查以及请求重发
nginx 可以检测到服务器内部的故障(康健检查),好比根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前 LVS 中 ldirectd 也能支持针对服务器内部的环境来监控,但 LVS 的原理使其不能重发请求。好比用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx 会把上传切到另一台服务器重新处理,而 LVS 就直接断掉了。
LVS 的上风
1、抗负载本领强
由于 LVS 工作方式的逻辑是非常简朴的,而且工作在网络的第 4 层,仅作请求分发用,没有流量,以是在服从上根本不必要太过思量。LVS 一般很少出现故障,纵然出现故障一般也是其他地方(如内存、CPU 等)出现问题导致 LVS 出现问题。
2、配置性低
这通常是一大劣势同时也是一大上风,由于没有太多的可配置的选项,以是除了增减服务器,并不必要经常去触碰它,大大减少了人为出错的几率。
3、工作稳固
由于其本身抗负载本领很强,以是稳固性高也是顺理成章的事,别的各种 LVS 都有完备的双机热备方案,以是一点不消担心均衡器本身会出什么问题,节点出现故障的话,LVS 会自动鉴别,以是体系整体是非常稳固的。
4、无流量
LVS 仅仅分发请求,而流量并不从它本身出去,以是可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的 IO 性能不会受到大流量的影响。
LVS 根本上能支持所有应用,由于 LVS 工作在第 4 层,以是它可以对几乎所有应用做负载均衡,包括 http、数据库、谈天室等。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表