zoukankan      html  css  js  c++  java
  • 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: 本身为商业公司,感觉开源的不是很彻底,很多地方很含糊。不过应该很专业,尽量挖掘。

  • 相关阅读:
    干点小事的常用的着的语句
    hadoop测试环境主配置简例
    开源集
    Linux系统重装与还原
    POJ1679 The Unique MST 【次小生成树】
    No value for key [org.hibernate.impl.SessionFactoryImpl 异常解决
    Java程序猿学习C++之数组和动态数组
    LightOj 1123-Trail Maintenance(最小生成树:神级删边)
    分布式协议之两阶段提交协议(2PC)和改进三阶段提交协议(3PC)
    HDU 4847 陕西邀请赛A(水)
  • 原文地址:https://www.cnblogs.com/chinacloud/p/1814526.html
Copyright © 2011-2022 走看看