本文来自IBM developerworks,作者为Prabhakar Chaganti。原文标题:面向虚拟基础设施的云服务,第 1 部分: Infrastructure-as-a-Service (IaaS) 和 Eucalyptus。
简介
在这个 “面向虚拟基础设施的云服务” 系列中,了解三种主要的云服务类型:Software as a Service (SaaS)、Platform as a Service (PaaS) 和 Infrastructure as a Service (IaaS)。
在第一篇文章中,探究 IaaS 如何能提供一组构建块或服务,比如虚拟服务器、数据存储和数据库。使用这些服务,您就能够创建一个平台来部署和运行应用程序。同时,了解 Eucalyptus 这种开源的软件基础设施,用来实现具有集群或工作站群的云计算。
云计算的前景
不严格地讲,云计算 是指使用从您的环境之外作为一种服务提供的可伸缩计算资源,它按使用计费。您只需为所使用的资源付费,并在任何时候、Internet 的任何地方均可访问存在于这个云之内的任何资源。您无需顾及物理硬件和基础设施的管理;可以将这些责任留给云服务提供者。云计算是一种完全不同的计算和信息技术服务方式。云计算的前景是提供对所需计算资源的可伸缩的简便访问。
如图 1 所示,云服务明显区别于以往的受管服务,主要表现在如下三个方面:
- 按使用付费 — 您使用服务并按分或小时为服务付费。无需为可能需要或实际并未使用的资源提前付费。
- 弹性 — 可以根据需要增加或减少对资源的消费。
- 受管的基础设施 — 服务的基础设施由提供者拥有并完全受管于提供者。
图 1. 云服务的特征
云服务的分类
云服务可分为如下三个主要类型。
- Software as a Service (SaaS)
- 这是最为常见的一种云服务类型,我们中的大多数人都或多或少使用过。在 SaaS 云模型中,服务提供者提供所有的基础设施以及软件产品。用户通过一个基于 Web 的前端与此服务交互。这些服务涵盖的范围很广,从基于 Web 的电子邮件,比如 GMail,到财务软件,比如 Mint。
- Platform as a Service (PaaS)
- 提供软件和产品开发工具的一种云服务,这些工具由提供者托管于它们的硬件基础设施。用户可以使用这个平台以及所提供的 API 或是通过一个用于开发的图形用户界面来创建应用程序。这种服务的典型例子有 Salesforce.com 的 Force.com 和 Google App Engine。
- Infrastructure as a Service (IaaS)
- 提供对基本构建块的访问的一种云服务。您可以组合并对这些构建块进行分层来构建运行应用程序所需的基础设施。IaaS 最典型的例子有 Amazon Web Services (AWS) 和 Rackspace。
图 2 显示了云服务的这三种常见类型以及相应的示例。
图 2. 云服务的类型
公共云和私有云
云服务还可以基于访问和位置分为三类:
- 公共 云对 Internet 上的所有人可用。任何用户都可以注册使用公共云。AWS 和 Rackspace 可能是公共云最大的两个提供商。
- 私有 云是一种专有的云环境,只对有限的用户提供云服务。私有云通常都位于防火墙后您自己的数据中心内。
- 混合 云,有时又称为虚拟私有云,这种云提供的服务运行在一个公共的云基础设施之上,但通过虚拟专用网(VPN)限制对它的访问。
目前既可以是运行在 AWS 之上的公共云,也可以是运行在防火墙后的私有云的云服务为数不多,而 Eucalyptus 是其中之一。
Infrastructure as a Service (IaaS)
IaaS 云提供了一组构建块或基础服务,比如虚拟服务器、数据存储和数据库。您可以将这些服务一起纳入一个平台以便部署和运行您的应用程序。您可以轻松地搭建和拆除系统。IaaS 服务通常可通过一个 API 使用基于 SOAP 或 REST 的消息访问。
IaaS 云是可完全脚本化的环境;它们非常适合创建随需应变的框架。快速地组装好完整的、并能根据对资源的需求扩展或收缩的应用程序部署环境,这种能力是当今 IT 部门的重要价值主张。除了弹性之外,此服务的另一个吸引人之处是服务的按使用付费方式。您只需为您所消费的服务付费,无需预先分配资源。
使用 IaaS 系统会让多种应用程序从中受益。
- 测试和试运行
- 完整的测试和试运行环境可以被创建、使用并在不需要的时候拆除。硬件征用不再有时间上的延迟,也无需再等待环境就绪。任何时候想要测试,就可以创建一个新的环境并在测试完成后就丢弃该环境。
- Web 应用程序部署环境
- 您可以使用 IaaS 运行 Web 站点并通过按需扩展资源来使站点能够轻松处理流量的增加。您甚至可以使用 IaaS 云服务针对特定的市场推广活动或销售策略创建额外的临时 Web 站点。
- 存储需求
- 您的企业可以使用云服务作为为用户存储文件和其他数据的地方。
- 大规模数据处理
- 您可以使用云服务的强大功能来处理大型数据集并充分利用大规模并行处理。可以按需创建网格来处理大型数据并在处理完成后拆除这些网格。
AWS 是第一个广泛可用的 IaaS 系统,它提供了可在 Web 上访问到的一组服务,这些服务又提供了对 Amazon 的现成可用的计算基础设施的编程式访问。由 Amazon 构建并经过多年改进的这个强壮的计算平台现在可以为任何人在任何地点使用,只要他具有 Internet 连接。AWS 所提供的基本构建块基础设施能满足大多数系统的核心需求。对于复杂多样的企业应用程序的架构的搭建,现在可以通过在 Amazon 提供的这些可靠并且经济的构建块服务之上铺设新的功能得以实现。
AWS 提供的主要服务有:用来管理和运行虚拟实例的 Elastic Compute Cloud (EC2);用来存储数据的 Simple Storage Service (S3)。这些服务均可通过 API 使用 SOAP 或 REST 访问到。此 API 正在迅速成为与云服务环境交互的事实标准,并且 Eucalyptus 也充分利用了它来提供一个很棒的 IaaS 平台。
#p#
Eucalyptus
Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) 是一种开源的软件基础结构,用来通过计算集群或工作站群实现弹性的、实用的云计算。它最初是美国加利福尼亚大学 Santa Barbara 计算机科学学院的一个研究项目,现在已经商业化,发展成为了 Eucalyptus Systems Inc。不过,Eucalyptus 仍然按开源项目那样维护和开发。Eucalyptus Systems 还在基于开源的 Eucalyptus 构建额外的产品;它还提供支持服务。
不管是源代码还是包安装,Eucalyptus 很容易安装在现今大多数 Linux® 发布版上。它提供了如下这些高级特性:
- 与 EC2 和 S3 的接口兼容性(SOAP 接口和 REST 接口)。使用这些接口的几乎所有现有工具都将可以与基于 Eucalyptus 的云协作。
- 支持运行在 Xen hypervisor 或 KVM 之上的 VM 的运行。未来版本还有望支持其他类型的 VM,比如 VMware。
- 用来进行系统管理和用户结算的云管理工具。
- 能够将多个分别具有各自私有的内部网络地址的集群配置到一个云内。
架构
Eucalyptus 包含五个主要组件,它们能相互协作共同提供所需的云服务。这些组件使用具有 WS-Security 的 SOAP 消息传递安全地相互通信。
- Cloud Controller (CLC)
- 在 Eucalyptus 云内,这是主要的控制器组件,负责管理整个系统。它是所有用户和管理员进入 Eucalyptus 云的主要入口。所有客户机通过基于 SOAP 或 REST 的 API 只与 CLC 通信。由 CLC 负责将请求传递给正确的组件、收集它们并将来自这些组件的响应发送回至该客户机。这是 Eucalyptus 云的对外 “窗口”。
- Cluster Controller (CC)
- Eucalyptus 内的这个控制器组件负责管理整个虚拟实例网络。请求通过基于 SOAP 或 REST 的接口被送至 CC。CC 维护有关运行在系统内的 Node Controller 的全部信息,并负责控制这些实例的生命周期。它将开启虚拟实例的请求路由到具有可用资源的 Node Controller。
- Node Controller (NC)
- 它控制主机操作系统及相应的 hypervisor(Xen 或最近的 KVM,很快就会支持 VMWare)。必须在托管了实际的虚拟实例(根据来自 CC 的请求实例化)的每个机器上运行 NC 的一个实例。
- Walrus (W)
- 这个控制器组件管理对 Eucalyptus 内的存储服务的访问。请求通过基于 SOAP 或 REST 的接口传递至 Walrus。
- Storage Controller (SC)
- Eucalyptus 内的这个存储服务实现 Amazon 的 S3 接口。SC 与 Walrus 联合工作,用于存储和访问虚拟机映像、内核映像、RAM 磁盘映像和用户数据。其中,VM 映像可以是公共的,也可以是私有的,并最初以压缩和加密的格式存储。这些映像只有在某个节点需要启动一个新的实例并请求访问此映像时才会被解密。
一个 Eucalyptus 云安装可以聚合和管理来自一个或多个集群的资源。一个集群 是连接到相同 LAN 的一组机器。在一个集群中,可以有一个或多个 NC 实例,每个实例管理虚拟实例的实例化和终止。
在一个单一集群的安装中,如图 3 所示,将至少包含两个机器:一个机器运行 CC、SC 和 CLC;另一个机器运行 NC。这种配置主要适合于试验的目的以及快速配置的目的。通过将所有东西都组合到一个机器内,还可以进一步简化,但这个机器需要非常健壮才能这样做。
图 3. 一个单集群 Eucalyptus 安装的拓扑
在多集群安装中,可以将各个组件(CC、SC、 NC 和 CLC)放置在单独的机器上。如果想要用它来执行重大的任务,那么这么做就是一种配置 Eucalyptus 云的理想方式。多集群安装还能通过选择与其上运行的控制器类型相适应的机器来显著提高性能。比如,可以选择一个具有超快 CPU 的机器来运行 CLC。多集群的结果是可用性的提高、负载和资源的跨集群分布。集群的概念类似于 Amazon EC2 内的可用性区域的概念。资源可以跨多个可用性区域分配,这样一来,一个区域内的故障不会影响到整个应用程序。图 4 给出了一个例子。
图 4. 一个多集群 Eucalyptus 安装的拓扑
在将 Eucalyptus 安装并应用到您的基础设施上之前,需要考虑硬件要求。虽然出于试验目的,可以在一个笔记本电脑上运行全部内容,但是对于一个实际的部署场景,多集群无疑是一个更好的选择。如下所列的是 Ubuntu 管理员对硬件配置方面的一些指导。这些指导可广泛应用于任何的 Linux 发布版(不只是 Ubuntu)。
下面的指标是对用来运行 CC、CLC、Walrus 或 SC 的机器的建议配置。
硬件 | 最低 | 建议 |
CPU | 1 GHz | 2 x 2GHz |
内存 | 512 MB | 2 GB |
硬盘 | 5400rpm IDE | 7200rpm SATA |
磁盘空间 | 40 GB | 200 GB |
联网 | 100 Mbps | 1000 Mbps |
运行 NC 的机器需要更为强大,因为这些机器将会运行每个虚拟实例。它们还需要充足的磁盘空间来存储启动实例所需的映像。运行 NC 的这些机器最好是多核的、内存至少 4 GB、使用高速磁盘驱动器。如下是一些建议指标。
硬件 | 最低 | 建议 |
CPU | VT 扩展 | VT,64-位,多核 |
内存 | 1 GB | 4 GB |
磁盘 | 5400rpm IDE | 7200rpm SATA 或 SCSI |
磁盘空间 | 40 GB | 100 GB |
联网 | 100 Mbps | 1000 Mbps |
可用性和安装
在我写作本文之时,Eucalyptus 的最新版本是 1.6。您可以通过使用由该项目托管的免费公共实例 ucalyptus Public Cloud (EPC) 立即体验 Eucalyptus。EPC 具有有限的资源,所以对能够启用的实例的数量以及能够使用的存储量都是有限制的。但是,它仍然是一个很好的体验 Eucalyptus 和了解该环境的途径。
Eucalyptus 可以从源代码安装,也可以从面向特定 Linux 发布版的包安装。从源代码安装虽然复杂一些,但可工作于几乎所有的 Linux 最新版本。包安装虽然简便,但只适用于 Redhat 和基于 Debian 的发布版。更详细的安装指导,请参考 Eucalyptus 管理员指南。安装 Eucalyptus 最为简单的方法是安装 Ubuntu Linux 发布版的最新版本 Karmic Koalad,并充分利用 Ubuntu Enterprise Cloud,它能提供对运行基于 Eucalyptus 的云的完整支持。
Eucalyptus 和 Ubuntu Enterprise Cloud
Ubuntu Enterprise Cloud (UEC) 是一个由 Ubuntu 提出的新的开源计划,旨在进一步简化基于 Eucalyptus 的云基础设施的部署、配置和使用。UEC 简化了如下内容:
- 创建能够在 Amazon 的 EC2 基础设施上运行 Eucalyptus 的公共云
- 创建能够在位于防火墙之后的数据中心内部的基础设施之上运行的私有云
这是到目前为止最为简单的安装和尝试使用 Eucalyptus 的方式。只需下载 CD 服务器版并将其安装在任何想要的地方。UEC 也是第一个允许在本地环境轻松创建云服务并进而利用云计算强大功能的开源项目。
Eucalyptus 的益处
Eucalyptus 是一个具有优良架构的云服务环境,可用来在 Amazon 的 EC2 基础设施上创建一个公共云,或者在您的数据中心(甚至是笔记本电脑)内创建私有云。如果您正在考量在您的团队或组织内使用云计算,那么 Eucalyptus 非常值得您考虑用作云服务平台。它提供了如下一些好处。
- 开源和开发
- Eucalyptus 的创建是为了促进云计算平台方面的交流和研究。它以源代码的形式提供免费使用,这就使得您很容易透过其表面看到它的实质,或是针对自己的需求创建该平台的扩展。开发的步调很快。特性以及改进不断被添加到 Eucalyptus。
- 杰出社区
- Eucalyptus 具有一个由愿意与他人免费共享自己见地的热情而博学的用户组成的杰出社区。他们的论坛是您获得支持并与其他 Eucalyptus 用户交互的一个很好的途径。
- 公共云
- Eucalyptus 可很容易地作为一个公共云安装和运行在 Amazon 的 EC2 框架上。
- 私有云
- Eucalyptus 可被作为运行在您的基础设施之上的私有云安装于防火墙后的数据中心内。这样,您就获得了对安全性和环境的全面控制。
- 可移植性
- 得益于 Eucalyptus 与 Amazon 的 EC2 API 的兼容性以及 Eucalyptus 的灵活性,可以很容易地将应用程序从一个云迁移到另一个云。甚至可以创建混合云来同时使用公共和私有云。
- 经过了良好的测试
- Eucalyptus 现在是 Ubuntu Enterprise Cloud 的一部分,并且是全球数千个 Ubuntu 服务器的一个组件。这种测试规模将会很快巩固 Eucalyptus 平台的稳定性。
- 商业支持
- 如果您需要超出论坛所能提供的更快的支持,对于基于 Eucalyptus 的云还有商业支持可用。
结束语
在本文中,您了解了 Infrastructure as a Service (IaaS) 云计算环境。您还探究了可用来创建公共或私有云基础设施的开源 Eucalyptus 项目。
本系列的第 2 部分将着眼于 Platform as a Service (PaaS) 云环境以及 Appscale,一个用来运行 Google App Engine 应用程序的开源项目。
【编辑推荐】