eucalyptus源碼結構

文章轉自:http://hi.baidu.com/juacm/item/4112eaf5bc413fdd43c36af0


平臺Eucalyptus分析

-----Step 1-----: 架構分析

Eucalyptus架構特徵

非侵入式  
高度模塊化(highly modular cooperative)  
採用公開,標準的通信協議  
API與AWS兼容(SOAP & REST)
分層架構(Layer architecture)  
一站式管理平臺(Management Platform)  
虛擬網絡(Virtualized Network)  
虛擬計算 & 存儲(Virtualized Compute & Virtualized Storage)
 

Eucalyptus組件

每個Eucalyptus服務組件都提供了一個well-formed,語言無關的WSDL文檔格式的API和數據結構.內部服務的安全認證採用標準的WS-Security機制.
Eucalyptus由5個核心組件組成:

Cloud Controller(CLC): 虛擬化底層資源.

Cluster Controller(CC): 對Cluster作抽象. CC從一批VM採集信息並調度VM在具體NC上執行. CC同時管理着virtual instance network和執行由CLC指定的SLA.由單個CC管理的所有節點必須處於同一個廣播域中.

Node Controller(NC): 用於託管虛擬機.在當前主機上負責虛擬機的執行,檢測,終止等生命週期管理.NC在當前主機上運行,獲取和清理本地VM實例鏡像(kernel, root file system, ramdisk p_w_picpath), 同時也可通過查詢/控制接口來查詢/控制當前節點(host OS and the hypervisor)的系統軟件.NC同時負責管理虛擬網絡端點.

SC(Storage Controller): 實現了基於塊訪問的網絡存儲(類似Amazon EBS), 負責和各種第三方存儲系統(NFS,iSCSI等)通信.彈性塊存儲服務(EBS)作爲一個標準Linux塊設備掛接到虛擬機, 磁盤流量通過LAN(locally attached network)發送到遠端存儲.EBS卷(volume)不能跨VM實例共享, 但是允許對其創建一個快照並存儲到一箇中央存儲系統如Eucalyptus的存儲服務Walrus. Walrus(put/get存儲): 允許用戶存儲持久化數據.(類似Amazon S3).通過bucket和對象的方式組織,延遲一致.允許的用戶級操作: 創建, 刪除, list buckets, put, get, delete, 設置訪問控制權限. Walrus在接口上與Amazon S3兼容,並支持AMI(Amazon Machine Image),提供了一個可同時訪問VM鏡像和用戶數據的機制.

Management Platform: 爲cloud管理員提供了一站式控制檯,用於配置和管理cloud.MP同時爲administrator, project manager, developer或其它用戶提供了可定製的界面,並具有授權,認證等訪問控制.具體功能包括: VM管理, 存儲管理, 用戶/組管理, 帳戶管理, 監控, SLA定義和執行,cloud-bursting, provisioning等.
 

-----Step 2-----: 代碼概要分析

初步瀏覽了eucaplytus的代碼.

項目結構如下:

clc
    modules
    cluster-manager: cluster WEB管理模塊
    group-manager: 用戶/組 WEB管理模塊
    storage-manager: 存儲(S3)管理模塊
    storage-controller: (EBS)塊存儲管理模塊,也可以看作是EBS的代理.
    p_w_picpath-manager: 鏡像管理模塊.

cluster: Cluster Controller模塊.控制局域網內的node controller

node: Node Controller模塊.控制當前機器節點上的虛擬機實例.通過libvirt來操縱具體虛擬機實例.

storage: Storage Controller,也就是Walrus. 實際上相當於一個存儲委託,後端掛接具體的存儲系統(如S3).
 

補充:

WEB管理平臺用Java + GWT開發的,作核心調度和管理.
其它模塊都是用c編寫的:
    cluster controller管理局域網內的node controller.
    node controller通過libvirt來操縱具體的VM: KVM或XEN.
    Storage只是一個存儲proxy, 具體存儲系統依賴於第三方.目前可以認爲是一個S3的代理.

每個模塊都使用AXIS來提供一個WSDL web服務操作接口.
目前的代碼實現只可以看作一個prototype.在架構設計上有一定指導意義, 但仍有非常多的擴展工作要做.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章