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.在架构设计上有一定指导意义, 但仍有非常多的扩展工作要做.

 

 

 

===大文件存储===

Yahoo! Hadoop HDFS

KFS: Google创始人的印度同学实现的开源分布式文件系统,实现代码一般.

 

===分布式计算===

MapReduce: Yahoo! Hadoop: MapReduce项目的继续跟进.

包括MapReduce Aggregating Framework, Pipes, Streaming, Cascading

 

海量数据统计分析

Pig: 等价于Google Sawzall, 有部分分析必要

Hive: 提供SQL风格查询接口, 当前的实现不是很优化,没有combine的优化,比较低效,数据导入格式也不是很灵活.不如自行实现MapReduce划算.


===弱关系存储===

中心化架构

HBase: master/slaves架构的仿bigtable产物,有一些东西需要汲取。
Hypertable: 开发者被Microsoft挖走,

master/slaves架构的bigtable产物,也有一些东西可以汲取。

去中心化架构:

Facebook的Cassandra: 源码深入分析中.

Amazon Dynamo: 文档已经完整分析完毕.

 

===一致性系统===

zookeeper:分布式一致性系统,继续源码分析与跟进。

 

===SaaS===

阿里软件SaaS

Salesforce


===PaaS===
Google GAE:
的持续跟进: 主要看文档和平台托管应用的开发,需要借鉴很多东西.

10gen: 平台的源码分析还没有展开.估计工作量不会太大.10gen中的AppServer需要

着重看下.

Microsoft Azure: 这个肯定和Visual Studio系列联系紧密,开发向导肯定足够人性化,

MSDN上有相关课程,这个也需要关注.

 

===IaaS===
SimpleDB: key/value存储服务.

Amazon S3:

Amazon EC2:

Eucalyptus:

如果你想自己构建一个Google AppEngine的环境,那就用AppDrop,AppDrop可以运行在Amazon的EC2上。根据AppDrop的宣传,通过AppDrop你就不会被Lock in在Google的平台上了。这样如果你对与Google AppEngine的服务不满意,就切换到AppDrop的平台,你可以直接租用AppDrop的服务,也可以自己租用EC2,然后使用开源的AppDrop构建自己的Google AppEngine环境。甚至你也不想使用Amazon EC2的服务,那就使用Eucalyptus构建一个EC2的兼容的IaaS服务,然后运行AppDrop,在上面Host自己的Google AppEngine的应用。这样把Google和Amazon都甩开了。我们自己的应用还没有到需要自己构建一个云计算环境的地步,但是很多服务提供商会考虑使用Eucalyptus、AppDrop提供与Amazone和Google类似的服务,这样我们的选择就多了。不过这些开源项目目前还属于原型阶段,离商用还早.

 

Enomalism: 本身为商业公司,感觉开源的不是很彻底,很多地方很含糊。不过应该很专业,尽量挖掘。

你可能感兴趣的:(cloud)