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架構的人有些幫助,如果你對這方面感興趣,並有更好的想法和建議,也請聯繫我。