Azure 执行模型

 

最后更新时间(英文版):01/20/2015
最后更新时间(中文版):04/11/2015

Azure 提供了用于运行应用程序的不同执行模型。每种模型提供一组不同服务,而你选择哪种模型完全取决于你要做什么。本文介绍三种模型,描述它们的技术并提供相关用例。

目录

虚拟机

开发人员、IT 操作人员和其他人可以使用 Azure 虚拟机在云中创建和使用虚拟机。提供所谓的 Infrastructure as a Service (IaaS),这是一项可广泛使用的技术。图 1 显示其基本组件。

01_CreatingVMs

图 1:Azure 虚拟机可提供"基础结构即服务"技术。

如图所示,可以使用 Azure 管理门户或基于 REST 的 Azure 服务管理 API 创建虚拟机。可以从包括 Internet Explorer、Mozilla 和 Chrome 在内的任何常用浏览器访问管理门户。对于 REST API,Microsoft 为 Windows、Linux 和 Macintosh 系统提供了客户端脚本工具。其他软件也可随意使用此接口。

无论你如何访问此平台,创建新 VM 都需要为 VM 的映像选择一个虚拟硬盘 (VHD)。这些 VHD 将存储在 Azure blob 中。

有两种选项可供您开始操作

  1. 上载您自己的 VHD
  2. 使用由 Microsoft 及其合作伙伴在 Azure 虚拟机库中或 Microsoft 开放源 VMDepot 网站上提供的 VHD。

库中以及 VMDepot 上的 VHD 包含全新的 Microsoft 和 Linux 操作系统映像,以及包含安装在其上的 Microsoft 和其他第三方产品的映像。选项一直都在增长。示例包含以下产品的各个版本和配置:

  • Windows Server
  • Linux 服务器,例如 Suse、Ubuntu 和 CentOS
  • SQL Server
  • BizTalk Server
  • SharePoint Server

除了 VHD 以外,你还要指定你的新 VM 的大小。Azure 库 中列出了每个大小的完整统计信息。

  • 特小,共享内核,768MB 内存。
  • 小,单核,1.75GB 内存。
  • 中,双核,3.5GB 内存。
  • 大,4 核,7GB 内存。
  • 特大,8 核,14GB 内存。
  • A6,4 核,28GB 内存。
  • A7,8 核,56GB 内存。

最后,选择你的新 VM 应在其中运行的 Azure 数据中心(无论是在美国、欧洲还是亚洲)。

一旦 VM 开始运行,你将根据其运行按小时付费,并在删除该 VM 时停止付费。你支付的数额不取决于你的 VM 的使用率,它仅取决于时钟时间。闲置了一小时的 VM 与负载很重的 VM 的费用相同。

每个运行的 VM 都有一个关联的 OS disk,该磁盘保存在 Blob 中。当你使用库 VHD 创建 VM 时,该 VHD 将会复制到你的 VM 的 OS 磁盘中。您对于运行的 VM 的操作系统所做的任何更改都存储在这里。例如,如果你安装可修改 Windows 注册表的应用程序,该更改将存储在你的 VM 的 OS 磁盘中。在你下次从该 OS 磁盘创建 VM 时,VM 将继续在你离开它时的相同状态下运行。对于存储在库中的 VHD,Microsoft 将在需要时应用更新,例如操作系统修补程序。但是,对于你自己的 OS 磁盘中的 VHD,你要对应用这些更新负责(尽管 Windows 更新在默认情况下处于打开状态)。

还可以修改运行的 VM,然后使用 sysprep 工具进行捕获。Sysprep 可删除特定内容(例如计算机名称),因此 VHD 映像可用于创建带有相同常规配置的其他 VM。这些映像与你上载的映像一起存储在管理门户中,因此它们可以用作其他 VM 的起点。

虚拟机还监视托管您创建的每台 VM 的硬件。如果运行 VM 的物理服务器发生故障,则平台会注意到此情况并在另一台计算机上启动相同的 VM。假设你有合适的许可,你可以从你的 OS 磁盘中复制已更改的 VHD,然后在其他任何位置(例如你自己的本地数据中心或其他云提供程序中)运行它。

除了其 OS 磁盘以外,你的 VM 还有一个或多个数据磁盘。尽管其中每个磁盘看起来都像是你的 VM 的已装载磁盘驱动器,但实际上每个磁盘的内容都存储在 Blob 中。对数据磁盘所做的每次写入都将永久存储在基础 blob 中。与所有 Blob 一样,Azure 同时在单个数据中心内和多个数据中心上复制它们以防止出现故障。

可以使用管理门户、PowerShell 以及其他脚本工具,或者直接通过 REST API 来管理运行的 VM。(事实上,你通过管理门户执行的任何操作都可以通过此 API 以编程方式完成。)Microsoft 合作伙伴(如 RightScale 和 ScaleXtreme)也提供依赖 REST API 的管理服务。

可以广泛使用 Azure 虚拟机。Microsoft 面向的主要方案包括:

  • 用于开发和测试的 VM。开发组通常需要具有用来创建应用程序的特定配置的 VM。Azure 虚拟机提供一种简单且经济的方法来创建、使用 VM,以及在不再需要时删除它们。
  • 在云中运行应用程序。对于某些应用程序,在公有云上运行具有经济意义。例如,考虑一个客户需求会急剧上升的应用程序。始终可以为你自己的数据中心购买足够多的计算机来运行此应用程序,但是其中大部分计算机可能在大多数时间都处于闲置状态。如果在 Azure 上运行此应用程序,只有在需要额外 VM 时才支付额外 VM 的费用,需求高峰过后,就可以将它们停止。或者,假设你是一家初创公司,需要在不做出任何承诺的情况下快速地按需计算资源。同样,Azure 也是合适的选择。
  • 将你自己的数据中心扩展到公有云。利用 Azure 虚拟网络,你的组织可以创建一个虚拟网络 (VNET),以便让一组 Azure VM 看上去就像是你自己的本地网络的一部分。它允许在 Azure 上运行 SharePoint 等应用程序,与在你自己的数据中心中运行这些应用程序相比,这种方法可能更易于部署和/或更便宜。
  • 灾难恢复。基于 IaaS 灾难恢复使你可以只在真正需要计算资源时才为所需的计算资源付费,而不用不停地为很少使用的备份数据中心付费。例如,如果你的主数据中心出现故障,你可以创建在 Azure 上运行的 VM 来运行至关重要的应用程序,然后在不再需要时关闭它们。

虽然这些不是唯一的可能情况,但它们确实为你如何使用 Azure 虚拟机提供了很好的示例。

VM 分组:云服务

当你使用 Azure 虚拟机创建新 VM 时,可以选择独立运行它,或使它成为一起在 cloud service中运行的一组 VM 的一部分。(尽管名称类似,但请不要和表示 Azure PaaS 技术名称的"云服务"混淆;这是两个不同的概念)。每个独立 VM 都有它自己的公用 IP 地址,而同一云服务中的所有 VM 都可通过一个公用 IP 地址进行访问。图 2 显示了这种情况。

02_CloudServices

图 2:每个独立 VM 都有它自己的公用 IP 地址,而在云服务中分成一组的 VM 可通过一个公用 IP 地址来公开。

例如,如果你已创建一个虚拟机来创建并测试一个简单的应用程序,则你可能会使用独立 VM。但是,如果你要创建一个多层应用程序,其中包含一个 Web 前端、一个数据库或许还有一个中间层,则你很可能如图 2 所示的那样将多个 VM 连接到一个云服务。

将 VM 在云服务中分组还使您可以使用其他选项。Azure 为同一云服务中的 VM 提供负载平衡,使用户请求分散在 VM 上。以这种方式连接的 VM 还可以通过 Azure 数据中心内的本地网络直接相互通信。

同一个云服务中的 VM 还可以分组为一个或多个 availability sets。要理解为何这很重要,可考虑一个运行多个前端 VM 的 Web 应用程序。如果所有这些 VM 都部署在同一台物理计算机上甚至在计算机的同一机架中,单个硬件故障就可能导致它们全都不可访问。但是,如果这些 VM 分组为一个可用性集,Azure 就会跨数据中心部署它们,因此任何一个单点故障都不会波及到其他 VM。

场景:使用 SQL Server 运行应用程序

若要更好地理解 Azure 虚拟机的工作原理,有必要给出几个较为具体的场景。例如,假设你要创建一个在 Azure 上运行的可靠且可缩放的 Web 应用程序。一种方法是在一个或多个 Azure VM 中运行该应用程序的逻辑,然后使用 SQL Server 进行数据管理。图 3 显示了这种情况。

03_AppUsingSQLServer

图 3:在 Azure 虚拟机中运行的应用程序可以使用 SQL Server 进行存储。

在此示例中,两种 VM 都是从库中的标准 VHD 创建的。该应用程序的逻辑在 Windows Server 2008 R2 上运行,因此开发人员从此 VHD 创建三个 VM,然后在每个 VM 上安装其应用程序。由于所有这些 VM 都在同一云服务中,因此他可以配置硬件负载平衡来分散请求。开发人员还从库中包含 SQL Server 2012 的 VHD 创建两个 VM。在这两个 VM 运行后,他在每个实例中配置 SQL Server,以使用具有自动故障转移功能的数据库镜像。这不是必需的,因为应用程序可以只使用单个 SQL Server 实例,但是采用此方法可以提高可靠性。

场景:运行 SharePoint 场

假设某个组织想创建一个 SharePoint 服务器场,但并不希望在自己的数据中心中运行该服务器场。原因可能是本地数据中心缺乏资源,或者创建该场的业务部门不希望与其内部 IT 组打交道。在此类情况下,在 Azure 虚拟机上运行 SharePoint 很有意义。图 4 显示了这种情况。

04_SharePointFarm

图 4:Azure 虚拟机允许在云中运行 SharePoint 场。

SharePoint 场有几个组件,每个组件在从不同 VHD 创建的 Azure VM 中运行。需要以下项目:

  • Microsoft SharePoint。库中有一些试用映像,或者组织提供其自己的 VHD。
  • Microsoft SQL Server。SharePoint 依赖于 SQL Server,因此该组织从标准库 VHD 创建运行 SQL Server 2012 的 VM。
  • Windows Server Active Directory。SharePoint 也需要 Active Directory,因此该组织使用库中的 Windows Server 映像在云中创建域控制器。这并非是严格要求的,虽然也可以使用本地域控制器,但 SharePoint 需要与 Active Directory 频繁交互,因此这里显示的方法将具有更好的性能。

尽管图中未显示,但此 SharePoint 场可能使用 Azure 虚拟网络连接到本地网络。这使 VM 以及它们所包含的应用程序对于使用该网络的人们而言像是位于本地。

如这些示例所示,你可以使用 Azure 虚拟机在云中创建和运行新的应用程序,或以其他方式运行现有应用程序。无论你选择哪个选项,该技术的目标都是相同的:为公有云计算提供一个通用基础。

网站

人们通过多种不同方式使用 Web 技术。公司可能需要迁移或设置可处理每周数以百万次的单击的现有网站,该网站部署在全球若干数据中心中。一个网站设计机构可以与一组开发人员合作构建一个可应对数以千计用户的自定义 Web 应用程序。公司开发人员可能需要设置应用程序,以便针对来自其公司 Active Directory 的经身份验证的用户在云中跟踪费用报表。IT 顾问可以使用常用的开放源应用程序为小型企业设置内容管理系统。 可以使用 Azure 虚拟机完成所有这些操作。但是创建和管理原始 VM 需要一些技巧和花一点功夫。如果你需要实现一个网站或 Web 应用程序,这里有一个更容易(也更便宜)的解决方案,这种方法通常称为"平台即服务"(PaaS)。如图 5 所示,Azure 可为此提供网站。

05_Websites

图 5:Azure 网站支持通过各种技术构建的静态网站、常用 Web 应用程序和自定义 Web 应用程序。

Azure 网站在 Azure 云服务的基础上构建,用于创建为运行 Web 应用程序而优化的"平台即服务"解决方案。如图所示,网站将在一组可能包含由多个用户创建的多个网站的单个虚拟机,以及属于单个用户的标准 VM 上运行。VM 是通过 Azure 网站管理的资源池的一部分,因此允许获得高可靠性和容错能力。 入门都很轻松。借助 Azure 网站,用户可以从一系列应用程序、框架和模板中进行选择并在几秒内创建一个网站。然后,他们可以使用最喜欢的开发工具(WebMatrix、Visual Studio、任何其他编辑器)和源控件选项来设置持续集成,并作为一个团队进行开发。依赖于 MySQL 数据库的应用程序可以使用 ClearDB(Microsoft 合作伙伴)为 Azure 提供的 MySQL 服务。 开发人员可以使用网站创建可伸缩的大型 Web 应用程序。该技术支持使用 ASP.NET、PHP、Node.js 和 Python 创建应用程序。例如,应用程序可以使用易贴的会话,而现有 Web 应用程序可以不做任何更改移动到此云平台。在网站上构建的应用程序可随意使用 Azure 的其他方面,例如 Service Bus、SQL 数据库 和 Blob 存储。你还可以在不同 VM 中运行一个应用程序的多个副本,而网站会自动在各 VM 中对请求进行负载平衡。因为新网站实例是在已存在的 VM 中创建的,因此可以非常快速地启动新的应用程序实例;这明显快于等待创建新的 VM。 如 图 5 所示,你可以通过多种方式将代码和其他 Web 内容发布到网站中。您可以使用 FTP、FTPS 或 Microsoft 的 WebDeploy 技术。网站还支持从源控件系统发布代码,例如 Git、GitHub、CodePlex、BitBucket、Dropbox、Mercurial、Team Foundation Server 和基于云的 Team Foundation Service。

云服务

Azure 虚拟机提供 IaaS,而 Azure 网站提供 Web 宿主。第三个计算选项"云服务"提供 Platform as a Service (PaaS)。这种技术旨在支持可扩展、可靠且运作便宜的应用程序。它还可以使开发人员不必担心管理他们所使用的平台,而将全副精力用在自己的应用程序上。图 6 解释了此概念。

06_CloudServices2

图 6:Azure 云服务提供"平台即服务"功能。

和其他 Azure 计算选项一样,云服务也依赖于 VM。该技术提供了两个略有不同的 VM 选项: web roles实例运行包含 IIS 的 Windows Server 变体,而 worker roles实例运行不含 IIS 的同一 Windows Server 变体。云服务应用程序依赖于这两个选项的某种组合。

例如,一个简单的应用程序可能只使用一个 Web 角色,而一个稍复杂的应用程序可能使用一个 Web 角色来处理来自用户的传入请求,然后将那些请求创建的工作传递给辅助角色进行处理。(此通信可能使用 Service Bus 或 Azure 队列。)

如图所示,一个应用程序中的所有 VM 都在同一云服务中运行,如之前对 Azure 虚拟机所述的那样。因此,用户通过单个公用 IP 地址访问应用程序,而请求会自动在应用程序的 VM 上实现负载平衡。与使用 Azure 虚拟机创建的云服务一样,该平台将采用一种能够避免单点硬件故障的方式在云服务应用程序中部署 VM。

即使应用程序在虚拟机中运行,理解云服务提供的是 PaaS 而非 IaaS 也很重要。以下办法有助于理解这一点:使用 IaaS(如 Azure 虚拟机),首先要创建和配置你的应用程序将运行的环境,然后将应用程序部署到此环境中。你要负责该环境的大部分管理工作,如在每个 VM 中部署操作系统的新修补版本。相反,在 PaaS 中,这样的环境似乎早已存在。您只需部署您的应用程序。已为你处理它所运行的平台的管理工作,包括部署操作系统的新版本。

使用云服务,你无需创建虚拟机。相反,你提供一个配置文件,告知 Azure 每个 VM 需要多少个角色实例(如三个 Web 角色实例和两个辅助角色实例),平台将为你创建它们。虽然你仍然要选择这些 VM 应该是什么大小(选项与 Azure VM 的相同),但是你无需亲自显式创建它们。如果你的应用程序需要处理更大的负载,则可以要求增加 VM,Azure 将创建这些实例。如果负载降低,则可以关闭这些实例并停止为它们付费。

通常通过两个步骤就能使云服务应用程序可供用户使用。首先,开发人员将应用程序上载到该平台的暂存区域。当开发人员准备好使应用程序上线后,他会使用 Azure 管理门户请求将其投入生产。暂存与生产之间的这种切换无需停机就可完成,这使运行的应用程序可在不打扰其用户的情况下升级到新版本。

云服务还提供监视功能。和 Azure 虚拟机一样,它将检测到发生故障的物理服务器,并在新的计算机上重新启动原先在该服务器上运行的 VM。云服务不仅检测硬件故障,还检测发生故障的 VM 和应用程序。与虚拟机不同,它在每个 Web 角色和辅助角色中都存在有代理,因此它能够在发生故障时启动新的 VM 和应用程序实例。

云服务的 PaaS 特性还具有其他含义。其中一个最重要的含义是,应编写基于此技术构建的应用程序以在任何 Web 角色或辅助角色实例出现故障时正确运行。要实现这一目标,云服务应用程序不应该在它自己的 VM 的文件系统中维持状态。与使用 Azure 虚拟机创建的 VM 不同,对云服务 VM 所做的写入不是持久的;这与虚拟机数据磁盘完全不同。相反,云服务应用程序应将所有状态明确写入 SQL 数据库、blob、表或其他某种外部存储中。以这种方式构建应用程序会使它们更易于扩展、抵抗故障的能力更强,这是云服务的两个重要目标。

我该使用哪一种?做出选择

所有三个 Azure 执行模型都能在云中构建可扩展且可靠的应用程序。既然在本质上是类似的,你应该使用哪种模型呢?答案取决于你想要做什么。

虚拟机提供最通用的解决方案。如果你需要可能的最大控制权,或者需要泛型 VM 以用于开发和测试等目的,这是最好的选择。虚拟机也是在云中运行现成本地应用程序的最佳选择,如上述的 SharePoint 示例所示。同时,因为你使用这一技术创建的 VM 看起来正像是你的本地 VM,所以这也可能是灾难恢复的最佳选择。当然,能力越强责任也就越大,IaaS 会要求你承担一些管理工作。

当你要创建一个简单的网站时,网站便是合适的选择。当你想要基于现有应用程序(如 Joomla、WordPress 或 Drupal)创建网站时更是如此。如果创建一个管理任务不多的 Web 应用程序(甚至可扩展性很强的 Web 应用程序),或将现有 IIS Web 应用程序移到公有云中,网站模型也是一个不错的选择。它还提供快速部署功能。你的应用程序的一个新实例几乎可以立即开始运行,而通过虚拟机或云服务部署新的 VM 可能需要几分钟。

云服务是 Azure 提供的初始执行模型,它是一个显式 PaaS 方法。虽然 PaaS 与 Web 宿主之间的界限并不分明,但云服务在一些重要方面与网站不同,其中包括:

  • 与网站不同,云服务授予你对应用程序的 VM 的管理权限。这允许你安装你的应用程序需要的任意软件,而网站无法做到这一点。
  • 因为云服务同时提供 Web 角色和辅助角色,所以对于其业务逻辑需要单独的 VM 的多层应用程序而言,此选择比网站更好。
  • 云服务提供单独的分阶段环境和生产环境,使应用程序更新比网站模型更流畅。
  • 与网站不同,你可以使用网络技术(如 Azure 虚拟网络和 Azure Connect)将本地计算机与云服务应用程序挂钩。
  • 利用云服务,你可以使用远程桌面直接连接到应用程序的 VM,而网站无法做到这一点。

因为云服务是 PaaS,所以它还提供了一些超越 Azure 虚拟机的优势。它会为你完成更多管理任务(如部署操作系统更新),因此你的操作成本很可能低于使用 Azure 虚拟机的 IaaS 方法的成本。

所有这三种 Azure 执行模型都各有优缺点。做出最佳选择需要了解这些内容,明白你要完成的任务,然后从中选出最合适的模型。

有时,单凭一种执行模型可能还不够。在这样的情况下,组合使用模型较为合适。例如,假设你要构建一个应用程序,既想利用云服务 Web 角色的管理优势,又需要使用标准 SQL Server 提高兼容性或性能。在此情况下,最佳选择是组合使用执行模型,如 图 7 所示。

07_CombineTechnologies

图 7:单个应用程序可以使用多个执行模型。

如图所示,云服务 VM 在不同于虚拟机 VM 的单独云服务中运行。尽管如此,二者仍可高效通信,所以通过此方法构建一个应用有时是最佳选择。

由于云平台需要支持多种不同方案,所以 Azure 提供了不同的执行模型。想要高效使用此平台的任何用户(如果你已阅读至此,可能也包括你)都需要了解每种执行模型。

转载于:https://www.cnblogs.com/imust2008/p/4688999.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值