构建私有云计算平台的eucalyptus架构分析


软件设计开发本栏目责任编辑:谢媛媛 Computer Knowledge and Technology 电脑知识与技术第 6 卷第 15 期 (2010 年 5 月) 构建私有云计算平台的 EUCALYPTUS 架构分析 陈吉荣 (蚌埠坦克学院 计算机技术室,安徽 蚌埠 233050) 摘要:在企业现有的信息基础架构上构建私有云是 IT 业的一个趋势,基于开源的 EUCALYPTU 可以快速构建私有云计 算平台。构 建一个私有云计算平台有两个非常重要的问题;如何构建的问题(架构)和如何使用的问题(接口问题)。 该文详细分析了 EUCA- LYPTUS 架构,并对架构涉及的五个关键组件的进行了详细的论述,并总结了 EUCALYPTUS 的特点;最后通过实例对 EUCALYP- TUS 接口的三种形式(命令行、web GUI 和 API)进行了说明。 关键词:私有云;EUCALYPTUS ;EC2;EBS;S3;web 服务 中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2010)15-3973-03 Analysis of EUCALYPTUS Infrastructure for Constructing Private Cloud Computing Platform CHEN Ji-rong (Computer Technology Department, Bengbu Tank Institute, Bengbu 233050, China) Abstract: It is a IT trend to construct a private cloud upon existing IT architectue, and an open source EUCALYPTUS could be used to construct a private cloud paltform. Constructing private cloud must fouces on two critical issues, one issue is how to construct it, and the other is how to use it. In this paper the EUCALYPTUS infracture and its five important componets are analyzed in details, and EUCA- LYPTUS features are summarized. Lastly three interface types(commad line,web GUI and API) are showed by application cases. Key words: private cloud; EUCALYPTUS; EC2; EBS; S3; web service 云计算按照其服务的用户范围可以分为 private cloud(私有云)、community cloud(团体云)、public cloud(公共云)和 hybird cloud (混合云)。 private cloud 所服务的用户是仅局限于单一的组织;团体云所服务的对象可以属于多个组织;共有云所服务的用户范围 最广,整个互联网的用户都可能是其用户;混合云表现为云平台中有私有云、团体云和公共云两种或三种的组合。 Amazon 提供的 AWS 是一个商业的公有云计算平台,在该平台上有一些非常典型的云服务,如 Amazon Elastic Computing Cloud (Amazon EC2)、A- mazon Elastic Block Store (Amazon EBS)和 Amazon Simple Storage Service (Amazon S3),AWS 接口已经成为各种云计算平台必须提供 或兼容的标准接口。 目前也有不少大的机构或公司在内部构建了私有云计算平台,例如 NASA 的 NEBULA cloud,Ubuntu 的 Ubuntu Enterprise Cloud (UEC)。 利用开源云计算项目构建私有云计算平台是一个趋势, 比较典型的开源项目有 AbiCloud、Eucalyptus 、 10gen MongoDB 和 Nimbus,其中 Eucalyptus 是开源项目中从技术和市场角度来看是比较成功的。 Eucalyptus 兼容 AWS 接口,主要包括 EC2、EBS 和 S3,利用 Eucalyptus 构建的私有云计算平台能连接到一些公有云上;有一些 成功的基于 Eucalyptus 的私有云计算平台已经投入使用, 如前面提到的 NEBULA cloud 和 UEC;Eucalyptus 公司内部基于 Eucalyp- tus 开源项目开发了商业级的 Eucalyptus 系统,用以支持开源的 Eucalyptus。 同时,从技术角度 Eucalyptus 也很有特点,这在下文会有 详细的分析。 构建私有云计算平台的首先要解决的问题是选择合适的架构及其开源实现。 本文给出了 EUCALYPTUS 架构,对架构及其重要 组件进行了详细的分析,并综述了 Eucalyptus 主要技术特点。 云计算平台的另一个重要问题是用户如何使用平台,不同的用户使用 平台的方式是不同的。 用户有多种类型,包括平台的管理人员、应用的开发人员和一般用户。 平台的管理人员和一般用户通过命令 行接口或 web GUI 来使用,而开发人员除需要上述两种形式外,还需要 API。 本文最后通过实例分析了命令行、web GUI 和 API 三种形式的接口。 1 EUCALYPTUS 架构及其核心组件的分析 1.1 EUCALYPTUS 架构分析 EUCALYPTUS 架构是一个沙漏架构, 最上层客户层, 中间层是云管理 层,最下层是云资源层(包括计算资源和存储资源)。EUCALYPTUS 架构如图 1 所示: 1)CLC 和 Walrus 组件 CLC 组件:CLC(Cloud Controller,云控制器)位于云管理层,它本质上是 收稿日期:2010-03-20 基金项目:国家部委预研项目(LH0305-03) 作者简介:陈吉荣(1971-),男,安徽人,蚌埠坦克学院讲师,博士,主要研究方向为网格计算、云计算、分布式系统和 SOA。 图 1 EUCALYPTUS 架构 ISSN 1009-3044 Computer Knowledge and Technology 电脑知识与技术 Vol.6,No.15, May 2010, pp.3973-3975 E-mail: xsjl@cccc.net.cn http://www.dnzs.net.cn Tel:+86-551-5690963 5690964 3973 本栏目责任编辑:谢媛媛软件设计开发 Computer Knowledge and Technology 电脑知识与技术 第 6 卷第 15 期 (2010 年 5 月) 一个用 java 语言实现的 web service(基于 SOAP 架构),该 web service 的接口兼容 EC2 接口。 CLC 的功能包括查询平台的当前资源 信息、实现平台的资源调度和将用户对资源的使用请求转发到下一层的 CC 和 SC 上。 客户使用 CLC 主要通过对其暴露的 web ser- vice 的接口(API),为了使用方便,EUCALYPTUS 还开发了一些基于 CLC 的 web service 接口的工具,有命令行工具和基于 Web 的工 具,以适应不同的用户需求。 一般来说,一个私有云计算平台只有一个 CLC 组件,这样可以方便的查询和调度资源。 否则,多个 CLC 组件之间还需要实时的 交换资源的信息,设计的复杂度提高,通信效率降低。 同时,用 Java 语言实现还考虑过到平台扩展性问题。 有的组件设计必须要考虑到执行效率,如云资源层的 CC 和 NC 组件,因为 它们需要执行用户的应用程序。 Walrus 组件:Walrus(海象)位于云管理层,它本质上是一个用 java 语言实现的 web service( 基于 REST 架构),该 web service 的 接口兼容 Amazon S3 接口。 基于 REST 架构实现的服务主要是面向资源的,包括检索资源、修改资源、创建新资源和删除资源等;基 于 SOAP 架构实现的服务主要是面向活动的,WSDL 文档定义并描述特定于服务的操作。 Walrus 主要功能是将云端的存储资源抽象为一个超大的硬盘,用户可以在其中存储和检索信息。 通过 Walrus 存储和检索的信 息被称为对象。对象存储在存储段(bucket)中。与本地硬盘进行类比:对象就像是文件,存储段就像是文件夹(或目录)。与硬盘一样, 对象和存储段也可以通过统一资源标识符(Uniform Resource Identifier,URI)查找。 Walrus 还提供了指定存储段和对象的所有者和权限的能力,就像对待硬件的文件和文件夹一样。 在 Walrus 中定义对象或存储 段时,用户可以指定一个访问控制策略,注明谁可以访问用户的 Walrus 资源以及如何访问(例如,读和写权限)。 编程人员使用 Walrus 主要通过对其暴露的 web service 的接口, 同时 Walrus 还提供了一套封装了对 Walrus 访问的 RESTful API。 普通用户主要通过 EUCALYPTUS 提供的 Walrus 的命令行工具对 Walrus 进行访问。 2)CC 和 SC 组件 CC 组件:CC(Cluster Controller,集群控制器)位于云资源层的前端,是一个用 C 语言实现的 web service,一个集群有一个 CC 组 件。 私有云主要利用原有机构的 IT 基础设施,包括网络和软硬件设施,Cluster 指的是位于一个局域网网段内的计算资源和存储资 源。 CC 是一个用 C 语言实现的 web service,其主要功能是收集位于本集群的计算资源信息、对本集群的计算资源进行调度和对该 网段的网络进行管理。 SC 组件:SC(Storage Controller,存储控制器)位于云资源层的前端,是一个用 java 语言实现的 web service,一个集群有一个 SC 组件。 该 SC 的实现的接口兼容 Amazon EBS。 可以用 SC 创建卷,然后把卷作为块级设备连接到正在运行的一个实例。 还可以从这 些卷创建快照,快照保存在 Walrus 中,以后可以从快照重新创建卷。 每个快照代表一个卷在一个特定时间点的状态。 如果一些文件 和数据需要超过实例寿命的长期持久化,可以把它们存储在 SC 卷上,然后可以把卷连接或重新连接到任何实例。 在任何时候每个 SC 卷只能连接到一个实例。 但是,一个实例可以同时连接任意数量的卷。 每个 SC 卷位于一个网段中,卷连接 的实例必须在同一个网段中。 SC 主要应用于需要数据库、文件等支持的应用中。 3)NC 组件 NC 组件:NC(Node Controller)位于云资源层的后端,是安装在每个计算结点上(例如一台普通的 PC 机)的用 C 语言实现的 web service。 NC 的主要功能如下: 负责在其结点上运行的 VM 实例的管理,包括执行、监控和终止;负责在本地备份 VM 实例的影像和及其清除;查询和控制本结 点的系统软件资源,以回应上层 CC 组件的查询和控制。 1.2 EUCALYPTUS 架构的特点 EUCALYPTUS 架构的特点主要变现在以下几个方面: 1)核心组件的实现方式是 web services,使得云平台能为不同的用户提供方便的接口; 2)基于模块化得架构使得云平台很容易扩展; 3)兼容公有云的接口,使得私有云能和公有云进行互联; 4)开源的特点使得用户能在其基础上扩展符合自身需求的功能,并能较快的使用开源的最新功能; 5)不需要改变用户现在的 IT 基础设施,不需要考虑使用公有云存在的一些问题,如安全问题、费用问题等; 6)平台需要的操作系统环境和虚拟化技术(处理机和存储)均采用 Linux 操作系统及其虚拟化技术,web 服务器也是开源的 a- pache 项目。 2 用户使用 EUCALYPTUS 的接口 私有云计算平台能否成功的一个重要因素是其能否为用户提供多样的、方 便的接口。 2.1 web GUI 接口 在使用云计算平台时,用户需要一个账号和安全证书(与网格计算平台类 似),其接口就是 web GUI (web browse)形式。 图 2 所示的就是用户申请账号的 web GUI 界面。 图 2 用户申请账号的 web GUI 界面 3974 软件设计开发本栏目责任编辑:谢媛媛 Computer Knowledge and Technology 电脑知识与技术第 6 卷第 15 期 (2010 年 5 月) 2.2 command-line 接口 在该平台上,大部分的接口形式是 command-line 的形式。 一般的用户更喜欢 GUI 形式的接口,这也是 EUCALYPTUS 以后需要 完善的地方之一。 以用户启动一个 VM 实例为例,按照顺序依次需要用到如下的 commad-line。 euca-describe-images euca-describe-instances euca-describe-availability-zones euca-describe-keypairs euca-add-keypair mykey >mykey.private chmod 0600 mykey.private euca-run-instances -k mykey -n euca-describe-instances euca-authorize -P tcp -p 22 -S 0.0.0.0/0 default euca-allocate-address euca-associate-address -i ssh -i mykey.private root@ euca-terminate-instances ... 关于这些命令的作用和语法请参考 EUCALYPTUS 的相关文档。 2.3 API 接口 对于应用的开发人员来说,有些情况下需要平台能提供 API 形式的接口,例如用户需要在程序中将数据存储在 Walrus 中,然后 再适当的时候在程序中获取这些数据 (数据是实时产生的),RESTful API 就是 Walrus 提供的 API 形式的接口。 开源项目 JetS3t 对 RESTful API 做了进一步封装,使得开发人员可以用 OOP 的方式来使用 RESTful API。 下面以上传一部电影为例来简单说明 API 接 口。 1)创建一个 JetS3t 的 RestS3Service 实例 def awsAccessKey = "blahblah" def awsSecretKey = "blah-blah" def awsCredentials = new AWSCredentials(awsAccessKey, awsSecretKey) def s3Service = new RestS3Service(awsCredentials) 2)在 S3 服务器上创建存储段 def bucket = s3Service.getOrCreateBucket("bc50i") 3)修改存储段的访问控制列表 def bucket.acl = AccessControlList.REST_CANNED_PUBLIC_READ_WRITE 4)创建一个 S3 对象 def s3obj = new S3Object(bucket, new File("/path/to/少林寺.mp4")) 5)上传影片 s3Service.putObject(bucket, s3obj) 3 结束语 目前已经有一些成功的公有云计算平台投入运营,同时在企业现有的 IT 基础设施上构建私有云计算平台是一个趋势。 一个私 有云计算平台能否成功需要关注两个问题:架构问题和接口问题。 通过本文的上述分析,可以看出 EUCALYPTUS 在架构和接口两 个方面都很有特点。 在架构方面,表现为核心组件采用 web service 实现、架构容易实现和扩展、能与公有云互连等;在接口方面,提 供了丰富的接口类型(commad line, web GUI 和 API),满足不同用户(管理人员、开发人员和一般用户)的需求。 由于 EUCALYPTUS 是一个开源项目,还需要不断的加以完善。 例如随着云端的计算结点和存储结点、用户数量的快速增长,其 单一的 CLC 将会影响平台的效率。 同时,还需要在提供更多的 GUI 接口和对其 API 进行进一步封装的开发工具集。 由于是开源项 目,用户可以自己来加以研究和开发,这也是本文今后将关注的领域。 参考文献: [1] EUCALYPTUS 开源项目网站[EB/OL].http://www.eucalyptus.com. [2] AWS 网站[EB/OL].http://aws.amazon.com. [3] NEBULA 网站[EB/OL].http://nebula.nasa.gov/services. [4] Linthicum D S.Cloud Computing and SOA Convergence in Your Enterprise[M].USA:Pearson Education,2009. [5] 梁爱虎.SOA 思想、技术与系统集成应用详解[M].北京:电子工业出版社,2009. 3975
还剩2页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

yangwenhai

贡献于2013-07-11

下载需要 2 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf