你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

虚拟机规模集的可靠性

本文包含有关对虚拟机规模集的可用性区域支持的信息。

注意

虚拟机规模集只能部署到一个区域中。 如果要跨多个区域部署 VM,请参阅虚拟机 - 灾难恢复:跨区域故障转移

可用性区域支持

Azure 可用性区域是每个 Azure 地区内的至少三个在物理上独立的数据中心组。 每个区域中的数据中心都配备了独立的电源、冷却系统和网络基础结构。 在本地区域发生故障的情况下,设计可用性区域,以便一个区域受到影响时,其余两个区域支持区域服务、容量和高可用性。

故障范围包括软件和硬件故障,以及地震、洪水和火灾等事件。 容错是通过 Azure 服务的冗余和逻辑隔离来实现的。 有关 Azure 中可用性区域的详细信息,请参阅地区和可用性区域

已启用 Azure 可用性区域的服务旨在提供适当级别的可靠性和灵活性。 可以通过两种方式进行相关配置。 可以采用区域冗余配置,实现跨区域自动复制,也可以采用区域性配置,将实例固定到特定区域。 还可以将这些方法结合。 有关区域与区域冗余体系结构的详细信息,请参阅有关使用可用性区域和区域的建议

使用 Azure 虚拟机规模集,可以创建并管理一组经过负载均衡的虚拟机。 可以根据需求或定义的计划自动增减虚拟机数量。 规模集为应用程序提供高可用性,用于集中管理、配置和更新大量 VM。 规模集本身不收费。 你只需为创建的每个 VM 实例付费。

虚拟机规模集支持区域内的区域性部署和区域冗余部署:

  • 区域性部署。 在单个区域中创建规模集时,可以控制该集的所有虚拟机在哪个区域运行。 规模集是托管的,仅在该区域内自动缩放。

  • 区域冗余的部署。 使用区域冗余规模集,可创建跨越多个区域的单个规模集。 默认情况下,在创建虚拟机时,它们会跨区域实现均衡。

先决条件

  1. 若要使用可用性区域,必须在受支持的 Azure 区域中创建规模集。

  2. 所有虚拟机(包括单实例虚拟机)都应使用灵活的业务流程模式部署到规模集中,以便使应用程序面向未来的缩放和可用性功能。

SLA

由于可用性区域在物理上是独立的,并且提供不同的电源、网络和冷却,因此 SLA(服务级别协议)会增加。 有关更多详情,请参阅 Microsoft 在线服务的服务级别协议

创建启用了可用性区域的虚拟机规模集

可以使用下列方法之一创建启用了可用性区域的规模集:

创建使用区域部署的规模集的过程与这篇入门文章中详述的过程一样。 选择受支持的 Azure 区域时,可在一个或多个可用性区域中创建规模集,如下面的示例所示:

在单个可用性区域中创建规模集

将在你指定的单个区域中创建规模集和支持资源,例如 Azure 负载均衡器和公共 IP 地址。

区域故障转移支持

默认情况下,系统会在没有区域的 Azure 区域中创建具有五个容错域的虚拟机规模集。 对于支持虚拟机规模集可用性区域部署的区域,如果已选中此选项,则每个区域的容错域计数的默认值为 1。 在这种情况下,FD = 1 意味着尽最大努力将属于规模集的虚拟机实例分布到多个机架上。 有关详细信息,请参阅为虚拟机规模集选择合适数量的容错域

低延迟设计

建议使用区域冗余配置虚拟机规模集。 但是,如果应用程序具有严格的低延迟要求,则可能需要为规模集虚拟机实现区域。 对于区域性规模集部署,建议跨多个区域创建多个规模集虚拟机。 例如,可以创建一个固定到区域 1 的规模集实例,以及一个固定到区域 2 或区域 3 的实例。 在区域中断期间,还需要使用负载均衡器或其他应用程序逻辑将流量定向到合适的规模集。

重要

如果选择退出区域感知部署,则表示放弃对基础故障的隔离保护。 退出可用性区域配置会强制依赖于不符合局部区域放置和隔离的资源(包括这些资源的基础依赖项)。 不应期望这些资源在局部区域停机情形中幸存下来。 利用此类资源的解决方案应定义一个灾难恢复策略,并在另一个区域中配置解决方案的恢复。

安全部署技术

若要更好地控制虚拟机的部署位置,应部署区域性规模集虚拟机,而不是地区性规模集虚拟机。 但是,区域性虚拟机仅提供区域隔离,不提供区域冗余。 若要使用区域性虚拟机实现完全区域冗余,应在不同区域中有两个或更多个虚拟机。

还建议对区域冗余虚拟机使用最大分布部署选项。 有关详细信息,请参阅分布选项

分布选项

将规模集部署到一个或多个可用性区域中时,(自 API 版本 2017-12-01 起),可使用以下分布选项:

  • 最大分布 (platformFaultDomainCount = 1)。 建议使用“最大分布”部署选项,因为它在大多数情况下提供最佳分布。 如果需要将副本跨不同的硬件隔离单元进行分布,建议先跨可用性区域进行分布,然后在每个区域中使用“最大分布”。

    使用“最大分布”时,规模集会在每个区域中将 VM 分布到尽可能多的容错域。 这种分布可能会在每个区域中横跨五个以上或五个以下的容错域。

    注意

    使用“最大分布”时,无论虚拟机实际分布到多少个容错域,在规模集虚拟机实例视图和实例元数据中都只能看到一个容错域。 每个区域中的分布是隐式的。

  • 静态固定分布 (platformFaultDomainCount = 5)。 使用静态固定分布时,规模集会在每个区域中将虚拟机分布到刚好 5 个容错域中。 如果规模集在每个区域中找不到 5 个不同的容错域来满足分配请求,则请求会失败。

  • 与托管磁盘容错域 (platformFaultDomainCount = 2 或 3) 保持一致进行分布 可以考虑将规模集容错域的数量与托管磁盘容错域的数量保持一致。 如果整个托管磁盘容错域发生故障,保持一致有助于防止仲裁丢失。 容错域计数可以设置为小于或等于每个区域中可用托管磁盘容错域的数量。 若要了解按区域托管磁盘容错域的数量,请参阅 [在此处插入文档] (链接)。

区域均衡

对于跨多个区域部署的规模集 (区域冗余),可以选择最佳区域平衡严格区域均衡。 如果每个区域中的虚拟机数与规模集的所有其他区域中的虚拟机数相同 (相差 1),则可以认为该规模集“已实现均衡”。 例如:

规模集 区域 1 中的虚拟机 区域 2 中的虚拟机 区域 3 中的虚拟机 区域均衡
均衡的规模集 2 3 3 此规模集被视为均衡规模集。 只有一个区域具有不同的虚拟机计数,它只比其他区域少 1 个虚拟机。
非均衡规模集 1 3 3 此规模集被视为不均衡规模集。 区域 1 比区域 2 和区域 3 少 2 个 VM。

一个可能的情况是,规模集中的 VM 已成功创建,但这些 VM 的扩展部署失败。 在确定某个规模集是否已实现均衡时,这些虚拟机虽然扩展失败,但仍计在内。 例如,如果某个规模集的区域 1 中有 3 个虚拟机区域 2 中有 3 个虚拟机区域 3 中有 3 个虚拟机,那么即使区域 1 中的所有扩展都失败而区域 2 和 3 中的所有扩展都成功,也可以认为该规模集已实现均衡。

使用“尽量实现区域均衡”时,规模集会在维持均衡时尝试进行横向收缩和扩展。 但是,如果由于某种原因无法实现区域均衡(例如,如果一个区域出现故障,规模集无法在该区域中创建新的虚拟机),则规模集会允许临时的不均衡,以成功地横向缩减或扩展。在随后的横向扩展尝试中,规模集会将虚拟机添加到需要更多虚拟机的区域中以使规模集达到均衡。 同样,在后续的横向收缩尝试中,规模集会在需要减少 VM 才能实现规模集均衡的区域中删除 VM。 使用“严格执行区域均衡”时,如果在进行横向收缩或扩展尝试时会导致不均衡,规模集会放弃这样的尝试。

要使用“尽量实现区域均衡”,请将 zoneBalance 设置为 false。 此zoneBalance设置是 API 版本 2017-12-01 中的默认设置。 要使用“严格执行区域均衡”,请将 zoneBalance 设置为 true

迁移到可用性区域支持

若要了解如何将区域性规模集重新部署到可用性区域支持,请参阅将虚拟机和虚拟机规模集迁移到可用性区域支持

其他指南

放置组

重要

放置组仅适用于在统一业务流程模式下运行的虚拟机规模集。

部署虚拟机规模集时,还可以选择为每个可用性区域部署单个放置组或多个放置组。 对于区域性规模集,可选择在区域中包含单个放置组或多个放置组。 如果将规模集属性“singlePlacementGroup”设置为 false,则该规模集可以由多个放置组组成,其范围为 0-1000 台虚拟机。 设置为默认值 true 时,规模集由单个放置组组成,其范围为 0-100 台虚拟机。 对于大多数工作负荷,建议使用多个放置组,这样可以增大规模。 在 API 版本 2017-12-01 中,单区域和跨区域规模集默认为多个放置组,但区域性规模集则默认为单个放置组

后续步骤