编程就像是建筑师搭建房子,你精心设计的每一个功能并非会在映入眼帘的第一刻就能体验到,而是用户在日积月累的使用过程中,逐渐被你宏观整体的思维布局,贴心周到并且充满设计感的小细节包围,进而才能体会到其中的精妙所在。在项目部署服务中最怕的就是服务器异常,而通过nginx服务集群则可以让我们非常放心的开展工作。
下面简单的介绍一下什么是nginx。nginx是一种代理服务器,客户端请求数据要先经过nginx,然后由nginx去服务器上去取数据,取到数据之后先返回到nginx,再由nginx再返回我们客户端。我相信有很多人都有过去翻墙到国外网站的经历,譬如程序员最爱stack over flow亦或是最大的视频网站You Tube等等。那么nginx的工作原理其实和翻墙原理差不多,作为一个传输中介起到中间枢纽作用,然后你通过中间枢纽获取你所需要的东西。
其次,我们为什么要nginx集群,集群的意义何在呢?由于我进到的是规模比较大型项目,我就我们项目的实际情况与大家共同分享。由于总线服务、webservice服务、网元操作服务处理着大批量的请求,这些服务十分的重要,如果服务器出现异常或是机器出现宕机,那么对客户造成的影响将是巨大的,尤其是对客户的内心的体验感的影响将是无法抹去的。所以我们要尽量避免类似情况的发生,要保证服务具有可适应性、高拓展性和可维护性。给客户塑造一个至善至美的好印象。
然后我们来看一下nginx集群服务的总体架构,在说到总体架构之前我们再来了解一下nginx服务集群的总体架构中的一种高性能可以自动检测服务器状态的Keepalived ,Keepalived 可以用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统
架构的不可用)的发生。除此之外,还有nginx服务器、其他服务器、防火墙和用户。其集群的总体架构图如下图所示:
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的集群服务部署原理分享到这里基本就算是结束了。
汇桔网精选全国专业开发公司,寻求互联网前沿技术+专业开发技术,上汇桔网查看最专业的开发外包公司,让互联网商业变得更简单,您的需求,我们全力满足,点击进入汇桔网咨询。