CloudHosting平台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 image), 同时也可通过查询/控制接口来查询/控制当前节点(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的代理.
    image-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.在架构设计上有一定指导意义, 但仍有非常多的扩展工作要做.

posted on 2009-10-20 17:05  彭帅  阅读(2957)  评论(0编辑  收藏  举报