没有合适的资源?快使用搜索试试~ 我知道了~
首页Cloud Foundry v2各组件功能原理详细分析
资源详情
资源评论
资源推荐
参考原文:http://wonderflow.info/archives/892,发表于 2014-2-18
Cloud_Controller_NG 就是 cloud controller next generation 的意思。即
Cloud Foundry 平台用来管理控制应用和服务的组件。
CCNG 的作用的:
* 维护一个包含应用、服务、配置信息的数据库(CCDB)。
* 在 blobstore 中存储应用的 packages 和 droplets。
* 通过 NATS 和其他组件进行通信,包括 Droplet Execution Agents (DEAs)、
Service Gateways、和 Health Manager(HM)。
* 其他供用户调用的后端 API。
CC 架构图:
从 ccng 架构图中可以看出 ccng 可以分为以下多个模块:
1. Stager 模块,主要负责与 DEA 组件的 staging 部分进行交互,用于 app
打包成 droplets。
2. DEA 模块,主要负责与 DEA 组件进行交互;
3. Blobstore 模块,主要负责创建一个 blobstore 的存储,以供 Cloud
Foundry 存储应用所需的静态文件;
4. HealthManager(HM)模块,主要负责与 HealthManager 组件进行交互;
5. CCDB 模块,负责维护 cloud_controller 的数据库;
6. collector_registrar 模块,负责作为 component 向 Collector 组件注册;
7. router_registrar 模块,负责将 cloud controller 组件的域名注册至
Router 组件;
8. legacy_api 部分,负责接管 ccng 关于 info,bulk 以及 services 等的
RESTful 请求;
9. Permission 模块,负责各种不同权限用户的注册和认证。
10. 其他零散模块
CC 中 DB 模块
CCDB 就是 CC 的一个 postgresql 数据库,用于存储 CC 需要的一些数据。
在 CCNG 的 rakefile 里面,有着 CCDB 建表的初始化信息,具体的建表内容
在 db/migrations/*.rb 中。
CCNG 开始正常运行后,主要调用 lib/sequel_plugins/update_or_create.rb
里面的函数对以下信息的改变进行更新(更新的代码都在以下各部分的源码中,
可以使用全文搜索 update_or_create 函数查看)。
1. framework:语言运行时框架。就是"*.war"包可上传的各种框架,在
/var/vcap/jobs/cloud_controller/config/staging 路径下的各类*.yml 存储。
@lib/cloud_controller/models/framework.rb
2. stack :应用运行的堆环境,默认为 lucid64。stacks 就是一个预先构
建的文件系统,包括可运行应用的操作系统环境。
@lib/cloud_controller/models/stack.rb
3. runtime:应用可运行语言的运行时环境。运行时环境的具体信息在配置
文件 config/runtimes.yml 中。@lib/cloud_controller/models/runtime.rb
4. quota:一些共享信息的更新,包括 sevice 数量,内存限制等。
@lib/cloud_controller/models/quota_definition.rb
5. service : 存 储 支 持 的 service 信息。
@app/models/services/service_broker.rb
CC 中 Blobstore 模块
blobstor 相关源码都@lib/cloud_controller/blobstore 文件夹下
Blobstore 模块主要负责维护静态文件的存储,这部分文件主要分为三部分:
1. package,通俗的讲即应用程序打包。blobstore 会把应用的源码进行压
缩,变为 package。
2. buildpack,通俗的讲即程序 build 时所需环境打包。CCNG 的 blobstore
又把 buildpack 又分为 admin buildpack,cache buildpack 两部分。
3.droplet,通俗的讲即 buildpack+package。
从如上的工作内容可知 Blobstore 具体实现内容为:
1. 文 件 的 压 缩 , 变 为 package 。 @local_app_bits.rb 运 行 时 调 用
cloud_controller/safe_zipper.rb
2. 文件指纹收集,避免重复备份。采用 SHA1 的方式。@fingerprints_collection.rb
3. 拷贝 package 到 blobstore 进行保存,被 app_bits_package.rb 调用。
4. blobstore 中存储的各种包下载地址的创建。@blobstore_url_generator.rb
5. blobstore 中文件的下载 @cdb.rb@blobstore.rb
6. blobstore 创建的内容主要由@lib/cloud_controller/dependency_locator.rb 调
用
CC 中 Stager 模块
通过 blobstore 模块的描述我们知道应用的源码和 buildpack 进行捆绑打包
后的最终形式即为 droplet,而负责管理这个过程的组件就是 Stager 模块。
在 Cloud Foundry v1 的版本中,整个 Cloud Foundry 集群只有一个 Stager
组件。而在 Cloud Foundry v2 版本中,已经不存在原来独立的 Stager 组件,而
将和 Stager 功能类似的 staging 模块设计成 DEA 的一个子模块。因此,如果 v2
版本的 Cloud Foundry 部署了多个 DEA 的话,那么该云平台中就会有多个
Staging 模块。
CC 中 DEA 模块
DEA 模块的功能是负责 CCNG 与众 DEA 之间通信。
在 CCNG 中,DEA 模块也可以大致分为三个部分:
1.dea_client:主要负责向 DEA 发送 CCNG 收到的相关请求。如:应用的启
动、暂停、运行,查找具体的 instance 信息,应用相关修改等等。同时,它也
会向 HealthManger 模块发送请求查询应用状态。
@lib/cloud_controller/dea/dea_client.rb
2.dea_respondent:负责相应并完成由 DEA 主动发送过来的请求。请求主要
是当 DEA 中的应用退出或意外崩溃时,会由 DEA 通过 NATS 向 CCNG 发送应用退出
的消息,从而 CCNG 可以做后续处理工作。@lib/cloud_controller/dea/dea_respondent.rb
3.dea_pool:负责维护 Cloud Foundry 中所有 DEA 的资源池。当 Cloud Foundry
中有新的 DEA 启动并开始工作时,都会通过 NATS 向 CCNG 发布 advertise 信息,
而 CCNG 则通过发来的该部分信息向 dea_pool 中注册 DEA 信息。当有应用需要启
动的时候,CCNG 需要找到合适的 DEA 来完成启动工作,这个时候则由 dea_pool
通过各 DEA 的资源使用情况等其他重要条件完成 DEAs 的筛选,找出符合条件的
DEA。@lib/cloud_controller/dea/dea_pool.rb
CC 中 HealthManager 模块
HealthManager(以下简称 HM)模块主要负责与 health_manager 建立通信,并
完成有关应用健康状态的监控。该部分也可以简单分为两部分:
1.HealthManagerClient:充当 CCNG 与 HM 进行通信的 client 端,通过 NATS
发消息到 HM 实现查询指定 app 的状态、 查找 crash 的 instance、 查看所有 app
的健康状态这三个功能。@lib/cloud_controller/health_manager_client.rb
2.HealthManagerRespondent : 负 责 接 收 CCNG 与 HM 通 信 过 程 中
health_manager 发 来 启 动 / 停 止 应 用 的 信 息 。
@lib/cloud_controller/health_manager_respondent.rb
CC 中 Service 相关模块
一下内容为 v1 版本使用,v2 中用 broker 代替了 gateway。
V1 中继承下来的东西在 lib/cloud_controller/legacy_api 文件夹下。正如
该文件夹的名字所言,文件夹下的文件都是对外提供 api 的,形式就是一个 http
对应一个执行函数。该模块涉及到 Service 的只要有 3 个,LegacyServiceGateway、
LegacyServiceLifecycle 和 LegacyService:
LegacyServiceGateway:service_gateway 对外接口。包括获取所提供的
service_gatway 信息并更新、根据条件过滤 service_gateway 信息、删除、更
新 service_gateway 等 操 作 , 并 在 ccdb 中 进 行 记 录 。
@lib/cloud_controller/legacy_api/legacy_service_gateway.rb
LegacyService:service 对外的接口,创建、删除、查找 service 都通过它。
@lib/cloud_controller/legacy_api/legacy_service.rb
LegacyServiceLifecycle:上面针对的是 service 种类,此处针对的是某个
service 的 一 个 instance 的 生 命 周 期 的 管 理 。
@lib/cloud_controller/legacy_api/legacy_service_lifecycle.rb
关于 service 中 broker 相关访问组件在 lib/cloud_controller/service 中。
APP 上传流程示意图
看完了上述几个模块后,我们可以通过下图进行上述知识的整合。
DEA_NG
参考原文:http://lory-yang.com/2012/09/09/cloud-foundry-dea/
剩余21页未读,继续阅读
v8jsengine
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3