浅谈nginx反向代理集群服务部署原理 - Go语言中文社区

浅谈nginx反向代理集群服务部署原理


浅谈nginx的集群服务部署原理

          技术博文请参考:1、 http://blog.csdn.net/u013144287/article/details/78551398         nginx实现反向代理及负载均衡

                                          2、http://blog.csdn.net/u013144287/article/details/78553496    nginx+keepalived实现主备服务器可高用

         “需要的是思想,不是形式。”作为在公司听到的最朴实而又最直击内心的文字,这句话已经存在我的个性签名好几个月了。每当对话框弹出的时候,就像是对我的一个提醒,不是找不到更文艺更有冲击力的文字,而是觉得短短这十个字才是最符合我当下的状态,一名初入行的软件工程师。

         编程就像是建筑师搭建房子,你精心设计的每一个功能并非会在映入眼帘的第一刻就能体验到,而是用户在日积月累的使用过程中,逐渐被你宏观整体的思维布局,贴心周到并且充满设计感的小细节包围,进而才能体会到其中的精妙所在。以我所在的部门为例,所在项目部署服务中最怕的就是服务器异常,而通过nginx服务集群则可以让我们非常放心的开展工作。

   现在由我为大家简单的介绍一下什么是nginxnginx是一种代理服务器,客户端请求数据要先经过nginx,然后由nginx去服务器上去取数据,取到数据之后先返回到nginx,再由nginx再返回我们客户端。我相信有很多人都有过去翻墙到国外网站的经历,譬如程序员最爱stack over flow亦或是最大的视频网站You Tube等等。那么nginx的工作原理其实和翻墙原理差不多,作为一个传输中介起到中间枢纽作用,然后你通过中间枢纽获取你所需要的东西。

   其次,我们为什么要nginx集群,集群的意义何在呢?由于我进到的是规模比较大型项目,我就我们项目的实际情况与大家共同分享。由于总线服务、webservice服务、网元操作服务处理着大批量的请求,这些服务十分的重要,如果服务器出现异常或是机器出现宕机,那么对客户造成的影响将是巨大的,尤其是对客户的内心的体验感的影响将是无法抹去的。所以我们要尽量避免类似情况的发生,要保证服务具有可适应性、高拓展性和可维护性。给客户塑造一个至善至美的好印象。

   然后我们来看一下nginx集群服务的总体架构,在说到总体架构之前我们再来了解一下nginx服务集群的总体架构中的一种高性能可以自动检测服务器状态的Keepalived ,Keepalived 可以用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生。除此之外,还有nginx服务器、其他服务器、防火墙和用户。其集群的总体架构图如下图所示:

   

1  nginx集群服务部署架构图

从上图我们可以清楚的看到nginx服务器共有2台,一台作为主服务器,一台作为备服务器,webservice服务器2台,总线服务器2台,网元操作服务器5台。假设用户首先发布网元操作服务请求,此时12上的nginx代理服务器收到请求,而nginx是以多进程的方式来工作的,启动的时候会有一个master进程和多个worker进程,每个worker进程之间是平等的,master进程用来管理worker进程。Master进程运行之后,便会随机地抽取一个worker进程进行任务分配,而12nginx与网元操作服务器16-20访问通过http请求来进行访问的,16-20网元服务器端口号设置是一样的,根据端口就可以随机地选取一个网元操作服务器进行访问进而返回数据到用户手中。但是此时如果当用户在访问12nginx代理服务器的时候,服务器出现异常了或是宕机了怎么办?这时nginx的集群作用就体现出来了,12nginx13nginx分别部署上Keepalived 服务,此时12上检测器Keepalived 就开始检测服务器的状态了,发现报了异常或者是宕机,则自动剔除12服务器,13nginx上Keepalived 自动接管,启用13nginx代理服务器代替12nginx服务器的工作。让我们的服务又恢复了正常,避免不必要的损失。当12nginx服务器维护正常后,Keepalived又会自动停掉13nginx的服务而又把12nginx的服务加入。整过过程不需要人工干涉,需要人工做的就是修复故障机器。还有就是我们需要在12nginx和13nginx服务器上设置一个优先级,让Keepalived具有选择性。我们若有需要,可以再利用Keepalived + nginx以此类推再往上层搭建服务,比如说在12nginx与13nginx上再搭建一台14nginx作为主服务器,再搭建一台15nginx作为备服务器,再分别部署上Keepalived。从而更加保障了我们整个服务的可适应性、高拓展性和可维护性。

         nginx的集群服务部署原理分享到这里基本就算是结束了。马克思说“哲学家的任务不是认识世界,而是改变世界。”作为从事软件编程行业的我来说同样是适用的,知其然还要明白其所以然。nginx作为我在公司所在部门的阶段学习成果之一,最大的欣慰莫过于从知晓到渐渐熟悉,最后到侃侃而谈自己的感受,一点一滴都见证了我们团队的努力。见微知著,以用户体验为上,感谢给予我指点的各位前辈,跟随项目组和公司的脚步且行且追寻,我知道路漫漫其修远兮,而你们会是我最鼎力的伙伴!让我们一起乘风破浪,向着诗和远方

tip: 此文出自于贵州大学一位美丽研究生(静候花开),世界很大,轻装上阵,感谢她!

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u013144287/article/details/61196395
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-02 19:32:56
  • 阅读 ( 1325 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢