浅谈nginx反向代理集群服务部署原理
来源:互联网 发布:如何在java中实现线程 编辑:程序博客网 时间:2024/05/16 07:35
浅谈nginx的集群服务部署原理
“需要的是思想,不是形式。”作为在公司听到的最朴实而又最直击内心的文字,这句话已经存在我的个性签名好几个月了。每当对话框弹出的时候,就像是对我的一个提醒,不是找不到更文艺更有冲击力的文字,而是觉得短短这十个字才是最符合我当下的状态,一名初入行的软件工程师。
编程就像是建筑师搭建房子,你精心设计的每一个功能并非会在映入眼帘的第一刻就能体验到,而是用户在日积月累的使用过程中,逐渐被你宏观整体的思维布局,贴心周到并且充满设计感的小细节包围,进而才能体会到其中的精妙所在。以我所在的部门为例,所在项目部署服务中最怕的就是服务器异常,而通过nginx服务集群则可以让我们非常放心的开展工作。
现在由我为大家简单的介绍一下什么是nginx。nginx是一种代理服务器,客户端请求数据要先经过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的集群作用就体现出来了,12nginx与13nginx分别部署上Keepalived 服务,此时12上检测器Keepalived 就开始检测服务器的状态了,发现报了异常或者是宕机,则自动剔除12服务器,13nginx上Keepalived 自动接管,启用13nginx代理服务器代替12nginx服务器的工作。让我们的服务又恢复了正常,避免不必要的损失。当12nginx服务器维护正常后,Keepalived又会自动停掉13nginx的服务而又把12nginx的服务加入。整过过程不需要人工干涉,需要人工做的就是修复故障机器。还有就是我们需要在12nginx和13nginx服务器上设置一个优先级,让Keepalived具有选择性。我们若有需要,可以再利用Keepalived + nginx以此类推再往上层搭建服务,比如说在12nginx与13nginx上再搭建一台14nginx作为主服务器,再搭建一台15nginx作为备服务器,再分别部署上Keepalived。从而更加保障了我们整个服务的可适应性、高拓展性和可维护性。
nginx的集群服务部署原理分享到这里基本就算是结束了。马克思说“哲学家的任务不是认识世界,而是改变世界。”作为从事软件编程行业的我来说同样是适用的,知其然还要明白其所以然。nginx作为我在公司所在部门的阶段学习成果之一,最大的欣慰莫过于从知晓到渐渐熟悉,最后到侃侃而谈自己的感受,一点一滴都见证了我们团队的努力。见微知著,以用户体验为上,感谢给予我指点的各位前辈,跟随项目组和公司的脚步且行且追寻,我知道路漫漫其修远兮,而你们会是我最鼎力的伙伴!让我们一起乘风破浪,向着诗和远方!
- 浅谈nginx反向代理集群服务部署原理
- nginx 反向代理部署
- Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
- Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
- Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
- Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
- nginx反向代理原理
- nginx反向代理原理
- nginx-反向代理原理
- nginx反向代理原理
- 通过 Nginx 反向代理部署 Node.js 服务
- nginx反向代理部署服务到本地机房
- 浅谈nginx反向代理问题
- nginx反向代理部署nodejs
- nginx配置反向代理服务
- Nginx反向代理tornado服务
- nginx 集群配置 nginx 反向代理配置 nginx php 集群
- 框架 day85 涛涛商城项目-nginx反向代理,负载均衡,部署solr集群
- BeanUtils.copyProperties() 拷贝对象属性时,日期为空的处理
- python学习笔记
- 遇到问题----java---多线程----线程数一直增加----web项目中线程池的正确使用方式
- 联想键盘F1-F12的切换
- 认识meteor
- 浅谈nginx反向代理集群服务部署原理
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- Python之字典
- 串口通信跨平台
- 单例模式
- [趣文]我是一个线程
- [AndroidStudio进阶]重新认识AndroidStudio和Gradle
- 图解Android事件分发流程
- 复习大纲列表