资源描述
,Copyright 2013 Pivotal.,All rights reserved.,Copyright 2013 Pivotal.All rights reserved.,Copyright 2013 Pivotal.All rights reserved.,Copyright 2013 Pivotal.All rights reserved.,Copyright 2013 Pivotal.All rights reserved.,Copyright 2013 Pivotal.All rights reserved.,PaaS,时代云平台建设和应用云化之,路,目录,云,原生应用架构和原理,PaaS,的理论基础,PaaS,的架构模型,PaaS,的业务价值,Pivotal,的,PaaS,架构和实践,Pivotal Spring,微服务框架,PAAS,的生产案例,Defining Cloud Native,Cloud native is a term describing software designed to run and scale reliably and predictably on top of potentially unreliable cloud based infrastructure.,概念,澄清,Cloud Native,Cloud,Native,包括两个方面,1,、,Cloud Native Framework-,应用框架,应用框架和设计本身适合运行在云上,2,、,Cloud native Platform,部署和运行环境,业界有些思路是应用运行在容器中就是,Cloud Native,,缺乏应用框架的支持。,区别于传统应用,-,互联网应用,的,需求带来新技术,-,新技术带来运维全自动化,需求是持续发展的,是一个产品,持续发展,用户访问量难以预测,而且一般是持续增长,用户访问的并发量是万级、十万、百万,在线业务,业务不能停顿,互联网应用,24,小时服务,任何时候中断服务都是事故。,传统应用特征,互联网应用特征,需求比较固定,是个项目,完成以后就是运维,用户访问量可以预测,较为固定,用户访问的并发量在百级、千级,非在线业务,允许一定时间的业务停顿,(,比如夜间停机,),,包括系统维护等,,敏捷业务,敏捷开发,持续集成,应用平台的弹性,支持海量并发,业务不停顿,灰度发布,发布回滚,系统在线升级。,互联网应用技术要求,云原生应用架构,云原生应用框架,云原生应用平台,传统巨石应用和云原生微服务应用的概念模型,关系数据库,数据访问,服务,/EJB/Java Bean,HTML,JavaScript,MVC,服务,传统一体化架构的应用,浏览器,HTTP,HTTP,HTTP,HTTP,HTTP,HTTP,AMQP,AMQP,关系型数据库,Key/Value,数据库,(NoSQL),图形数据库,传统巨石应用的特征和面对的问题,-,难以运维全自动化,故障有可能发生,随时备份数据,用于服务恢复,不惜一切代价保证服务器的运行,当服务器宕机时,-,摊上大事了,基础设施恢复,自动或者手动,应用恢复,手动,应用模块紧耦合,无法根据负载自动扩展,很难持续集成,应用聚合困难,(ESB),应用升级麻烦,端口变化,负载增加,配置变化,环境依赖,代码,变化,RTO/RPO,云原生应用的特征,符合十二要素,微服务,自服务的敏捷基础设施,基于,API,的协作,Antifragility,(反脆弱性),8,原生云架构,应用,框架,应用运行时,基础架构自动化引擎,基础架构,文化,/,角色,开发人员,开发人员,运维人员,运维人员,运维人员,支撑,Spring Cloud,Spring Boot,Cloud Foundry,BOSH,AWS,VMWare,OpenStack,Azure,应用,云原生架构只有,容器,是不够的,12 Factor App,BOSH Release,Cloud Provider Interface,9,CNA,架构需面对的难点,分布式系统的复杂性,远程调用多,跨多个服务的应用功能设计,依赖性管理,/API,版本化,重构模块的边界,无状态和有状态的分离,(,无状态改装不是必须的,),10,Source:“,Microservice Prerequisites,”Martin Fowler,August 2014.,Spring,微服务框架,PAAS,的生产案例,PaaS,的业务驱动力和要解决的问题,PaaS,要解决的问题,业务敏捷性,业务敏捷,开发,敏捷,部署,敏捷,移动计算,应用和系统的,可用性,系统可用性,应用可用性,运维,自动化,应用零运维,服务运维高度自动化,通过十二要素来规范应用,通过,PaaS,在平台层面支撑十二要素,应用需要即时弹性,而且需要运维的高度自动化,(,部署、故障恢复、自动扩容缩容,),,应用多是无状态,无状态即公牛机制,通过服务来实现有状态,,而服务不太需要即时弹性,服务更多是有状态,服务的运维自动化即时性要求不高,有状态就要去有备份、恢复等。,服务的运维需要各种工具,很多时候会需要人工介入,比如数据库调优、故障恢复,而应用的运维可以高度自动化、无需人工介入,主要通过日志分析,服务更适合运行在虚机,而应用适合运行在容器中。,由于服务的有状态,不容易实现即时恢复,所以服务的可用性要求、资源独享性更高,共享,OS,内核不适合服务,区分,IaaS,和,PaaS,IaaS,实现基础设施池化,PaaS,实现应用相关的功能,通过,PaaS,来驱动,IaaS,,实现运维自动化,十二要素,1,区分应用和服务,2,区分,IaaS,和,PaaS,3,PaaS,三大理论基础,PaaS,的理论基础,云原生应用的十二要素,1.,基准代码:,一份基准代码,多份部署。基准代码和应用之间总是保持一一对应的关系。所有部署的基准代码相同,但每份部署可以使用其不同的版本。,2.,依赖:显式声明依赖关系。应用程序一定通过依赖清单,确切地声明所有依赖项。,3.,配置:,在环境中存储配置。将应用的配置存储于环境变量中。环境变量可以非常方便地在不同的部署间做修改,却不动一行代码。,4.,后端服务,:,不区分本地和远端服务。不要把服务打包在应用中,通过绑定或是,DNS,寻址。,5.,构建,发布,运行:,严格区分构建,发布,运行这三个,步骤,不要再运行中去改配置。,6.,进程:,以一个或多个无状态进程运行应用。应用的进程必须无状态且无共享。,7.,端口绑定:,通过端口绑定提供服务。应用完全自我加载而不依赖于任何网络服务器就可以创建一个面向网络的服务。,8.,并发:,通过进程模型进行,扩展,开发,人员可以运用这个模型去设计应用架构,将不同的工作分配给不同的进程,类型,每个进程均可以并发,可以弹性伸缩。,9.,易销毁性:,快速启动和优雅终止可最大化健壮性。应用的进程是可销毁的,意思是说它们可以瞬间开启或停止。,10.,开发环境与线上环境等价:,尽可能保持开发、预发布、线上环境相同。应用想要做到持续部署就必须缩小本地与线上差异。,11.,日志,:把日志当作事件流。应用本身考虑存储自己的输出流。不应该试图去写或者管理日志文件。,12.,管理进程,:,基于某个发布版本运行。后台管理代码应该随其他应用程序代码一起发布,从而避免同步问题。,。,为发挥,PaaS,最大价值,传统应用架构转变为云原生应用,遵循云原生架构原则开发的应用,适应于部署在,PaaS,云上的应用,能够充分发挥,PaaS,价值的应用就是云原生应用,传统巨石应用,云原生应用,应用平台,PaaS,平台,IT,基础设施,PaaS,平台,驱动的,IaaS,微,服务,(,开发相关,),符合十二,要素,(,开发,/,平台相关,),Antifragility/,反脆弱性,(,开发,/,平台相关,),自服务的敏捷基础,设施,(,平台相关,),云原生应用解决了哪些传统巨石应用的问题,很难根据负载自动扩展,自动,水平扩展,应用模块牵一发而动全身,应用由多个微服务组成,松耦合,应用的恢复是靠人工的,应用的恢复是自动化的,应用系统的物理环境错误导致业务停顿,应用的物理环境的出错是可以接受的,不遗余力的保障物理机的运转,物理机对应用不是那么重要,物理机的宕机是一件特大事故!,没什么大惊小怪的!,积极备份数据以便应用环境出错时恢复,设计时要尽量避免数据恢复的必要,升级时候不睡觉,灰度发布、发布回滚,一期项目就半年,一期接一期,持续集成,相对巨石应用,云原生应用引入了哪些技术,传统巨石应用,云原生应用,垂直扩展;硬件定义可靠性,水平扩展;应用设计消除对基础设施的依赖性,虚拟化,轻量级运行环境(容器,进程,,PaaS,平台),3,层架构,有状态,紧耦合,松耦合,微服务,,API,对操作系统和虚机有察觉和依赖,通过容器和,SpringBoot,抽象于操作系统,,管理员控制,系统控制(自动扩展,自动配置,自动恢复),瀑布式开发,敏捷开发,敏捷开发,持续集成,持续部署,DevOps,云原生应用的关键设计之一,-,容错性设计,微服务要求,应用,需要有能,容忍服务的故障,的,设计,,客户端需要尽可能的优化这种场景的响应,。这,将让微服务团队时刻的想到服务故障的情况下用户的体验,。为,每个应用的服务及数据中心提供日常故障检测和恢复。,这种产品中的,自动化测试,可以让大部分的运维团队正常的上下班,。,由于服务可以随时故障,快速故障检测,乃至,,自动恢复,变更非常重要。微服务应用把实时的监控放在应用的各个阶段中,检测构架元素(每秒数据库的接收的请求数)和业务相关的指标(把分钟接收的定单数)。监控系统可以提供一种早期故障告警系统,让开发团队跟进并调查。,对于微服务框架来说,这相当重要,因为微服务相互的通信可能导致紧急意外行为,。监控,是至关重要的,它能,快速发现这种紧急不良,行为,让我们迅速修复它。,微,服务团队期望清楚的监控和记录每个服务的配置,比如使用仪表盘显示上,/,下线状态、各种运维和业务相关的指标。对,断路器,(,circuit,breaker,定时检测服务状态,),状态、目前的吞吐量和时延细节,我们也会经常遇到。,传统巨石应用和互联网应用运作运维模式的不同,产品不是项目,传统应用的,开发模式:提供一些被认为是完整的软件。一旦开发完成,软件将移交给维护部门,然后,开发组就可以解散掉了。,互联网应用,(,微服务,),认为认为,开发组应该负责产品的整个生命周期。一个常见的证明是:,Amazon,的,“,你编译,你运维(,you build,you run it,),”,的理念,它要求开发团队对软件产品的整个生命周期负责。这要求,开发者,每天都,关注,软件产品的运行情况,并与,用户联系的更紧密,,同时承担一些售后支持。,成熟的产品会与业务功能进行绑定。除了把软件看成既定功能的集合外,会进一步关心,“,软件如何帮助用户实现业务功能,”,这样的问题。,采用整体型的架构,也有其应用场景,,但是越小的服务粒度越容易促进用户与服务,运营,商之前的关系。,互联网应用开发的组织,架构和传统巨石应用开发模式的不同,界面开发人员,中间件业务开发人员,数据库管理员,业务能力,A,业务能力,B,业务能力,C,烟囱式功能开发团队,烟囱式应用架构,跨功能开发团队,微服务架构,数据访问,服务,/EJB/Java Bean,HTML,JavaScript,MVC,服务,围绕业务能力进行,组织,微,服务,架构有,以下几,个,特点,:,每个服务只需要做好一件事,更加专注和简单,用合适的工具来做合适的事情,服务,(,产品,),之间,是松耦合,的,,独立部署,服务,(,产品,),的,团队之间是相互,独立的,单一功能的改变只需要重新构建部署相应的服务即,可,传统巨石架构和互联网应用架构双轨运行,(Bi-Modal),现代应用框架,+SQL,可深度扩展的分析数据平台,MPP Database,实时数据平台,重量级应用中间件,传统磁盘,RDBMS,OLTP,应用,统一,OLTP,应用,/,OLAP,实时分析,ETL,传统数据仓库,OL,A,P,应用,服务平台,Neo4J,移动框架,DS,应用,分发,Jenkins,cassandra,数据同步,云存储,MongoDB,Tracker,推送,Redis,流处理,目录,Pivotal,的业界大牛,云原生应用架构和原理,PaaS,的理论基础,PaaS,的架构模型,PaaS,的业务价值,Pivotal,的,PaaS,架构和实践,Pivotal Spring,微服务框架,PAAS,的生产案例,PaaS,的几大架构要点,运维自动化,严格区分,PaaS,和,IaaS,运维,通过,PaaS,来驱动,IaaS,的运维,平台在线升级,平台在线补丁,应用服务器在线升级,4,重故障自动恢复,自动弹性伸缩,灰度发布,提供策略接口,运维模式自动化固化后定制实现,全方位监控机制,IaaS,平台层监控,PaaS,部件业务逻辑层监控,基于平台的应用无差别监控,APM(,应用性能监控,),容器的监控,PaaS,应用微服务框架,通过应用框架结合,PaaS,来实现新的自动化运维模式,通过框架实现弹性伸缩,通过框架实现对应用的调用监控,通过框架实现故障截流、探测后自动恢复,Application Framework,Services,Database,Object Storage,User Provided,Circuit Breakers,.NET,Spring Boot,Node.js,Ruby on Rails,PaaS,应用运行时和运维自动化,系统在线自升级,OpenStack,Amazon,VMware,IaaS,基础设施,自动化,(CPI),虚机故障自动恢复,物理机故障自动恢复,高可用性区,网络隔离,自动弹性伸缩,应用安全组,APM,应用一键部署,应用计量,服务计量,系统提醒,自动容器调度,容器故障自动恢复,应用故障自动恢复,多,IaaS,混合支持,虚机全生命周期管理,应用灰度发布,应用发布回滚,异地双活,日志自动采集聚合,PaaS,应用平台,Java,Tomcat,Go,PHP,Ruby,Node.JS,Python,.Net,Weblogic,Websphere,C/C+,Jetty,Play,Resin,PaaS,应用通用功能平台化,Session,共享,日志分析,APM,应用和配置解耦,服务自动安装、升级,服务套餐化,平台定制,租户管理,动态路由,SSO,LDAP,集成,Build CI,PaaS,应用服务,Spring,微服务框架,远程文件共享,API,管理,PaaS CI/CD,DevOps,服务,Spring Boot,服务注册和自动发现,集中配置管理,短路开关和监控,数据消息服务,mySQL,MongoDB,Cassandra,Neo4J,Redis,Kafka,RabbitMQ,RiakCS,流服务,移动计算服务,应用分发,API Gateway,数据同步,应用分析,大数据服务,Pivotal,Hadoop,GreenPlum,服务,Eclipse,Java,插件,微软,Studio,插件,GitHub,Jenkins,Artifactory,PaaS,功能架构图,运维自动化门户,容器集群管理,容器引擎,容器注册,系统安全性,CaaS/Docker,也有的功能,系统监控,PaaS,的业界逻辑架构,26,Source:,works”,特定需求进行定制,Unstructured,定制工作量比较大,针对每种不同的,unstructured,的需求进行定制,基于容器或容器镜像为主,带来非常好的灵活性,当时构建的代价高,PaaS Platform,对开发者可见部分,Message Bus/Queuing/Routing,Service Brokers,Capacity Planning,Logging,Monitoring,Application Staging/Application Services,Application Scheduling,Container Scheduling,Service Discovery,Container Cluster Management,Container Networking,Container Runtime,Container OS,Container Runtime,Container OS,Physical Host(or VM),Physical Host(or VM),DevOps Tools,Container,Container,Container,Configuration Management,Marketplace/Image Management,Security,Container,Container,Container,两类实现,Docker,生态圈,VMWare vSphere,OpenStack,Cloud Stack,AWS,CPI(Cloud Programming Interface),BOSH(IaaS,运维自动化,),服务运维自动化,服务解决有状态问题,Bosh deployment,Cf push,动态路由服务,/API,管理服务,应用微服务,Spring Boot,Spring Cloud,服务,.Net,容器调度,数据微服务,ETL,批处理,流数据,数据处理,mySQL,Redis,RabbitMQ,GemFire,会话共享,Cassandra,PostgreSQL,平台运营层,应用运行时,CI/CD,自愈弹性伸缩,监控管理,租户管理,PAAS,逻辑架构,VMWare vSphere,OpenStack,Cloud Stack,AWS,调用,IaaS,接口标准,-CPI(Cloud Programming Interface),BOSH(IaaS,运维自动化,),服务,Bosh deployment,Cf push,应用和微服务调用标准,Restful HTTP,容器,-,OCI,标准,mySQL,Redis,RabbitMQ,GemFire,会话共享,Cassandra,PostgreSQL,平台运营层,应用打包标准,Buildpack,SSO,标准,Oath2/SAML,用户目录标准,LDAP,PaaS,涉及的标准,服务运维自动化标准,Service Broker,应用交付标准,十二要素,服务安装包标准,BOSH Release,日志采集标准,RELP,云原生应用的关键设计之一,-,容错性设计,微服务要求,应用,需要有能,容忍服务的故障,的,设计,,客户端需要尽可能的优化这种场景的响应,。这,将让微服务团队时刻的想到服务故障的情况下用户的体验,。为,每个应用的服务及数据中心提供日常故障检测和恢复。,这种产品中的,自动化测试,可以让大部分的运维团队正常的上下班,。,由于服务可以随时故障,快速故障检测,乃至,,自动恢复,变更非常重要。微服务应用把实时的监控放在应用的各个阶段中,检测构架元素(每秒数据库的接收的请求数)和业务相关的指标(把分钟接收的定单数)。监控系统可以提供一种早期故障告警系统,让开发团队跟进并调查。,对于微服务框架来说,这相当重要,因为微服务相互的通信可能导致紧急意外行为,。监控,是至关重要的,它能,快速发现这种紧急不良,行为,让我们迅速修复它。,微,服务团队期望清楚的监控和记录每个服务的配置,比如使用仪表盘显示上,/,下线状态、各种运维和业务相关的指标。对,断路器,(,circuit,breaker,定时检测服务状态,),状态、目前的吞吐量和时延细节,我们也会经常遇到。,PaaS,运维自动化的前提,-,全方位的监控,IaaS,平台层监控,PaaS,部件业务逻辑层监控,基于平台的应用无差别监控,容器的监控,APM(,应用性能监控,),PaaS,部件业务逻辑层监控,Cloud Controller,等待任务数,任务调用出错数,任务调用正常数,用户总数,错误日志总数,。,Router,内部,Controller,的反应时间,应用访问反应时间时间,(1,分钟,),拒绝请求数,Bad Gateway,数量,TPS,返回,5XX,、,4XX,、,3XX,、,2XX,的数量,返回,4XX,总调用数,。,PaaS,部件业务逻辑层监控,从,各个,PAAS,的,部件采集,BOSH,和,CF,的各项指标,所有经过,BOSH,部署的虚机均会采集指标,各项指标通过,Collector,采集到,Ops Metrics,部件,Ops Metrics,提供了,JMX,接口供外界调用,PAAS,的,应用监控,(PAAS,Metrics),无源,监控指标包括,:,HTTP,吞吐量,TPS,HTTP,的平均反应时间,HTTP,调用的错误率,CPU,、内存、磁盘的实时利用率,应用的状态:启动、停止、弹性身上、升级、故障等,开发者可以随时查看应用的实时监控信息,24,小时数据回溯,应用无需嵌入任何,agent,监控的第一步:实时监控数据流和历史数据结合,监控,的第二步,-,需要集成日志,形成综合监控,给应用开发人员排除故障的一个集成视图,(,接口,),通过监控指标、事件来排查健康度以及性能问题,然后通过时间、应用,ID,等关联到日志进行深入分析,关键功能,:,灵活的文本搜索,聚合应用,和,PAAS,的,平台部件,(API,Diego cell,Router,etc.),PAAS,内部,处理,(Staging and Health checks),STDOUT/STDERR,等,PAAS,Metrics,1.1,根据应用事件和预置的阀值,给应用开发人员和运维人员提前预警,对实时的数据流进行处理,一旦阀值被触发,实时发送,Email,给应用开发者和运维人员,目标,:,易于管理和配置的阀值规则,基于文本的信息丰富的提示,Email,:“,为什么会发生,”,比“发生了什么”更重要,”,对于达到基本阀值变化和变化加速度等进行告警,监控的第三步,-,提前,告警,对于虚机和平台部件,一旦阀值触发,提前给运维人员预警,对实时的数据流进行处理,一旦阀值被触发,实时发送,Email,给运维人员,对不同的平台部件配置不同的阀值,(Diego cells,目前提供,200,多个监控指标,未来还会提供更多,会比,API,提供更多的指标,),监控的目标,-,自动化运,维,故障自动恢复,应用故障自动恢复,虚机故障自动恢复,使用这些指标来驱动更高级的自动化,:,金丝雀的部署,(automated blue green deploys based on performance),应用规模自适应,(based on past usage and performance patterns),平台容量规划,(based on current and projected app loads),PaaS,监控的发展方向,通过机器深度学习识别故障模式,解禁故障模式识别难的问题,对于复杂的阀值设置规则链,基于规则,对应用自动弹性伸缩和自动故障恢复,提供一个平台仪表板,支持更多的平台指标,自动化的报告机制,目录,Pivotal,的业界大牛,云原生应用架构和原理,PaaS,的理论基础,PaaS,的架构模型,PaaS,的业务价值,Pivotal,的,PaaS,架构和实践,Pivotal Spring,微服务框架,PaaS,的价值链,应用,云原生应用,PaaS,平台,基础设施,应用零运维,服务运维自动化,DevOps,持续集成,/,持续交付,/,持续部署,敏捷业务,持续高可用性,业务连续性,降低硬件开销,基于轻量级小颗粒的容器技术,目录,Pivotal,的业界大牛,云原生应用架构和原理,PaaS,的理论基础,PaaS,的架构模型,PaaS,的业务价值,Pivotal,的,PaaS,架构和实践,Pivotal Spring,微服务框架,PAAS,的生产案例,BBS,etcd,Cloud Foundry,逻辑视图,PC,浏览器访问,CF,命令行,Mobile App,访问,Eclipse,开发工具,动态,路由器,(Go,Router),NATS,消息总线,PCF,提供的服务,RabbitMQ,PCF DB,uaa-AuthN,VM,虚机,/Cell,Docker,镜像,应用,系统,Warden,container,Linux,Garden,应用系统,Ops PCF,和服务安装、在线升级,应用虚机,NATS,消息总线,PCF,系统虚机,服务虚机,UAA,用户管理,租户管理,Web,浏览器,Win,Garden,应用,系统,VM,虚机,Cell,集中日志采集,HA Proxy,HA Proxy,GemFire,Session,共享,Neo4J,SpringXD,mySQL,Hadoop,cassandra,SSHFS,APM,RiakCS,ELK,日志,Jenkins,API Gateway,动态,路由器,(Go,Router),动态,路由器,(Go,Router),云控制器,BOSH,Redis,推送通知,kafka,LDAP,集成,AZ,支持,IaaS/,vSphere,Oauth SSO,LDAP,服务器,授权服务器,BBS,etcd,BBS,etcd,监控服务器,自动化策略逻辑,资源调度,Diego,大脑,监控代理,监控代理,PCF,监控,S3,兼容,存储服务,Git,Artifactory,Cassandra,KLA,IaaS/,OpenStack,IaaS/,AWS,VM,虚机,/Cell,自动弹性伸缩,用量,/,计费,提醒服务,Web,界面,Spring,微服务,APM,Stager,(组装器),Stager,(组装器),service Broker,应用监控,集中日志采集,PCF DB,PCF,运行时,Oauth,SSO,服务,应用分发,数据同步,GemFire,Tracker,MongoDB,PostGreSQL,Apigee API,AppDynamic,Spring,微服务,应用监控,BuildPack,应用构建包,BBS,etcd,PCF,流程,应用一键部署,PC,浏览器访问,CF,命令行,Mobile App,访问,Eclipse,开发工具,动态,路由器,(Go,Router),NATS,消息总线,PCF DB,uaa-AuthN,VM,虚机,/Cell,Docker,镜像,应用,系统,Warden,container,Linux,Garden,应用系统,Ops PCF,和服务安装、在线升级,NATS,消息总线,UAA,用户管理,租户管理,Web,浏览器,Win,Garden,应用,系统,VM,虚机,Cell,集中日志采集,HA Proxy,HA Proxy,动态,路由器,(Go,Router),动态,路由器,(Go,Router),云控制器,BOSH,LDAP,集成,AZ,支持,IaaS/,vSphere,Oauth SSO,BBS,etcd,BBS,etcd,监控服务器,自动化策略逻辑,资源调度,Diego,大脑,监控代理,监控代理,PCF,监控,S3,兼容,存储服务,IaaS/,OpenStack,IaaS/,AWS,VM,虚机,/Cell,自动弹性伸缩,用量,/,计费,提醒服务,Web,界面,Spring,微服务,APM,Stager,(组装器),Stager,(组装器),service Broker,应用监控,集中日志采集,PCF DB,PCF,运行时,BuildPack,应用构建包,1,、应用部署命令,(HTTPS),到,PCF,入口点,HA-Proxy,2,、,HA-Proxy,轮询转发到,GoRouter,3,、,Router,解析,HTTPS,,发现是应用部署,,轮询,转发到云控制器,4,、云控制器把代码上传到,PCF,的集中存储服务中。,5,、云控制器启动一个应用组装器实例,开始组装应用容器。,6,、应用组装器找到应用对应的,Buildpack,,根据,Buildpack,进行应用容器的构建。,7,、应用容器构建成功后,把镜像保存在,PCF,的集中存储服务中,通知云控制器构建成功,8,、云控制器通知,Diego,大脑找到按照调度算法找到一台共享虚机,在此虚机上运行应用容器,9,、此虚机,Cell,在,PCF,的集中存储服务中载入应用容器镜像,并启动容器。,10,、容器的应用随之被启动,,Router,探测应用是否已经启动,探测成功则注册到路由表中,11,、应用通过域名访问应用,通过,HA-Proxy,转发的,Router,。,12,、,Router,根据路由表按照路由算法把应用转发到对应的容器,BBS,etcd,PCF,流程,应用故障自动恢复,PC,浏览器访问,CF,命令行,Mobile App,访问,Eclipse,开发工具,动态,路由器,(Go,Router),NATS,消息总线,PCF DB,uaa-AuthN,VM,虚机,/Cell,Docker,镜像,应用,系统,Warden,container,Linux,Garden,应用系统,Ops PCF,和服务安装、在线升级,NATS,消息总线,UAA,用户管理,租户管理,Web,浏览器,Win,Garden,应用,系统,VM,虚机,Cell,集中日志采集,HA Proxy,HA Proxy,动态,路由器,(Go,Router),动态,路由器,(Go,Router),云控制器,BOSH,LDAP,集成,AZ,支持,IaaS/,vSphere,Oauth SSO,BBS,etcd,BBS,etcd,监控服务器,自动化策略逻辑,资源调度,Diego,大脑,监控代理,监控代理,PCF,监控,S3,兼容,存储服务,IaaS/,OpenStack,IaaS/,AWS,VM,虚机,/Cell,自动弹性伸缩,用量,/,计费,提醒服务,Web,界面,Spring,微服务,APM,Stager,(组装器),Stager,(组装器),service Broker,应用监控,集中日志采集,PCF DB,PCF,运行时,BuildPack,应用构建包,1,、应用,Session,集中管理,2,、监控服务从,Cell,中采集应用和容器状态,包括心跳信息、,CPU,、内存、磁盘等信息,3,、监控服务从,Router,中采集应用的,SLA,信息,如,HTTP,反应时间、,TPS,、错误率等,4,、,PCF,监控服务采集,PCF,集群各个模块的监控信息,比如虚机状态、心跳信息、虚机中,PCF,模块进程的状态等,5,、监控服务从,PCF,监控服务中获取相应信息,6,、监控服务也从,BBS,中获取各种信息。,7,、监控服务发现应用故障,比如是容器故障或是应用故障,8,、监控服务通知策略逻辑进行故障恢复处理,9,、策略逻辑通过,Router,删除故障应用实例的路由记录,,HTTP,请求不再转发到应用容器中去。,10,、策略逻辑模块通知资源调度模块按调度算法找一个空闲虚机,11,、找到空闲虚机,Cell,后,从,PCF,集中存储载入应用容器镜像,并启动容器。,12,、,容器的应用随之被启动,,Router,探测,应用启动成功后,注册,到路由,表,应用访问切换到新容器,13,、应用自动从,Session,共享服务中获取之前故障应用容器的,Session,信息,GemFire,Session,共享,BBS,etcd,PCF,流程,应用灰度发布,PC,浏览器访问,CF,命令行,Mobile App,访问,Eclipse,开发工具,动态,路由器,(Go,Router),NATS,消息总线,PCF DB,uaa-AuthN,VM,虚机,/Cell,Docker,镜像,应用,系统,Warden,container,Linux,Garden,应用系统,Ops PCF,和服务安装、在线升级,NATS,消息总线,UAA,用户管理,租户管理,Web,浏览器,Win,Garden,应用,系统,VM,虚机,Cell,集中日志采集,HA Proxy,HA Proxy,动态,路由器,(Go,Router),动态,路由器,(Go,Router),云控制器,BOSH,LDAP,集成,AZ,支持,IaaS/,vSphere,Oauth SSO,BBS,etcd,BBS,etcd,监控服务器,自动化策略逻辑,资源调度,Diego,大脑,监控代理,监控代理,PCF,监控,S3,兼容,存储服务,IaaS/,OpenStack,IaaS/,AWS,VM,虚机,/Cell,自动弹性伸缩,用量,/,计费,提醒服务,Web,界面,Spring,微服务,APM,Stager,(组装器),Stager,(组装器),service Broker,应用监控,集中日志采集,PCF DB,PCF,运行时,BuildPack,应用构建包,1,、,GemFire Session,集中管理服务器接管应用的,Session,。,2,、部署新的应用版本,3,、以唯一的名字,(,比如,V2),注册到路由器,4,、通过设置路由策略,把一部分应用流量切换到新的版本。,5,、新版本的应用从,Session,服务器中获取之前老版本应用的,Session,,对前端客户无感知。,6,、可以不断的配置路由策略,直到最后所有的流量到新的版本,GemFire,Session,共享,BBS,etcd,PCF,流程,弹性伸缩,PC,浏览器访问,CF,命令行,Mobile App,访问,Eclipse,开发工具,动态,路由器,(Go,Router),NATS,消息总线,PCF DB,uaa-AuthN,VM,虚机,/Cell,Docker,镜像,应用,系统,Warden,container,Linux,Garden,应用系统,Ops PCF,和服务安装、在线升级,NATS,消息总线,UAA,用户管理,租户管理,Web,浏览器,Win,Garden,应用,系统,VM,虚机,Cell,集中日志采集,HA Proxy,HA Proxy,动态,路由器,(Go,Router),动态,路由器,(Go,Router),云控制器,BOSH,LDAP,集成,AZ,支持,IaaS/,vSphere,Oauth SSO,BBS,etcd,BBS,etcd,监控服务器,自动化策略逻辑,资源调度,Diego,大脑,监控代理,监控代理,PCF,监控,S3,兼容,存储服务,IaaS/,OpenStack,IaaS/,AWS,VM,虚机,/Cell,自动弹性伸缩,用量,/,计费,提醒服务,Web,界面,Spring,微服务,APM,Stager,(组装器),Stager,(组装器),service Broker,应用监控,集中日志采集,PCF DB,PCF,运行时,BuildPack,应用构建包,1,、应用访问通过,GoRouter,路由到容器,,GemFire Session,服务接管应用,Session.,2,、监控服务从,Cell,中采集应用和容器状态,包括,CPU,、内存、磁盘等信息,3,、监控服务从,Router,中采集应用的,SLA,信息,如,HTTP,反应时间、,TPS,、错误率等,4,、自动弹性伸缩服务从,监控,服务中获取所需的监控信息,如,CPU,、内存、,TPS,等,5,、自动弹性伸缩服务对比监控数据和预设的阀值,一旦达到阀值,就通过,API,进行弹性伸缩,,6,、弹性伸缩的指令发给资源调度,7,、资源调度根据指令确实是增加一个应用容器还是关闭几个应用容器,8,、资源调度找到合适的虚机,Cell,,从存储服务中载入应用镜像,并启动应用镜像,9,、应用镜像启动成功后,容器中的应用也一起被启动,应用启动后注册到,GoRouter,路由中。,10,、新的请求通过,Router,分发到新的应用容器中,对于,Java,应用,如果配置了,Session,集中管理,会从,Session,服务器中获取,Session,数据。,GemFire,Session,共享,PAAS,的,应用性能管理,PAAS
展开阅读全文