前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式项目中Nginx应用场景研究

分布式项目中Nginx应用场景研究

作者头像
林老师带你学编程
发布2019-05-25 23:49:29
4700
发布2019-05-25 23:49:29
举报
文章被收录于专栏:强仔仔强仔仔

众所周知nginx一般有两个作用,一个是负载均衡、一个反向代理。但是自从接触了duubo+zookeeper(或者springcloud)之后,脑子里面就会有一个疑问,像基于duubo+zookeeper(或者springcloud)这种分布式项目,本身就可以实现负载均衡的功能,那我们还需要nginx来做负载均衡吗?答案是显而易见的,那我们不仅就要问:nginx的负载均衡和分布式中自带的负载均衡有什么区别呢?

我们可以从他们特点来区分,他们的特点如下:

1.duubo+zookeeper动态注册就可以实现负载均衡,不需要做任何的配置,可以平滑的添加服务,但是并发能力不是特别强。

2.nginx中添加服务,必须添加配置文件才可以,不能动态的添加服务,但是nginx一是可以作为静态服务器,而是并发能力很强。

基于他们的特点,我们项目中采用后端服务器采用duubo+zookeeper进行负载均衡请求服务app和web端入口采用nginx进行负载均衡。下面我们基于这种模式做深入的分析。

现在有这样的应用场景:我们为了这个项目买了多个服务器,但是我们为了保证服务器的高可用性,所有不想把一个系统按照功能划分放在一一对应的服务器上面,我们想一个服务器上面就放一个完整的应用系统,这样每一个服务器都有一份系统在运行,基于这种考虑我们就采用服务器内部采用duubo+zookeeper进行负载均衡,不同服务器之间采用nginx进行负载均衡。如下图所示:

应用升级:

升级一:因为项目是采用前后台分离的,所有必然会有一个个前端项目,这个前端项目我们不能放在后端服务器中一起部署,所以只能放在web类型的请求容器中,所以这边我们直接就将前端项目放在nginx中(利用nginx作为做静态服务器)。这样就又出现一个问题,不同类型的项目,它对应的的域名也不一样,但是对应的服务器却是同一个IP地址。所以基于这种情况,我们只需要采用nginx方向代理就可以完成了。

升级二:随着时间的推移,项目的用户量越来越多了,对项目的可靠性要求越来越大了。我们虽然可以不断增加duubo+zookeeper所部署的服务器,可是一旦nginx挂掉,整个系统将直接瘫痪,所以单例的nginx风险是特别高的。基于这种情况我们就必须采用多个nginx来平摊这种风险了,这边我们可以用lvs+nginx来实现这种多个nginx,架构图如下所示:

升级三:通过这种方式就可以完美的将这种问题解决了,可是这个问题并没有彻底的解决,还是存在很大的风险,如果lvs挂掉,整个项目还是会死掉,所以基于这种问题我们可以添加一个keepalive来热备份一个LVS。如下图所示:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档