文档章节

LVS+NGINX为什么会被同时使用

javahongxi
 javahongxi
发布于 2017/08/25 19:15
字数 649
阅读 18
收藏 2

最初的理解

(也可以每个nginx都挂在上所有的应用服务器) 
nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单、配置简单、相关材料也特别多。

lvs是国内的章文嵩博士的大作,比nginx被广泛接受还要早7年,并且已经被红帽作为了系统内置软件,可谓很牛了。lvs相对于nginx来说配置上就要相对复杂一些。

但是,有时候我们会看到大牛们分享的经验里面是lvs+nginx作为负载均衡了,一直想不明白这是个什么道理。

为什么会出现两者被同时使用呢?其实,这要从两者的各自优势来说了。

nginx用来做http的反向代理,能够upsteam实现http请求的多种方式的均衡转发。由于采用的是异步转发可以做到如果一个服务器请求失败,立即切换到其他服务器,直到请求成功或者最后一台服务器失败为止。这可以最大程度的提高系统的请求成功率。

lvs采用的是同步请求转发的策略。这里说一下同步转发和异步转发的区别。同步转发是在lvs服务器接收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。异步转发是nginx在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户端。

进一步来说:当做为负载均衡服务器的nginx和lvs处理相同的请求时,所有的请求和响应流量都会经过nginx;但是使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。

也就是,当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。

但是仅仅使用lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。但是如果在lvs的后端在添加一层nginx(多个),每个nginx后端再有几台应用服务器,那么结合两者的优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时一锤子买卖的问题。

© 著作权归作者所有

javahongxi
粉丝 168
博文 259
码字总数 779422
作品 0
朝阳
程序员
私信 提问
【Diary Report 2018-1-4】关于FastDFS蛋疼的集群和负载均衡(十五)之lvs四层+Nginx七层负载均衡

diary_report.jpg Interesting things lvs+nginx的拓扑图 image.png 准备环境,基于上一篇【Diary Report 2018-1-3】关于FastDFS蛋疼的集群和负载均衡(十三)之LVS-DR环境安装继续配置。 vip:...

cmazxiaoma
2018/01/04
0
0
关于代理服务器及负载均衡的一些想法

研究代理服务及负载均衡服务有一段时间了,也发现了不少问题。当然我这里的问题主要集中在我所负责的网络应用环境中。 需求:为正向代理做负载 方案一:LVS+Nginx 方案二:LVS+Squid 方案三:...

zisehuainian
2018/06/28
0
0
Android系统消息分发体系

Handler、Looper、Message、MessageQueue之间的关系(基于Android API 26) 安卓系统设计的消息分发体系,不仅在应用层广泛应用;而且在底层也是使用这个体系,与Binder一起进行消息分发,因...

liuzxgeek
2018/04/03
0
0
mybatis动态SQL标签问题

mybatis使用动态SQL中标签使用困惑 这是之前Mapper里面写的内容 这是Manager里面的内容 这是Controller的内容 问题就是:使用这种Mapper的方法,前端只传了status字段 ,数据库这边会同时更改A...

aijfanta
2016/03/08
7.8K
4
golang channel阻塞与非阻塞用法

以下代码会deadlock 为什么?因为push和pull永远不可能同时发生,这就是阻塞channel的不当用法。 怎么解决呢?可以这样: 通过在另一个协程中run push代码,使得channel的生产和消费可以同时...

Kenneth
2016/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nproc systemd on CentOS 7

Increasing nproc for processes launched by systemd on CentOS 7 Ask Question I have successfully increased the nofile and nproc value for the local users, but I couldn't find a p......

MtrS
今天
3
0
了解微信小程序下拉刷新功能

小程序提供了这个事件。 onPullDownRefresh() 监听用户下拉刷新事件。 如果要开启下拉刷新功能,要先到json配置: "enablePullDownRefresh":true 配置后下拉有反应了但是没有加载效果,在onP...

oixxan__
今天
2
0
springmvc java对象转json,上传下载(未完)拦截器Interceptor以及源码解析(未完待续)

package com.atguigu.my.controller;import java.util.Collection;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Contr......

architect刘源源
今天
29
0
[日更-2019.5.24、25、26] Android系统中的Binder通信机制分析(一)--servicemanager

声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得去年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾... 最近,刚好在做...

Captain_小馬佩德罗
昨天
24
0
聊聊dubbo的DataStore

序 本文主要研究一下dubbo的DataStore DataStore dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/store/DataStore.java @SPI("simple")public interface DataStore { ......

go4it
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部