在这个 “面向虚拟基础设施的云服务” 系列中,了解三种主要的云服务类型: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. 云服务的类型
公共云和私有云
云服务还可以基于访问和位置分为三类:
- 公共 云对 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 平台。
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-位,多核 |
内存 |
GB |
4 GB |
硬盘 |
5400rpm IDE |
7200rpm SATA 或 SCSI |
磁盘空间 |
40 GB |
100GB |
联网 |
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 的云还有商业支持可用。
Platform as a Service (PaaS)
PaaS 是一种云服务,能提供由提供者托管于硬件基础设施上的软件和产品开发工具。术语 PaaS 常常用于基于云的平台,您可以利用这些平台构建和运行定制应用程序。PaaS 应用程序提供了构建和部署 Web 应用程序所需的全部东西,此外还提供了可从 Internet 上的任何地方访问到的服务。终端用户无需下载、安装或维护此系统。
PaaS 提供了一套基本的服务,包括虚拟服务器、存储和数据库。您可以使用这些服务借助 PaaS 平台所提供的工具或 API 来在该平台之上构建一个应用程序。如下所示是一些最常用的 PaaS 平台。
- Google App Engine
- 让您能够在 Google 的基础设施上运行 Web 应用程序。可以使用 Python 或 Java? 技术来创建您的 Web 应用程序。
- Microsoft? Windows? Azure
- 一个基于 Windows 的环境,可用来创建云应用程序和服务。您可以使用 Microsoft Visual Studio? 以便在 Azure 平台上开发和部署应用程序。在 Community Technology Preview (CTP) 内可以找到 Azure,它可以供用户在 2010 年 1 月间免费评估使用。
- Force.com
- 是 Salesforce.com 的一个最新创意。它提供一个可用来快速构建可伸缩应用程序的开发平台。为了在这个平台上构建、版本化和部署 Force.com 组件和应用程序,可以使用一个基于 Eclipse 的 IDE。
- Morph
- 提供了一个完整的环境,称为 Morph Application Platform (MAP),可用来将多个 Web 应用程序托管在它们的云计算基础设施之上。
- Bungee Connect
- 一个完整的应用程序开发和部署平台,可用来为云构建 Web 应用程序。
参见 参考资料,获得这三个平台的链接。
图 1. 常见的 PaaS 平台
PaaS 平台一般会通过一个对 Google App Engine 或 Microsoft Azureplat 这类基础设施的接口来提供可伸缩的抽象。可使用 PaaS 提供者提供的应用程序 SDK(Software Development Kit)来创建和调试应用程序。
Google App Engine
Google App Engine 是一个基于云的平台,能让您在 Google 自己的基础设施上运行您的应用程序。运行在 App Engine 上的应用程序可以是用 Python 或 Java 编程语言编写的。这种运行基于 Java Virtual Machine (JVM) 的应用程序的能力开启了无限的可能性。您可以用除 Java 之外的任何能在 JVM 内运行的其他语言来创建应用程序,比如:
- JRuby
- Scala
- Clojure
- Groovy
- Jython
- Beanshell
您还可以在流量增长时,轻松地伸缩您的应用程序。对于 App Engine 开发人员而言,有两种不同的价位可以选择。
- 免费帐号
- 可用来创建最多消耗 500 MB 存储空间且月浏览量最多为 500 万页的应用程序。
- 付费帐号
- 适用于消耗的资源多于免费版本的那些应用程序。您可以根据自己的需要分配预算。您总是可以控制应用程序消耗资源的最大量并相应设置资源消耗的限值。
App Engine 为专有的 Google 实现提供了良好定义的 API 的可伸缩抽象。这些抽象可供基于 Python 或 Java 的程序通过 API/SDK 使用。
服务 |
提供者 |
Datastore |
Google 的 BigTable,一种高性能的专有数据库系统,可用来以半结构化的形式存储大量数据。 |
缓存 |
Memcache,一种高性能的分布式内存对象缓存系统。 |
身份验证 |
用来进行身份认证和用户管理的 Google 帐户 |
邮件 |
用来发送电子邮件的 Google Mail (Gmail) |
图 2. Google App Engine 服务实现
App Engine 环境还对应用程序施加了额外的限制,如下所示:
- 只允许使用通过 Python 或 Java 技术提供的标准库的一个子集。
- 对 CPU 请求、内存、文件大小等必须定额。
- 对应用程序所做的任何请求都必须在 30 秒内返回。
- 您不具备对文件系统的任何访问且只能读取作为应用程序一部分上传的静态文件。
- 不能在 App Engine 环境大量生成线程或进程。
- 在 App Engine 内使用的存储后端是 BigTable,一种模式较少的关键值数据存储。
- App Engine 只能执行从一个 HTTP 请求触发的那些代码。
这些限制可能会也可能不会约束到您的应用程序。App Engine 是构建可伸缩
Web 应用程序的一种很好的方式,并且 AppScale 还提供了一种框架来模拟 Google App
Engine 环境。AppScale 让您可以在本地以及在基于云的基础设施上(比如 Amazon EC2
和 Eucalyptus)透明地执行和调试 App Engine 应用程序。
AppScale
AppScale(参见 参考资料)是 Google App Engine
API 的一种开源实现,来自于位于圣塔巴巴拉的加州大学的 RACELab。它是一种云计算平台,可简化 Google
App Engine 应用程序在 IaaS 云(比如 Amazon 的 Elastic Compute
Cloud (EC2) 或 Eucalyptus,这已经在 面向虚拟基础设施的云服务,第 1 部分:Infrastructure-as-a-Service
(IaaS) 和 Eucalyptus 讨论过)上的执行。更多信息,请参见 参考资料。
AppScale 带来了 App Engine 的强大功能,并能让您用自己的集群运行
App Engine 应用程序。它也可以在 IaaS 平台上透明运行。据 RACELab 团队介绍,
“我们为 AppScale 确定的目标是提供一个 Platform-As-A-Service (PaaS) 云基础设施以使用户不仅可以在其 GAE 应用程序部署到 Google 专有资源上之前先部署、测试、调试、考量和监视这些应用程序,还可以便利 PaaS 实现的调查和扩展:服务、运行时、与低层云构造的互操作等。”
图 3 显示了用 AppScale 进行的服务实现。
图 3. AppScale 服务实现
AppScale 的架构
AppScale 环境包含四个主要组件。AppScale 通过构建和扩展来自 Google App Engine 的 SDK 并实现由此 SDK 公开的开放 API 补充了 Google App Engine 所提供的功能。AppScale 内的多个组件可自动化系统的部署、管理、伸缩以及系统容错以便执行 App Engine 应用程序。
无需对应用程序进行更改,即可在 AppScale 内部署和运行 Google App Engine 应用程序。AppScale 并不意味着要代替或与 Google 的 App Engine 竞争。它只是用来进行云基础设施试验的一个框架,并不会向上伸展为 Google 自以为豪的基础设施。
中所示的这四个 AppScale 组件是:
- AppServer
- 用来执行 App Engine 应用程序的一个主要组件。它是为了本地执行 App Engine 应用程序而对 Google App Engine SDK 的一个扩展。每个 AppServer 一次只可执行一个应用程序。为了托管多个应用程序,可以添加多个 AppServer。
- AppLoadBalancer
- 此组件负责分发来自用户的初始请求。在用户成功登录后,负载均衡器就会将请求路由给适当的 AppServer 以便为该应用程序实际处理请求。此后,负载均衡器就不再参与,用户被路由到适当的 AppServer。从这种意义上讲,它与传统的负载均衡器有些许不同。负载均衡器是一个 Ruby on Rails 应用程序,负载均衡功能也是通过使用称为 nginx 的开源 Web 代理提供的。
- Database Master
- 对数据仓库的主要接口。它提供了对 MySQL、Cassandra、Voldemort、MongoDB、HBase 和 HyperTable 各种可用数据仓库实现的访问。对其他的数据库(包括 CouchDB)的支持也将很快就可实现。
- Database slaves
- 一个或多个数据库 slave 提供了分布式的、可伸缩的容错数据管理能力。
这些组件可以使用 AppController 与其他组件通信,AppController 控制在部署环境内的所有 AppScale 实例的设置、初始化和拆除。AppController 还负责 App Engine 应用程序的部署和身份验证。
图 4. AppScale 组件
App Engine 应用程序的用户使用 SSL 与 AppServers 交互。对 AppScale 环境的第一个登录请求总是会先到达负载均衡器,在成功登录后负载均衡器将请求路由到适当的应用程序。
创建可由用户访问的应用程序的开发人员使用 AppScale Tools 工具集与 AppScale 进行交互。借助此工具集就可以设置一个 AppScale 实例并将 App Engine 应用程序部署到 AppScale。它在概念上类似于 Amazon EC2 工具。此工具集中的一些脚本总结如下。
脚本 |
动作 |
appscale-run-instances |
部署 AppScale 实例与一个 App Engine 应用程序 |
appscale-upload-app |
将一个 App Engine 应用程序上传到一个运行中的 AppScale 实例 |
appscale-describe-instances |
从 AppController 和 AppServers 检索资源使用情况的统计数据,比如 CPU 和内存的使用情况。 |
appscale-reset-pwd |
为根用户/开发人员重置开发人员密码 |
appscale-terminate-instances |
清除并销毁所有的 AppScale 实例 |
图 5. AppScale 架构
AppScale 使用了节点的概念。一个节点 指的是 AppScale 图像实例的一个实例。一个 AppScale 部署至少包含一个节点,更多的时候是包含几个节点。一个节点则包含用来与其他节点通信的 AppController 以及一个或多个 AppScale 组件。实现 AppLoadBalancer 的节点被称为头节点。在一个 AppScale 部署中,只能有一个头节点实例。
头节点上的 AppController 是主要控制器并负有一些额外的责任:
- 监视 AppScale 部署是否有故障节点。
- 根据系统需要和开发人员的要求增加和收缩 AppScale 部署。
- 从其他节点周期地收集应用程序信息。
- 负责在需要的时候重启故障组件和重新生成节点。
图 6 给出了一个例子。
图 6. AppScale 节点
把这个信息告诉Router模块(前面说到,所有进入Cloud Foundry的请求都是由Router模块处理并转发的,包括用户对App的访问请求。一个App运行起来后,需要告诉Router,让它根据负载均衡等原则把合适的请求转进来,使这个App的实例能够干活)。
一些统计性的工作。例如要把这个用户又新部署了一个App告诉Cloud Controller,以作quota控制等。
把运行信息告诉Health Manager模块,实时报告该App的实例运行情况。
另外,DEA还要负责部分对Droplet的查询工作。例如,如果用户想通过Cloud
Controller查询一个App的log信息,那么DEA需要从该Droplet里取到log返回等。
Cloud Controller。Cloud Foundry的管理模块。简单来说,就是与VMC和STS交互的服务器端,它收到指令后发消息到各模快,管理整个云的运行,相当于Cloud
Foundry的大脑。
以部署一个App到Cloud Foundry为例。在输入push命令后,VMC开始工作。在做完一轮用户鉴权、查看所部署的App数量是否超过预定数额、问了一堆相关App的问题后,需要发4个指令。
1.发一个POST到“apps”,创建一个App;
2.发一个PUT到“apps/:name/application”,上传App;
3.发一个GET到“apps/:name/”,取得App状态,查看是否已启动;
4.如果没有启动,发一个PUT到“apps/:name/”,使其启动。
AppScale 图像实例又称 guest virtual machine
(GVM)。它能在开源 IaaS 云 Eucalyptus(如在 面向虚拟基础设施的云服务,第
1 部分:Infrastructure-as-a-Service (IaaS) 和 Eucalyptus
中讨论的)之上执行,也可以在 Amazon Web Services EC2 环境中执行。通过最新的 Ubuntu
发布版,它还可被用在非虚拟的系统上。在 Eucalyptus 的情况下,可以使用 Xen、KVM 或 VMware
作为底层的虚拟层。图 7 显示了部署于 Eucalyptus 上的 AppScale。
图 7. 部署于 Eucalyptus 上的 AppScale
如下所示,Amazon EC2 使用 Xen 作为其底层的虚拟框架。
图 8. 部署于 EC2 上的 AppScale
AppScale 自带容错功能。它能承受 AppServer、Database
Slave、AppLoadBalancer 和 AppController 组件内的故障。
AppScale 团队现在正在研究各种故障场景以及它们对系统的影响。他们亦在寻找如何为已部署的
AppScale 环境内的这些错误实现容错方式。
AppScale 为创建一个能推进实用计算模型的完整的端到端开源云堆栈提供了可能性。Tim
O’Reilly 还为之取了一个名字 LEAP(意思是 Linux、 Eucalyptus、AppScale
和 Python)。此外,还有一些其他的项目也在试图提供类似的解决方案。其中最有希望的当属 TyphoonAE(参见
参考资料),它是一个开源项目,旨在执行基于 Python 的 Google App Engine 应用程序,后者具有可移植的数据存储、消息传递和缓存模块。在我写作本文之时,TyphoonAE
还只有测试版,不过此项目开发得相当迅速。
AppScale 的益处
AppScale 是本地测试和调试 Google App Engine
应用程序的一种极好的方式。AppScale 和 Eucalyptus 二者合起来提供了一个很好的用来探索和研究云计算的平台。
- 开源
- AppScale 的创建就是为了用来研究云计算平台。它的源代码免费可用,这就便于人们做深入探究或是根据自己的需要创建此平台的扩展。平台的开发进展得非常迅速。特性和改进不断被添加进来。
- 非常适于试验
- AppScale 是一个极好的试验云构造和理念的平台。它方便您尝试运行基于云的应用程序的各种新方法。此平台还很容易使用和扩展。
- 私有云
- AppScale 以及 Eucalyptus 都可作为私有云安装于防火墙之后的数据中心,运行在您自己的基础设施之上。让您尽享对安全性和环境的完全控制。
- App Engine 兼容性
- 一旦测试完成,您所创建的这个运行在 AppScale 框架上的 App Engine 应用程序可以很容易地被部署到实际的
Google App Engine 环境。
结束语
在本文中,您了解了 Platform as a Service (PaaS) 云计算如何能提供一组基本服务,包括虚拟服务器、存储和数据库。您可以使用这些服务以及 PaaS 平台提供的工具或 API 来在 PaaS 平台上构建一个应用程序。您还探索了如何使用 AppScale 在虚拟基础设施上或 Infrastructure as a Service (IaaS) 系统(比如 Amazon EC2 和 Eucalyptus)上执行 Google App Engine 应用程序。
|