虚拟机规模集的可靠性
本文包含有关对虚拟机规模集的可用性区域支持的信息。
注意
虚拟机规模集只能部署到一个区域中。 如果要跨多个区域部署 VM,请参阅虚拟机 - 灾难恢复:跨区域故障转移。
可用性区域支持
可用性区域是每个 Azure 区域内在物理上独立的数据中心组。 当一个区域发生故障时,服务可以故障转移到其余区域中的一个。
有关 Azure 中可用性区域的详细信息,请参阅什么是可用性区域?。
使用 Azure 虚拟机规模集,可以创建并管理一组经过负载均衡的虚拟机。 可以根据需求或定义的计划自动增减虚拟机数量。 规模集为应用程序提供高可用性,用于集中管理、配置和更新大量 VM。 规模集本身不收费。 你只需为创建的每个 VM 实例付费。
虚拟机规模集支持区域内的区域性部署和区域冗余部署:
区域性部署。 在单个区域中创建规模集时,可以控制该集的所有虚拟机在哪个区域运行。 规模集是托管的,仅在该区域内自动缩放。
区域冗余的部署。 使用区域冗余规模集,可创建跨越多个区域的单个规模集。 默认情况下,在创建虚拟机时,它们会跨区域实现均衡。
先决条件
若要使用可用性区域,必须在受支持的 Azure 区域中创建规模集。
所有虚拟机(包括单实例虚拟机)都应使用灵活的业务流程模式部署到规模集中,以便使应用程序面向未来的缩放和可用性功能。
SLA
由于可用性区域在物理上是独立的,并且提供不同的电源、网络和冷却,因此 SLA(服务级别协议)会增加。 有关详细信息,请参阅 Azure Online Services 的 SLA。
创建启用了可用性区域的虚拟机规模集
可以使用下列方法之一创建启用了可用性区域的规模集:
创建使用区域部署的规模集的过程与这篇入门文章中详述的过程一样。 选择受支持的 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 中,单区域和跨区域规模集默认为多个放置组,但区域性规模集则默认为单个放置组。