Azure 云服务概述

Azure 云服务是平台即服务](PaaS) 的一个示例。 与 Azure 应用服务一样,此技术设计用于支持可缩放、可靠且运营成本低廉的应用程序。 同样,应用服务托管在虚拟机 (VM) 上,Azure 云服务也是如此。 但是,你对 VM 有更多的控制。 可以在使用 Azure 云服务的 VM 上安装自己的软件,并且可以远程访问它们。

Azure 云服务关系图

更多控制也意味着更不易于使用。 除非需要更多控制选项,否则,与 Azure 云服务相比,在应用服务的 Web 应用功能中启动和运行 Web 应用程序通常要快速方便一些。

有两种类型的 Azure 云服务角色。 两者之间的唯一区别是角色在 VM 上的托管方式:

  • Web 角色:通过 IIS 自动部署和托管应用。

  • 辅助角色:不使用 IIS,并独立运行应用。

例如,简单的应用程序可能只使用一个 web 角色为网站提供服务。 更复杂的应用程序可能使用 Web 角色来处理用户的传入请求,然后将这些请求传递给辅助角色进行处理。 (此通信可以使用 Azure 服务总线Azure 队列存储。)

如上图所示,一个应用程序中的所有 VM 都在同一云服务中运行。 用户通过单个公共 IP 地址访问应用程序,而请求会自动在应用程序的 VM 中进行负载均衡。 该平台采用一种能够避免单点硬件故障的方式在 Azure 云服务应用程序中缩放和部署 VM。

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

缩放和管理

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

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

监视

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

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

后续步骤

使用 .NET 创建云服务应用
使用 Node.js 创建云服务应用
使用 PHP 创建云服务应用
使用 Python 创建云服务应用