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.在架构设计上有一定指导意义, 但仍有非常多的扩展工作要做.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章