Condividi tramite

Azure 虚拟机规模集的可靠性

使用虚拟机规模集 可以创建和管理一组虚拟机(VM)实例。 可以根据需求或定义的计划自动增减 VM 实例的数目。 它们通过跨多个可用性区域和容错域分配 VM 来实现高可用性和应用程序复原。

使用 Azure 时, 可靠性是共同的责任。 Azure 提供了一系列支持复原和恢复的功能。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。

本文介绍了如何使虚拟机规模集能够抵抗各种潜在中断和问题,包括暂时性故障、可用性区域中断、区域中断、虚拟机重新配置和服务维护。 它还介绍了如何使用备份从其他类型的问题中恢复,并重点介绍了有关虚拟机规模集服务级别协议(SLA)的一些关键信息。

重要

考虑规模集及其虚拟机(VM)的可靠性时,还需要考虑在 VM 上运行的磁盘、网络基础结构和应用程序的可靠性。 如果其他组件不同样具有复原能力,则仅提高 VM 的复原能力可能会造成有限的影响。 根据复原能力要求,可能需要跨多个区域进行配置更改。

生产部署建议

Azure Well-Architected Framework 提供了关于可靠性、性能、安全性、成本和操作的建议。 若要了解这些领域如何相互影响并有助于可靠的虚拟机规模集解决方案,请参阅 Azure Well-Architected 框架中虚拟机和规模集的体系结构最佳做法

可靠性体系结构概述

规模集将多个 VM 实例组合在一起,并应用集中式配置、自动缩放规则和滚动升级。

规模集支持两种不同的 编排模式:

  • 灵活的规模集(建议) 可以更灵活地部署和管理单个 VM 实例。

  • 统一规模集 部署具有相同配置的 VM,并将它们作为组进行管理。

故障域分散

容错域 是数据中心内的故障隔离组。 每个容错域都类似于服务器机架,这是共享相同电源、网络、冷却和平台维护计划的硬件节点的集合。 由于每个规模集的 VM 实例分布在多个容错域中,因此在一个容错域中发生的计划内或计划外中断不太可能影响其他容错域中的 VM 实例。

部署虚拟机规模集时,可以控制虚拟机分布在多少个故障域中。 在大多数情况下,您应该使用最大分散行为,这种行为会利用尽可能多的容错域。 有关详细信息,请参阅为虚拟机规模集选择合适数量的容错域

在具有可用性区域的区域中,每个区域都有一组不同的容错域。 创建 跨区域规模集时,实例分布在规模集使用的每个区域中的容错域。

负载均衡

规模集可与 Azure 负载均衡服务(包括 Azure 负载均衡器和 Azure 应用程序网关)集成。 当规模集添加或删除实例时,内置负载均衡器集成会自动更新负载均衡器配置。 有关详细信息,请参阅 Azure 虚拟机规模集的网络

规模集包括许多其他控件和功能,这些控件和功能会影响实例的部署、缩放、分布式和更新方式。 有关详细信息,请参阅什么是虚拟机规模集?

暂时性故障的复原能力

暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。

与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议

在 VM 上运行的应用程序应实施适当的故障处理策略,以确保服务中的任何临时中断不会影响工作负荷。

对实例问题的复原能力

当规模集启动虚拟机(VM)实例的创建或删除操作时,操作可能会失败。

实例运行时,可能会出现问题。 例如,由于应用程序崩溃或资源耗尽,实例可能无响应。 使用 自动实例修复,平台会监视应用程序的运行状况,并根据需要自动执行修复作,例如重启、重新映像或替换 VM 实例。

应对可用区故障的弹性

可用性区域 是 Azure 区域内物理上独立的数据中心组。 当一个区域发生故障时,服务可以故障转移到其余区域中的一个。

虚拟机规模集支持跨可用性区域和单个可用性区域配置。

  • 区域跨度:跨区域规模集将实例分散到你选择的多个可用性区域。

    跨可用区分布 VM 实例可提供最高的 SLA,建议对 Azure 中大多数 VM 工作负载使用。

    在跨可用性区域的规模设置中,每个 VM 实例及其磁盘都绑定到特定的可用性区域。 当所有区域都正常时,实例可以使用高性能、低延迟的网络跨区域进行通信。 如果某个区域遇到中断或连接问题,则其他区域中的实例仍然不受影响。

    默认情况下,虚拟机规模集会尽最大努力将实例均匀分布到所选区域。 但是,如果需要严格均衡,可以选择 更改区域均衡配置

    下图显示了跨区域规模集分布在三个区域,每个区域中都有一个实例:

    此图显示了一个跨区域规模集,其中包含三个实例,每个实例部署到单独的可用性区域。

    区域跨越与其他 Azure 服务中的 区域冗余 类似,但存在某些差异。 例如,当区域关闭时,规模集不提供跨区域数据的自动复制或故障转移。 在某些情况下,跨区域规模集的所有实例可能会部署在同一个区域,例如,如果选择将单个虚拟机(VM)附加到跨区域的灵活规模集中。

    注意

    如果使用灵活业务流程模式并附加、分离或删除单个 VM,请确保 VM 分布在多个区域。 如果 VM 全部位于单个区域中,则规模集可能无法抵抗该区域的服务中断影响。

  • 纬 向: 区域规模集(有时也称为 区域对齐)将其所有实例置于指定的单个可用性区域中。 每个 VM 及其磁盘都是区域性的,因此它们固定到该特定区域。

    重要

    仅当跨区域延迟太高而无法满足需求时,才建议固定到单个可用性区域,并且验证延迟是否不符合要求。 区域资源本身不能提供对可用区中断的复原能力。 若要提高区域资源的复原能力,需要将单独的资源显式部署到多个可用性区域,并配置流量路由和故障转移。 有关详细信息,请参阅 区域资源和区域复原能力

    下图显示了一个单一区域内的区域规模集,该区域中有三个实例:

    此图显示了一个具有三个实例的区域性规模集,每个实例都部署到同一可用性区域。

如果未为规模集指定可用性区域,则被视为 非分区区域性。 在这种情况下,实例可能放置在该区域中的任何区域中,并且不能保证它们均匀分布或位于同一区域。 使用非区域性规模集时,将保证 Ultra 和 Premium v2 磁盘在同一区域的磁盘联合定位。 为高级 V1 磁盘提供尽力而为的并置,但不保证标准 SKU(SSD 或 HDD)磁盘的并置。 如果该区域中的任何分区发生故障,规模集可能会遇到宕机。

要求

  • 区域支持: 区域跨区域和区域规模集可以部署到 支持可用性区域的任何区域

    但是,某些 VM 类型和大小仅适用于特定区域或区域中的特定区域。 若要检查哪些区域和区域支持所需的 VM 类型,请使用以下资源:

    如果特定 VM SKU 在为规模集选择的区域中不可用,则规模集可能无法横向扩展以满足容量要求。

  • 专用主机: Azure 专用主机部署不支持跨区域或区域规模集。

  • 类型: 可用性区域支持适用于所有类型的规模集,包括灵活规模集和统一规模集。

注意事项

  • 容错域分布: 当规模集使用可用性区域时,必须从特定的容错域分布方法中进行选择。 建议您对大多数工作负荷使用最大化分布,以便尽可能多地利用容错域。 有关详细信息,请参阅为虚拟机规模集选择合适数量的容错域

  • 区域均衡:区域均衡 确定规模集中的 VM 实例是否均匀分布在所选区域中。 如果每个区域的 VM 数量相同(允许±1个 VM 的差距),则规模集将被视为均衡。 可以将区域均衡模式设置为“尽力”或“严格”。 此设置控制规模集是否可以不均衡地横向扩展,包括区域中断方案。

  • 放置组: 对于统一规模集,如果配置多个 放置组,Azure 会在每个规模集使用的区域部署多个放置组。

成本

跨区域、单一区域和无区域规模集在相同数量和类型的 VM 实例下没有成本差异。

配置可用性区域支持

本部分介绍如何为规模集配置可用性区域支持。

  • 创建跨区域或区域缩放集。 创建新的规模集时,可以配置可用性区域。 有关详细说明,请参阅 创建使用可用性区域的虚拟机规模集

    注意

    选择要使用的可用性区域时,实际上是在选择逻辑可用性区域。 如果你在不同的 Azure 订阅中部署其他工作负载组件,它们可能会使用不同的逻辑可用性区域编号来访问相同的物理可用性区域。 有关详细信息,请参阅 物理和逻辑可用性区域

  • 将现有规模集转换为使用可用性区域。 可以将现有非区域(区域)规模集转换为使用可用性区域。 有关详细说明,请参阅 更新规模集以添加可用性区域

  • 更改现有规模集的可用性区域配置。 可以将区域添加到现有规模集,但不能删除区域。 有关详细说明,请参阅 更新规模集以添加可用性区域

    重要

    将规模集扩展到其他区域时,不会立即迁移或更改原始 VM 实例。 横向扩展时,会创建新实例,并均匀分布在所选可用性区域。 如果需要来自原始实例的数据,则负责将数据迁移到新区域中的实例。 在规模集中进行扩容时,将优先删除任何区域实例。 之后,将根据 横向缩减策略删除实例。

容量计划和管理

若要为可用性区域故障做好准备,请考虑 过度预配 规模集中的 VM 实例数。 此方法允许解决方案容忍某些容量损失,并继续运行而不降低性能,确保剩余区域有足够的容量来处理完整生产负载。 有关详细信息,请参阅使用过度预配管理容量

所有区域正常时的行为

本部分介绍在使用可用性区域支持配置规模集时的预期情况,并且所有可用性区域都正常运行。

  • 区域之间的流量路由。 你负责在规模集中的 VM 之间路由流量,包括位于不同可用性区域中的 VM。 常见方法包括 Azure 负载均衡器和 Azure 应用程序网关,后者提供与规模集的内置集成。 有关详细信息,请参阅 Azure 虚拟机规模集的网络

  • 区域之间的数据复制。 你负责在 VM 之间进行的任何数据复制,包括不同可用性区域中 VM 之间的复制。 在 VM 上运行的数据库和其他类似的有状态应用程序通常提供复制数据的功能。

区域故障期间的行为

本节描述当规模集配置了可用性区域支持时的预期情况,以及它们的可用性区域中发生中断时的情况。

  • 检测和响应。 你负责检测可用性区域的丢失以及决定如何响应。

    对于跨区域规模集,受影响区域中的任何 VM 实例都可能不可用。 正常区域中的实例仍可正常运行。

    对于在受影响区域中部署的区域性规模集,所有 VM 实例都可能不可用。 你需要计划如何响应区域故障。 例如,可以将流量重定向到不同区域或地区中的另一个规模集。

  • 活动请求。 受影响可用性区域中的 VM 上发生的任何活动请求或其他工作都可能会终止。

  • 预期数据丢失。 区域 VM 磁盘在区域故障期间可能不可用。

    如果您使用区域冗余存储 (ZRS) 磁盘,而中断影响到了您的 VM,您可以强制将 ZRS 磁盘从发生故障的 VM 中分离。 此方法允许将 ZRS 磁盘附加到另一个 VM。

  • 预期的停机时间。 在可用性区域恢复之前,受影响区域中的任何 VM 都会保持关闭状态。 使用跨区域规模集时,位于正常区域中的 VM 将继续工作。

  • 流量重新路由。 您负责将流量重新路由到健康区域中的其他 VM。

    如果配置区域弹性负载均衡器并执行运行状况检查,负载均衡器通常会检测失败的 VM,并且可以将流量路由到正常区域中的其他 VM 实例。

  • 实例替换。 无法保证虚拟机规模集自动将新实例添加到正常的区域中。

    如果有跨区域规模集,可以横向扩展以添加更多实例。 如果区域故障仅限于区域中的特定服务器集,则横向扩展作可能会将正常的实例添加到同一区域中,或者可能会将实例添加到其他区域。 但是,如果规模集使用严格的区域均衡,则如果这样做会导致不平衡,规模集会阻止横向扩展操作。

    小窍门

    最好根据 CPU 或内存使用情况配置 自动缩放 规则。 自动缩放规则允许规模集通过横向扩展来应对某一区域中 VM 实例的丢失,从而在剩余的运行区域中添加新实例。

区域恢复

当区域正常时,区域中的 VM 将重启。 你负责工作负荷所需的任何区域恢复过程和数据同步。

如果在区域故障期间将临时实例添加到规模集,当区域恢复时,您可能需要将规模集缩减到原始容量。

测试区域故障

可以使用 Azure Chaos Studio 模拟一个或多个可用性区域中的 VM 丢失,作为试验的一部分。 Chaos Studio 为规模集提供内置故障,并具有关闭特定区域 VM 的功能。 可以使用这些功能来模拟区域级故障并测试故障转移过程。

对区域范围的故障的复原能力

规模集是单区域资源。 如果某个区域不可用,则该区域中的任何规模集也会不可用。

用于复原的自定义多区域解决方案

可以将多个规模集部署到不同的区域,但需要实现复制、负载均衡和故障转移过程。 例如,可以在多个区域中部署相同的规模集,并使用具有运行状况探测的 Azure Front Door 或 Azure 流量管理器来路由流量。 你负责使用应用程序机制或托管数据服务复制状态。

备份和还原

Azure 备份为虚拟机提供原生备份支持。 Azure 备份创建和管理备份,并为整个 VM(包括所有附加磁盘)提供应用程序一致的保护。 需要对多个磁盘或应用程序感知备份进行协调备份时,使用 Azure 备份的 VM 备份解决方案是理想的。 但是,对于数据库工作负荷,请考虑提供事务一致性保护和更快的恢复选项的应用程序特定的备份解决方案。

使用适用于 VM 的 Azure 备份,可以根据需要自定义备份频率、保留期和存储配置。 有关详细信息,请参阅 适用于 VM 的 Azure 备份

备份还支持附加到 VM 的磁盘。 有关详细信息,请参阅 Azure 磁盘备份概述

对于大多数解决方案,不应只依赖于备份。 请改用本指南中所述的其他功能来支持复原要求。 但是,备份可以防范其他方法没有的一些风险。 有关详细信息,请参阅什么是冗余、复制和备份?

对 VM 重新配置的复原能力

规模集使您可以控制如何对 VM 进行配置更改,包括更改 VM SKU、更换每个 VM 的映像,以及添加或移除 VM 扩展。 可以控制 升级策略模式,该模式决定如何应用升级。 有关详细信息,请参阅 虚拟机规模集的升级策略模式

某些升级类型可能需要重新映像或重新部署实例。 如果特定实例必须从自动升级中排除,例如包含需要保留的状态的实例或无法在其他实例上复制的配置,请考虑使用 实例保护

服务维护期间的系统弹性能力

Azure 会定期执行更新,以提高 VM 主机基础结构的可靠性、性能和安全性。 规模集提供了多种方法来了解和控制计划内维护:

  • 计划内维护通知 会告知维护何时到期,并让你控制维护何时发生。

  • 维护配置可以让您在方便的时间安排维护时段,以满足业务需求。

  • Linux VMWindows VM 的计划事件为应用程序提供了准备 VM 维护的时间。 它提供有关即将发生的维护事件(例如重启)的信息,以便应用程序可以准备这些事件并限制中断。

服务级别协议

Azure 服务的服务级别协议 (SLA) 描述了每个服务的预期可用性,以及解决方案为实现该可用性预期而必须满足的条件。 有关详细信息,请参阅 联机服务的 SLA

虚拟机规模集共享虚拟机的可用性 SLA。 通过使用满足以下两个条件的规模集,可以提高 VM 的运行时间百分比:

  • 包含两个或多个实例。
  • 将这些实例分散到两个或更多可用性区域。