cloud_controller_ng简介
cloud_controller_ng架构图
- DEA模块,主要负责与DEA组件进行交互;
- Stager模块,主要负责与DEA组件的staging部分进行交互;
- Blobstore模块,主要负责创建一个blobstore的存储,以供Cloud Foundry存储应用所需的静态文件;
- HealthManager(HM)模块,主要负责与HealthManager组件进行交互;
- CCDB模块,负责维护cloud_controller的数据库;
- collector_registrar模块,负责作为component向Collector组件注册;
- router_registrar模块,负责将cloud controller组件的域名注册至Router组件;
- legacy_api部分,负责接管ccng关于info,bulk以及services等的RESTful请求;
- 其他部分。
cloud_controller_ng之Stager模块
# We never stage if there is not a start request
def staging_request
{ :app_id => @app.guid,
:task_id => task_id,
:properties => staging_task_properties(@app),
# All url generation should go to blobstore_url_generator
:download_uri => @blobstore_url_generator.app_package_download_url(@app),
:upload_uri => @blobstore_url_generator.droplet_upload_url(@app),
:buildpack_cache_download_uri => @blobstore_url_generator.buildpack_cache_download_url(@app),
:buildpack_cache_upload_uri => @blobstore_url_generator.buildpack_cache_upload_url(@app),
:start_message => start_app_message,
:admin_buildpacks => admin_buildpacks
}
end
该请求的结构很清晰的表明了staging所做的工作,对应的工作如下:- app_id:创建的应用的id;
- task_id:相应的staging_task的id;
- properties:应用的基本属性等,比如使用资源,应用环境,使用服务等;
- download_uri:在blobstore中存储的应用源码app_package;
- upload_uri:最后打包成droplet之后,上传该droplet所使用的uri;
- buildpack_cache_download_uri:在blobstore中存储的该app所需要的buildpack的下载uri;
- buildpack_cache_upload_uri:buildpack上传的uri;
- start_message:启动该app所需要的基本信息,最终由DeaClient类的start_app_message方法来实现;
- admin_buildpacks:提供admin_bulidpack的下载uri。
cloud_controller_ng之DEA模块
dea_client
dea_respondent
dea_pool
cloud_controller_ng之blobstore模块
- 应用源码
- 应用buildpack
- staged应用,即droplet
cloud_controller_ng之HM模块
HM模块主要负责与health_manager建立通信,并完成有关应用健康状态的监控。该部分也可以简单分为两部分,一个为client,一个为respondent:- health_manager_client:主要负责充当ccng与health_manager进行通信的client端,通过messagebus初始化,并通过messagebus实现find_crashes,find_flapping_indices,health_instances三个功能。
- health_manager_respondent:主要负责接收ccng与health_manager通信过程中health_manager发来的信息,其中包含,health_manager要求ccng启动某些拥有,停止某些应用等。
关于作者:
孙宏亮,DAOCLOUD软件工程师。两年来在云计算方面主要研究PaaS领域的相关知识与技术。坚信轻量级虚拟化容器的技术,会给PaaS领域带来深度影响,甚至决定未来PaaS技术的走向。
转载请注明出处。
本文更多出于我本人的理解,肯定在一些地方存在不足和错误。希望本文能够对接触Cloud Controller架构的人有些帮助,如果你对这方面感兴趣,并有更好的想法和建议,也请联系我。