




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍,CloudFoundry是什么?,云计算三个层次,CloudFoundry是什么?,CloudFoundry是VMware于2011年4月12日推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。同时,它本身是一个由多个相对独立的子系统通过消息机制组成的分布式系统,使平台在各层级都可水平扩展,作为新一代云应用平台,CloudFoundry专为私有云计算环境、企业级数据中心和公有云服务提供商所打造。CloudFoundry云平台可以简化现代应用程序的开发、交付和运行过程,在面对多种公有云和私有云选择、符合业界标准的高效开发框架以及应用基础设施服务时,可以显著提高开发者在云环境中部署和运行应用程序的能力2013年6月份开始它和其他VMWare产品一起被移交给了Pivotal这家由VMWare、EMC和通用电气GE合资创建的新公司,并对CloudFoundry进行了重构,版本命名为V2,仍然开源,CloudFoundry是什么?,CloudFoundry为开发者构建了具有足够选择性的PaaS云平台,它同时支持多种开发框架、编程语言、应用服务以及多种云部署环境的灵活选择,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍,CloudFoundry设计理念,CloudFoundry可以为不同的用户群体提供服务,为开发者提供开发、测试、部署应用,为云平台服务运营商提供维护、运行、计费等、为最终用户提供访问以及使用应用的服务,CloudFoundry设计理念,组件弹性伸缩,通过自动化部署工具BOSH来实现CloudFoundry组件的自动部署,应用弹性伸缩,根据应用的负载情况,动态加载应用实例,方便的安装部署,CloudFoundry平台涉及到的组件比较多,完全通过手工的方式进行部署比较复杂,针对此问题,CloudFoundry提供了自动化部署工具BOSH来简化安装部署。在应用部署过程中,CloudFoundry平台通过引入BuildPack针对不同的开发语言提供了编译打包功能,通过命令执行一键式的快速部署,通过引入Warden解决应用之间资源的隔离以及资源的使用限制。,运维自动化,日常运维操作简化故障自动恢复,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍,14,CloudFoundry整体架构,14,15,CloudFoundry逻辑视图,15,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍NATS组件,NATS,17,NATS是CloudFoundry内部的通信系统,是一款基于事件驱动的、轻量级的消息发布-订阅系统,基于EventMachine进行实现。NATS由负责发出操作指令的客户端和负责处理操作指令的服务器端组成,所有NATS客户端不需要持有其他客户端的信息就可以根据主题匹配机制来完成消息订阅和发布过程。,publish,subscribe,request,NATS,18,CloudFoundry是一个组件化开源系统,由多个组件组成,每个组件可以进行单独部署,在其内部,通过NATS消息组件来解决各个组件之间的通讯,实现组件之间的松耦合、组件之间的自发现。,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍CCNG组件,CCNG组件架构,20,CCNG概述,21,Cloud_controller_ng(CCNG)是整个CF平台的大管家,控制中心,作为CF平台的对外窗口,负责接收外部的请求以及执行结果的反馈,主要提供了如下功能:管理APP的生命周期,包括APP的部署、启动、停止、重启、删除、伸缩管理机构、空间、用户以及用户的权限设置管理服务、服务实例以及应用与服务实例的绑定通过BLOB对应用源代码、PACKAGE、BUILDPACK、DROPLET进行管理对位提供RESTAPI接口,接收外部的请求以及执行结果的反馈,机构空间管理,机构空间的管理,包括创建、更新、修改、删除机构配额的管理,配额主要包括内存大小、磁盘空间大小、服务数、路由数等空间下应用以及服务实例的管理用户权限的设置,在CF中已经默认创建了几种机构空间角色,配额管理,对组织机构或机构下的空间在CloudFoundry平台上能够使用的资源进行配置,主要包括内存、服务实例数、路由数,但是对于磁盘空间在目前的版本中并没有纳入配额管理的范围。,机构空间管理,在CloudFoundry平台中,通过建立机构空间的层次结构来对CloudFoundry中的资源进行隔离,通过为机构或空间进行资源的分配,来限制机构或空间使用的资源范围。一个配额可以对应多个机构或空间。为机构分配的配额由机构下的所有空间所共享,为机构下空间分配的配额不能超过当前机构的配额,用户在空间进行应用的创建,为应用分配的内存不能超过所属空间的配额限制。,用户管理,在CloudFoundry平台中,UAA组件作为集中用户管理中心,对平台中的用户信息进行统一管理、认证以及授权,CCNG权限管理,在CloudFoundry平台中,可以把CCNG理解为一个资源服务器,对外提供机构、空间、应用和服务等资源,因此对于CCNG的权限控制,分为两个部分:UAA组件对CCNG的资源访问进行统一授权,目前在CCNG组件中,提供cloud_controller.admin、cloud_controller.read、cloud_controller.write三种角色CCNG组件内部对用户的权限进行控制,从机构空间的层次结构对用户的权限进行划分,包括机构管理员,机构审计员、空间管理员、空间开发员和空间审计员,目前不支持自定义角色,CCNG权限管理,CCNG权限管理,BuildPack,BuildPack就是把应用所有依赖的东西打成一个包droplet(tar.gz格式文件),在运行的时候,我们只需要将droplet下载到WardenContainer容器中,进行解压,执行启动脚本(如start.sh)即可启动应用,BlobStore,BlobStore主要负责应用源代码、应用程序包、BuildPack以及Droplet的存储以及管理,在CCNG中通过BlobStore_Client与BlobStore进行交互,通过BlobStore_Client进行资源的上传以及下载。在具体实现中还会接管很多工作,比如:文件的拷贝,文件uri的创建,文件的压缩,文件的指纹定义等。,应用管理,应用管理,主要包括应用的创建、打包、启动、停止、重启、删除、伸缩、应用与服务实例的绑定等。在CCNG中只负责命令的发送,由DEA_NG组件负责具体命令的执行。,应用启动流程,1.用户使用使用CFPUSH命令上传应用2.CLI(commandlineinterface)告知CCNG创建一个应用3.CCNG进行应用的创建,主要是在数据库(CCDB)中加入该应用的记录,例如应用名称。4.CLI上传应用程序包5.CCNG将应用程序包存储在Blobstore中6.CLI启动应用7.CCNG根据应用的要求,从Stager_pool中查询满足要求的DEA_NG进行应用的打包8.DEA_NG输出运行BuildPack的信息9.DEA_NG打包完成,输出一个DropLet文件(编译打包的结果),DEA_NG将该文件存储在Blobstore中,并将打包的结果汇报给CCNG10.CCNG收到应用打包完成的反馈后,根据应用的部署要求,从dea_pool中查询满足要求的DEA_NG进行应用的启动11.发送启动命令,由DEA_NG负责命令的具体执行12.报告应用状态,DEA_NG监控,33,STAGER_POOL对CF平台中运行的DEA资源进行动态的管理,该资源池中的资源主要是为应用打包(stage)而服务的,根据应用的打包要求,从资源池中挑选最合适的DEA_NG进行应用的打包。通过订阅staging.advertise主题进行DEA_NG资源的采集,并根据应用的部署以及打包情况,对资源池中的资源进行动态的更新,DEA_NG监控,34,DEA_POOL也是维护了平台中DEA_NG资源,但是该资源池中的资源主要是为应用部署而服务的,根据应用的部署要求,从资源池中挑选最合适的DEA_NG进行应用的部署。通过订阅dea.advertise以及dea.shutdown主题进行DEA_NG资源的采集,并根据应用的部署以及打包情况,对资源池中的资源进行动态的更新,应用实例监控,35,在CCNG中,并不对应用实例的信息进行持久化处理,在CCDB数据库中只维护了当前应用所期望的实例数。通过DEA_CLIENT发送“dea.find.droplet”主题消息以及通过HEALTHMANAGER_CLIENT发送“app.state”主题消息来获取指定应用的实例信息,对应用实例的运行状态、CPU、内存、磁盘空间等信息进行实时监控。在CCNG中,对外提供了获取指定应用的实例信息接口,在每次调用接口发起请求时,CCNG都会通过NATS向DEA_NG和HealthManger组件发起主题请求来获取指定应用的实例信息。,CCNG应用实例管理,36,在CCNG中,并不对应用实例的信息进行具体存储,只维护了当前应用所期望的实例数,在获取指定应用的应用实例信息时,通过DEA_CLIENT发送“dea.find.droplet”主题消息以及通过HEALTHMANAGER_CLIENT发送“app.state”主题消息来获取指定应用实例的信息。,服务管理,37,相对于V1版本来说,CloudFoundry在服务处理这一块做了很大的改进,在CloudFoundry中不再进行大包大揽提供各种服务,而是将其交给了第三方服务提供者,由第三方服务者来进行具体服务的提供,在CloudFoundry中通过引入Service_Broker以及UserProvidedService来构建第三方服务与CloudFoundry组件之间的连接。,Service_Broker,38,通过引入Service_Broker来构建第三方服务与CloudFoundry组件之间的连接,实现服务的自动化管理。在CloudFoundry中,通过制定Service_Broker的接口规范,由CloudFoundry平台服务的第三方提供者进行具体实现,通过调用Service_Broker提供的接口实现服务的自动化管理。,Service_Broker,39,UserProvidedService,40,Service_Broker方案在CloudFoundry中解决的是服务的自动化创建等问题,但是在企业生产环境中,服务的自动化创建并非易事。针对不同的生产环境,需要提供不同的服务解决方案,在这种应用场景下,自动化的方案不能满足具体的需求,因此CloudFoundry提供了另一种UserProvidedService解决方案。让CloudFoundry不强依赖自动化的创建服务。UserProvidedService的使用很简单,就是用户在创建Service的时候,输入Service访问参数。如用户名,密码,CloudFoundry把这参数存起来,在绑定的时候注入到环境变量中。,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍DEA_NG组件,DEA_NG组件架构,42,DEA_NG概述,43,DEA_NG_NG(DropletExecutionAgency_NG),Droplet的执行代理,负责接收CCNG发送的命令,进行命令的具体执行以及执行结果的反馈。负责执行应用的打包负责执行应用的生命周期行为,包括应用的启动、停止、删除等管理warden容器,包括容器的创建、更新、删除以及warden容器的运行状态采集定时汇报资源的状态,包括所在宿主机的资源情况以及应用实例的运行情况等。,应用打包,44,执行CCNG组件发送的应用打包命令,启动应用的打包流程,下载应用程序源码包以及执行打包的BuildPack,初始化打包日志,创建Warden容器,设置Warden虚拟内存以及磁盘限制,挂载Warden虚拟化目录等,在Warden容器中调用BuildPack的打包脚本执行应用的打包工作,打包完成之后,将打包完成的Droplet上传到BlobStore进行存储。,应用打包消息内容,45,应用启动,执行CCNG发送的应用启动命令,进入应用实例的启动流程。下载Droplet,建Warden容器,设置Warden虚拟内存以及磁盘限制,挂载Warden虚拟化目录等,导入用户以及系统环境变量,构建应用的启动脚本,执行脚本启动应用。应用启动完成之后,向GoRouter进行应用路由信息的注册,应用启动消息内容,容器管理,在CloudFoundryv2中引入了warden这一模块来实现对资源的隔离与限制。warden主要提供3个维度的用户自定义隔离与限制:内存、磁盘、网络带宽;另外warden还提供了CPU、CPUACCT、Devices的资源隔离与限制,但仅提供默认值,不提供用户自定义设置。,资源采集,对DEA_NG组件运行信息进行采集,包括可用内存、可用磁盘空间、运行环境、运行应用以及应用实例数等信息。以“dea.avertise”和“staging.advertise”两种消息主题进行DEA_NG资源的发布,staging.advertise,dea.advertise,应用实例信息采集,对DEA_NG组件上运行的应用实例的状态信息进行采集,通过主题“dea.heartbeat”进行信息的发布,在消息中包括DEA_NG的识别消息和该DEA_NG运行的所有应用实例信息,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍HealthManager组件,HealthManager概述,54,HealthManager负责监控应用程序和基础服务的状态,即负责从各个DEA组件里获得所有应用程序的实际运行状态信息,并将收集到的状态信息进行统计分析等工作,然后将统计结果与从CCNG获取到的应用程序预期的运行状态进行比对,然后根据对比结果分别进行不同的操作,比如出现状态异常,此时就需要通知CCNG组件进行处理。,HealthManager组件架构,55,HealthManager组件架构,56,在HealthManager中,组件之间通过数据存储中心进行信息的交流,通过Store来实现各个组件之间的解耦。,HealthManager异常监控,57,HealthManager主要通过从CCNG获取应用程序预期的运行状态以及通过订阅“dea.heartbeat”主题获取应用实际运行状态,通过对应用的两种状态进行对比分析,做出决策。,应用期望状态,58,应用实际运行状态,59,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍GoRouter组件,GoRouter组件概述,61,负责接收CloudFoundry内部组件及应用uri注册以及注销的请求,负责路由表的维护以及对外查询,负责转发所有外部对CloudFoundry的访问请求。,GoRouter路由表,62,在GoRouter内创建了两个map数据结构(byurl、table)用来维护路由信息,GoRouter路由注册,63,通过订阅“router.register”主题,接收组件以及应用实例路由信息的注册,GoRouter路由转发,64,对于CloudFoundry来说,所有通过uri访问CloudFoundry内部资源的请求,都需要路由节点GoRouter作代理,目录,CloudFoundry是什么?CloudFoundry设计理念CloudFoundry整体架构CloudFoundry组件介绍UAA组件,UAA,66,UAA(UserAccountandAuthenticationService),用户帐户和身份验证服务,是CloudFoundry的身份管理服务,负责保护平台服务的安全以及提供对CloudFoundry平台上运行的Web应用程序提供单点登录以及授权服务UAA是基于SpringOauth2.0开发的JAVA应用程序,Oauth2.0提出的是一种协议,而SpringOauth2.0是基于协议实现的一种框架,而UAA是在框架的基础上实现了自己的业务逻辑,作为CloudFoundry平台的集中用户身份管理中心,提供了用户认证以及授权服务。,用户管理,67,UAA提供了集中式用户身份管理,对用户帐户信息、权限组进行统一管理,UAA实现了标准的简单云身份管理(SCIM,SystemforCross-domainIdentityManagement)API,对外提供用户以及权限组操作接口。,客户端管理,68,在Oauth2.0中,客户端代表授权用户执行某种资源操作。在客户端注册时,为客户端分配客户端ID、客户端密码、客户端能够访问的资源列表、客户端支持的授权方式以及客户端的授权范围等。UAA既是一个授权服务器,也是一个资源服务器,可以为一个客户端分配多种授权方式(上述介绍的四种授权方式),在基于客户端授权时,可以根据不同的需求,选择不同的授权方式。通过为客户端分配资源列表来限制客户端或者用户授权执行操作的客户端能够访问的资源范围(用户资源、权限组资源、CCNG资源等),通过为客户端指定授权范围(scim.read、cloud_controller.read等,需要说明的是,因为客户端代表的是用户的操作行为,因此为客户端分配授权范围来自于用户所属的权限组的全集或子集)来限制客户端对资源的操作权限(比如对资源的读写权限等)。在UAA的处理方式中,可以不为客户端指定资源列表,基于客户端用户在取得授权时,UAA在进行授权操作时会自动从客户端的授权范围中解析资源列表。,认证以及授权,69,认证以及授权,70,认
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省长沙市长郡郡维中学2022-2023学年九年级上学期第一次月考语文试卷(含答案)
- 2025金融投资咨询委托合同
- 2025标准的版权许可合同模板
- 2025年保安考试真题及答案
- 2025年scmp考试试题及答案
- 重症专业考试试题及答案
- 2025:请问合同可以授权他人代签吗
- 钢厂除尘维护方案范本
- 2025聚氨酯板采购合同协议模板
- 成都市锦江区事业单位招聘考试真题2024
- 生产主管转正工作总结
- 工艺美术运动代表人物及作品
- (完整版)高考英语考纲3500词汇表
- 国家开放大学电大《课程与教学论》形考任务3试题及答案
- 商务英语口语900句
- 辽宁省沈阳市基层诊所医疗机构卫生院社区卫生服务中心村卫生室名单目录信息
- 锅炉空预器清洗方案
- SF∕T 0111-2021 法医临床检验规范
- 药敏试验结果的解读
- DB14∕T 1319-2021 公路工程标准工程量清单及计量规范
- 冶金行业应用产品介绍(应用)
评论
0/150
提交评论