PAAS平台7×24小时可用性应用设计

如今非常多企业都在搭建自己的私有PAAS平台,当然也有非常多大型互联网公司搭建共同拥有PAAS平台(比如SAE/BAE/JAE(jae.jd.com))。那么使用PAAS平台来部署SAAS应用有哪些优点呢?除了大家都知道方便部署管理,节约资源和成本,今天我主要给大家介绍还有一个优点就是让部署在PAAS平台上的应用非常easy做到7×24小时不server执行(哪怕须要又一次部署和更新应用),这个对于一般的企业和普通开发人员来说是非常难办到的。当然假设要在PAAS平台做到事实上也不是那么简单的。须要非常强的技术力量。以下就主要介绍一下在PAAS平台如何实现让部署在PAAS平台上的应用达到7×24小时执行的方案。

在介绍方案设计之前须要强调一下,这个前提是PAAS平台本身是7×24小时高可靠的。

本方案设计主要涉及以下几方面的改进:

(1)应用执行调度模块:能够将应用的多个实例调度到不同的server和机架上进行执行;

(2)应用执行状态的监控模块:相应用的执行状况进行监控;

(3)优雅重新启动应用模块:能够在应用又一次部署和升级时不停服务;

一,首先我们来看看调度模块

调度模块应该是PAAS平台(无论是私有还是共同拥有的)标配,仅仅是不同的PAAS平台有自己特色的调度方法和策略,比如依据server资源使用来调度(这个里面有涉及到各种资源的调度。比如依据CPU或者内存等),或者依据部署的应用个数来调度。

当然好的调度策略绝对不仅仅使用一种评判标准来作为调度的策略,肯定是结合各种情况考虑。由于今天主要介绍的是应用的高可靠性,所以主要介绍如何通过调度算法保证应用的高可靠性。

假如应用为了提高自己的服务能力和可靠性执行了3个实例。那么怎么的调度算法是最佳的(仅仅针对高可靠性这一点来说的)?我们都知道设计一个高可靠性系统都会考虑到server出问题和网络(交换机)出问题。所以调度模块为了保证这个应用的高可靠性应该须要保证这三个实例应用不在同一个server上执行,同一时候保证三个实例不应该在同一个机架下执行,当然假设有条件的PAAS平台能够考虑跨数据中心调度(只是应该没有几个PAAS平台能够做到跨数据中心部署PAAS平台上的应用)。

要做到上面说的调度结果。调度模块应该能够知道全部部署应用的server的部署情况,或者至少能够通过某种方法查询到。我相信全部的PAAS都应该有资源管理模块(或者叫做PAAS平台的server监控模块)能够提供这些信息。除了知道server的部署情况,调度模块应该还须要能够知道或者查询到某一个应用实例执行在哪一台server上,由于仅仅有这样调度模块才干够保证不会把后面的实例调度到同一个server上。比如应用启动三个实例,已经启动2个实例了。还须要启动第三个实例。那么调度模块启动第三个实例之前须要知道其它连个实例执行的server和机架,这样才干保证把第三个实例调度到其它机架上去执行。相同假设应用执行的三个实例,突然某个时候其中一个实例挂掉了,那么须要把第三个实例又一次执行起来,还是须要使用调度模块来完毕不同server和不同机架的调度。至于调度模块怎么知道挂掉了一个实例。这个不是调度模块关心的事情。以下介绍的应用执行状态监控模块会非常好的解决问题。

二,应用执行状态的监控模块

打造7×24小时高可用的应用,假设连应用执行的状态都不知道,还怎么谈做到7×24小时的执行。说的简单一点,应用执行状态的监控模块就是实时的监控应用各个实例的执行状态(存活还是挂掉了)。然后依据监控的结果进行兴许处理。

监控模块须要达到的结果非常简单:就是应用的执行状态和用户期望的执行状态是否一致。

比如用户期望这个应用是执行的,可是此时执行状态却是挂掉的。肯定是不合理的,又比如用户期望此时不想对外提供服务了,希望应用是停止执行的,可是假设应用还是在执行也是不合理的。再比如用户期望应用眼下应该是须要执行三个实例的。可是仅仅有两个实例执行,也是没有满足用户需求的。

监控模块就是发现这些和用户期望不一致的情况。并处理。

那么如何做?以下我就结合开源PAAS平台cloudfoundry的解决方式来介绍应用执行状况的监控模块的方案设计,cloudfoundry眼下为止已经将原来的ruby版单进程单点监控模块改造成了go版高可靠多进程的监控模块。预知详情请到官方站点查询相关资料。今天主要结合最新版本号的监控模块来介绍怎么设计监控模块:

最新版本号的cloudfoundry的应用执行状态监控模块又划分为非常多的子模块,每个子模块都能够执行一个主进程和多个备进程进行高可靠部署(这些进程能够部署在不同的server和机架上。仅仅要网络能够通)。

首先须要获取每个应用的用户期望状态。那么我们就须要单独一个模块来获取这些用户的期望状况。而且把这些状态存储在某一个地方(共享存储,cloudfoundry使用的etcd)以便其它模块使用。

当然用户期望的状态通常存放在数据库其中,这个用户期望状态的获取模块能够通过直接读取数据库或者通过其它服务模块得到。

这个模块相应cloudfoundry的hm9000中的fetch_desired模块。

用户期望的执行状态有了,那么就还须要应用真实的执行状态,那么这个状态怎么来获取了。这个模块就叫做应用真实状态获取模块,相同将获取的数据存放到共享存储上。有两种方案能够获取。一种是主动去获取全部应用的执行状态,通常就是去訪问应用提供的一个服务。另外一种方案就是全部应用定时上报心跳,假设没有即使上报就觉得应用执行状态有问题了。

cloudfoundry採用的另外一种方案,只是它不是应用自己上报。而是管理一台server上全部应用的组件(dea)统一上报这台server全部应用的心跳。

这个模块相应cloudfoundry的hm9000中的listen模块。

用户期望的状态和应用真实状态都有了,那么我们就能够開始分析了,究竟哪些应用的执行状态和用户期望的执行状态不一致了。

然后将分析的结果相同存放在共享存储上,后面其它模块会使用这个分析结果的数据。这个模块相应cloudfoundry的hm9000中的analyze模块。

我们都知道了哪些应用的状态和用户期望的状态不一致。那么我们就能够把这些不一致的应用让他们一直。这就须要一个模块专门来给调度模块发送调度命令。比如用户期望应用是执行的,可是真实的状态是这个应用挂掉了,那么这个模块就能够发送一个调度命令让调度模块把这个应用启动起来。相同假设用户期望停止,假设应用是执行的那么就发送调度命令让这个应用停止掉。还有执行实例少了就在多调度一个起来。执行实例多了就停止掉多余的实例。这个模块相应cloudfoundry的hm9000中的send模块。

通过上面的4个模块基本上完毕了应用执行状态监控模块,而且维护了应用执行状态不一致的应用。

当然cloudfoundry的hm9000还提供了其它工具模块,感兴趣能够自己去深入研究。

三。最后一个模块就是优雅重新启动模块

为什么须要这一个模块呢?由于不论什么一个应用都不可能不更新,除非废掉的应用。那么更新这个应用的时间可大可小。那么由于更新期间导致应用不可用时间也服务预计。当然更加达不到题目所说的打造7×24小时的高可用应用了。

事实上这个模块是最简单的,可是达到的效果也是最明显的。只是也正是PAAS平台的特性才easy完毕。由于PAAS平台的应用更新和执行是两个分离的任务。我们全然能够一边更新应用一边继续让应用提供服务。而且在新更新应用没有全然能够提供服务曾经一直让老服务继续提供服务。全然不影响应用对外提供的服务。

这个模块实现还须要通过调度模块来完毕。在应用更新期间,我们一直让曾经执行的实例继续执行。一直到更新的应用已经正常执行了,才停止掉老的执行实例。这些启动或者停止动作都交给调度模块完毕,这个模块主要就是控制逻辑就能够了。

上面介绍的模块有一个缺点就是在新应用启动成功并对外提供服务以后去停止老实例的时候,用户可能感受到不一致的服务状态。由于在老实例还没有全然停止掉曾经可能还有请求达到实例,可是又可能偶尔到新实例,由于新老实例可能同一时候存在一个非常小的时间段,只是这对大部分应用应该是能够忽略的。

假设你全然不能忍受这短暂的不一致状态,那么还能够在路由那一块做。保证用户请求到达要么全部到老实例要么全部到新实例,详细做法就是新实例和老实例的路由地址不会同一时候存在路由程序的路由表里面。

第四,总结

通过上面的三种模块的设计基本上能够打造7×24小时的应用了。尽管方案设计完毕了,可是真正的实施了还会遇到非常多意料不到的情况,要正在打造7×24小时的应用执行环境还须要非常多其它方面的考虑。比方说每个模块执行的稳定性,假设应用执行状态监控模块都挂挂了还怎么启动应用程序。所以,好项目还需要好的做法,通过对调整方案的做法。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

PAAS平台7×24小时可用性应用设计

时间: 2024-12-21 19:35:07

PAAS平台7×24小时可用性应用设计的相关文章

24小时!2018云安全第一战!

北京时间1月4日早晨,微软Azure平台发出了一个紧急通知,"我们计划在北京时间2018年1月4日上午11:30开始自动重启剩余受影响的虚拟机",微软官方信息也同时发布出来. 在2018年1月3日,也就是24小时之前,谷歌Zero Project团队提前披露了针对CPU(中央处理器)漏洞的相关信息(该团队曾计划于1月9日披露信息).Project Zero是谷歌在2014年7月宣布的互联网安全项目,该团队主要由谷歌内部顶尖安全工程师组成,主要目的是发现.跟踪和修补全球性的软件安全漏洞.

微信公众平台开发(24) 自定义菜单功能开发

原文: http://www.cnblogs.com/imaker/p/5491433.html 一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自定义菜单接口将为公众账号的信息展示空间提供更多可能性.本文将针对自定义菜单做简单的开发应用,以供读者参考. 二.官方说明 开发者获取使用凭证后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和删除等

同时面向运维和开发的企业级PaaS平台--OpenShift

大卫说:笔者在年初分享过一篇文章<大卫看Docker-第一篇>.文中介绍了Docker一些基本概念.本文同时作为<大卫看Docker-第二篇>而存在.     随着容器技术的兴起,越来越多的人都在关注这项技术.既然Docker是一项很不错的技术,如何将它应用到企业中呢?对此,红帽的提供了基于容器的.同时面向运维和开发的企业级开源PaaS解决方案. 此前文章已经提到过,红帽作为开源界的领导者,其所有企业级解决方案在社区都有对应的开源项目,openshift也不例外.2011年,Red

(SegWit)隔离见证人在24小时内激活:比特币会如何变化?

海外最新数字货币比特币最新资讯: 什么是隔离见证? 隔离见证(通常简写为SegWit)是对比特币软件提出的一种更新,旨在解决比特币面临的一系列严重问题. SegWit是由比特币长期团队开发的对于Bitcoin Core的拟议更新.Bitcoin Core是当前最受欢迎的比特币标准客户端,由业内大多数企业使用. 最初,该更新旨在解决交易的可扩展性,这也是比特币软件中众所周知的弱点.虽然这种攻击向量对用户来说并不是最具破坏性的,但目前为止已经在多个攻击案例中被利用,因此也就凸显了修补这一漏洞的必要性

大数据下,24小时精准医疗或将在2020年实现?

日前,在2016英特尔生命科学信息技术论坛上,一款名为GTX One的生物计算加速平台现身,引发了业内对于精准医疗行业新的看法.这款GTX One加速系统,通过算法创新充分释放FPGA的计算能力,相当于将一台超级计算机压缩到一个小盒子里:一张FPGA加速卡就能达到60台高性能至强Xeon CPU服务器的计算性能,极大地缩短了生物信息数据的计算时间.事实上,通过生物数据与医疗行业结合,生物医疗行业正在经历高速发展.此次英特尔在京推出的“英特尔精准医疗伙伴计划(Intel BioIT Partner

加意|极致性价比空气净化器,京东众筹24小时破400%

3月12日中午12点,中国最大的创意电商[加意新品]发起荷兰设计品牌Duux迷你空气净化器在京东的众筹.该款产品以极致性价,专注小空间为亮点,上线初始即获得大量用户的抢订,创造了10分钟破10万,半小时破30万,24小时销售完成400%的2015年新众筹记录.当天下午2点半,该产品众筹较为罕见的得到"什么值得买"首页焦点图推荐. 从众筹详情页可知,Duux迷你空气净化器拥有外形美观.功能全面.便于携带.高效滤净.静音低噪.净化面广这六大特点.在空气净化器市场已经过分饱和的当下,加意新品

Docker实现PaaS平台_Docker教程

课程<基于Docker实现PaaS平台>学习地址:http://www.xuetuwuyou.com/course/166课程来自学途无忧网:http://www.xuetuwuyou.com 一.课程用到的软件1.CentOS-7-x86_64-Minimal-1511.iso2.apache-tomcat-7.0.473.docker-1.12.3.tgz4.eclipse-jee-neon-R-win32-x86_64 eclipse-jee-neon-R-win32-x86_645.j

贴吧24小时无限制发广告不删贴技术曝光

如果你会这个方法,相信你玩贴吧的时候就会非常的!现在贴吧发送软文被和谐,基本都是秒删,发布完了就被秒删!换号或者换IP都是一样的被删除了即使用了VPS手工发也是一样的,百度搜索贴吧不删除技术,基本都是老掉牙的东西(再说了贴吧发帖技术更新比换衣服还快,基本都是过时的方法很多人都会告诉你不要发有广告或者广告不要,非常明显的. 又或者是二楼回复微信或者QQ 或者链接,但是你看人家在贴吧发布的软文和广告那么的明显!好像百度贴吧就是他们家开的一样的! 想怎么广告宣传,就怎么样的任性,其实不然的.真正玩的好

PaaS 平台的网络需求

在使用 Docker 构建 PaaS 平台的过程中,我们首先遇到的问题是需要选择一个满足需求的网络模型: 让每个容器拥有自己的网络栈,特别是独立的 IP 地址 能够进行跨服务器的容器间通讯,同时不依赖特定的网络设备 有访问控制机制,不同应用之间互相隔离,有调用关系的能够通讯 调研了几个主流的网络模型: Docker 原生的 Bridge 模型:NAT 机制导致无法使用容器 IP 进行跨服务器通讯(后来发现自定义网桥可以解决通讯问题,但是觉得方案比较复杂) Docker 原生的 Host 模型:大