区域级 MIG 的目标分布形状

默认情况下,区域级代管式实例组 (MIG) 会在各个选定的可用区中均匀分布其代管式实例。但是,如果您需要并非所有可用区都提供的硬件,或者需要在所选可用区中暂时不可用的硬件,或者需要优先使用可用区级预留,则可以选择其他分布方式。

如需配置区域级 MIG 在区域内的选定可用区分布代管式实例的方式,请设置 MIG 的目标分布形状。您可以使用以下选项:

  • 均匀(默认):实例组会适当创建和删除虚拟机实例,以实现并维持各个选定可用区中的代管式实例数量均匀分布。如果任意两个可用区之间的代管式实例数量之差不超过 1 个,则分布就是均匀的。建议用于可用性高的服务工作负载。

  • 平衡:实例组会确定系统获取资源的优先级,在有资源可用的可用区中调度虚拟机,并在各个选定的可用区中尽可能均匀地分布虚拟机,以最大限度地减少可用区故障的影响。建议用于无需自动扩缩的高可用性服务工作负载或批处理工作负载。

  • 不限:实例组会选择可用区来创建虚拟机实例,以满足当前资源限制条件中所请求的虚拟机数量,并最大程度提高未使用的可用区级预留的利用率。建议用于不需要高可用性的批处理工作负载。

根据您的工作负载要求和所需的 MIG 功能选择一个选项。请参阅对照表使用场景以及分布形状的工作原理

形状比较

下表针对每种可能的目标形状,介绍了预期工作负载、用途、代管式实例分布、功能支持、资源不可用时的 MIG 行为简要说明。

EVEN(默认) BALANCED ANY
预期工作负载 高可用性服务工作负载(无状态或有状态) 高可用性服务工作负载(无状态或有状态)

高可用性批处理工作负载
批处理工作负载
用途 最大限度地减少可用区级故障的影响(假设每个可用区的资源可用性都较高)。 尽可能最大限度地减少可用区级故障的影响(假设每个可用区有资源可用)。 优先获取并使用未用的预留资源。
各个可用区中的代管式实例目标分布 均匀。

无论资源可用性如何,任意两个可用区之间的代管式实例数量之差都不超过 1 个。*

如果可用区级容量存在限制,则某些代管式实例可能无法启动并运行。
尽可能均匀。

无法保证各个可用区中的虚拟机数量差异,具体取决于当前的资源可用性。

当资源可用时,分布类似于 EVEN。如果资源限制非常严重,则分布可能具有任何形状。
不限。

每个可用区可以拥有不同数量的代管式实例(包括所有实例或者没有实例)。
MIG 功能支持 EVEN(默认) BALANCED ANY
自动扩缩
Canary 版更新
主动式实例重新分布 不适用
预留 在每个可用区中最大限度地得到独立利用。

预留不会影响实例的分布方式。
在每个可用区中最大限度地得到独立利用。

如果存在预留,则它们可能有助于实现平衡分布。
在区域中最大限度地得到利用。

实例组优先用完区域中的预留。
实例模板
硬件要求(机器类型、CPU、GPU、现有磁盘)
所选硬件必须在所有所选可用区中可用 所选硬件必须在至少一个所选可用区中可用 所选硬件必须在至少一个所选可用区中可用
处理故障 EVEN(默认) BALANCED ANY
可用区中的资源暂时不可用 已公开

在具有较少代管式实例的可用区中创建新的代管式实例。在资源不可用的可用区中不断重试创建虚拟机实例,直到成功为止。

风险:在资源有限的可用区中无法创建虚拟机。
弹性佳

在资源可用的可用区中创建新的代管式实例,同时在各个可用区中尽可能均匀地分布实例。

风险:虚拟机可能无法在各个可用区中均匀分布。
弹性佳

在资源可用的可用区中创建新的代管式实例,以最大限度地提高未用预留的利用率。

风险:虚拟机可能无法在各个可用区中均匀分布。
可用区级故障 弹性佳

由于运行状况良好的可用区中的实例仍在提供服务,因此最大限度地减少了影响。

如果您预配额外的实例(足以应对失去一个可用区的情况),则进一步最大限度地减少了影响。
弹性佳

由于运行状况良好的可用区中的实例仍在提供服务,因此最大限度地减少了影响。

如果您预配额外的实例(足以应对失去一个可用区的情况),则进一步最大限度地减少了影响。
已公开

如果大多数或所有实例都集中在一个故障可用区中,则服务可能会中断。

* 如果您配置了负载平衡和自动扩缩功能,并且某个可用区发生故障,您可能会在负载增加的可用区中看到更多虚拟机。如果停用主动式实例重新分布功能,并在可用区中添加实例或从中移除实例,您可能会看到不均匀的分布。

使用场景

查看功能支持,然后根据您的使用场景选择分布形状。

通过均匀分布,优先确保工作负载弹性

如果您运行一个高可用性服务应用,该应用必须在可用区级故障期间正常运行并且不降低性能,请使用 EVEN 目标分布形状和超额预配的实例组大小。超额预配实例组中的实例数量可以保护您的工作负载不受可用区级故障的影响。

根据您的工作负载,请考虑创建自动扩缩器,以便在负载增加或减少时自动扩缩器自动向实例组添加实例或者从中移除实例。

如需详细了解 EVEN 目标分布形状,请参阅目标形状的对比并阅读 EVEN 目标形状的工作原理

如需详细了解如何在区域级 MIG 上部署高可用性工作负载,请参阅以下部分:

通过均匀分布,平衡资源获取情况

如果您运行高可用性服务工作负载或批处理工作负载,并且需要通过均匀分布区域中各个选定可用区的虚拟机实例来平衡资源获取情况,请使用 BALANCED 目标分布形状。

BALANCED 形状会优先获取资源(实例组在有资源可用的可用区中创建实例),同时在各个可用区中尽可能均匀地分布实例,以最大限度地减少可用区级故障的影响。

如果您运行的批处理工作负载不需要针对可用区级故障加以保护,请改用 ANY 目标形状。ANY 形状会优先获取资源,同时使用可用区级预留。

如果将形状设置为 BALANCEDANY,您无需手动验证特定硬件在特定可用区是否可用。您可以选择区域中的所有可用区,实例组会在有所需硬件可用的可用区自动部署实例。

如需详细了解 BALANCED 目标分布形状,请参阅目标形状的对比并阅读 BALANCED 目标分布形状的工作原理

确定系统获取资源的优先级

如果您运行批处理工作负载,并且获取请求数量的实例以执行处理对您而言比工作负载应对可用区级故障的弹性更重要,请使用 ANY 目标分布形状。

如果您有匹配的预留,请将目标形状设置为 ANY,以优先使用包含匹配预留的可用区。如需了解如何在实例模板中配置预留,请参阅预留的工作原理

BALANCED 目标形状类似,当您的批处理工作负载需要以下任一功能时,ANY 形状很有用:

  • 具有特殊硬件的虚拟机,例如特定 CPU 平台或 GPU 模型。实例组将根据资源可用性将实例部署到支持所需硬件的可用区,优先选择具有匹配预留的可用区。
  • 抢占式虚拟机。您无需探索哪些可用区具有抢占式容量。实例组将自动部署到具有抢占式容量的可用区。
  • 具有大量核心的虚拟机。实例组将在大型机器可用的情况下获取大型机器,并且会优先考虑具有匹配预留的可用区。

您无需手动验证特定硬件在特定可用区是否可用。您可以选择区域中的所有可用区,实例组会在有所需硬件可用的可用区自动部署实例。

您可以选择性地删除已完成计算的批量作业工作器实例,而不会影响其他工作器。与具有 EVEN 目标形状和主动式重新分布功能的实例组不同,具有 ANY 目标形状的实例组不必实现均匀平衡,也不会触发重新分布。

如需详细了解“不限”目标分布,请参阅目标形状的对比并阅读 ANY 目标分布形状的工作原理

工作原理

本部分介绍每个目标分布形状在以下情形中的工作原理:

  • 调整 MIG 的大小时
  • 某个可用区中的资源暂时不可用时
  • 可用区级故障发生时

EVEN 分布形状

如果目标分布形状设置为 EVEN 并且主动式重新分布功能已启用,则无论资源可用性如何,区域级 MIG 中任意两个可用区之间的代管式实例数量之差都不超过 1 个。但是,如果代管式实例的可用区缺少用于预配实际虚拟机的资源,则该实例可能无法启动并运行

调整具有 EVEN 分布的 MIG 的大小

具有 EVEN 目标形状的实例组会选择可用区来添加或删除实例,以便保持或实现各个可用区中代管式实例的均匀平衡。

例如,下图显示了实例组如何添加和移除代管式实例。

均匀目标形状均匀地在各个可用区中添加实例或者从中移除实例。
调整具有 EVEN 分布的 MIG 的大小

暂时不可用资源的影响

当您创建实例组或增加实例数时,可用区中的资源可能暂时不可用。例如,如果您在资源供应有限的情况下请求抢占式实例或专用硬件,则这些资源在您请求时可能不可用。

为了在各个可用区中维持实例的均匀分布,实例组会继续尝试在资源暂时不可用的可用区中创建虚拟机实例。最终,实例组会在资源可用之后获取所有正在运行的虚拟机实例。

例如,下图显示了某个可用区因资源暂时不可用而无法满足请求的情况。

对于均匀目标形状,如果虚拟机不可用,则自动修复功能会持续尝试创建它们,直到它们可用为止。
具有 EVEN 分布的 MIG 中暂时不可用资源的影响

可用区级故障的影响

如果您使用 EVEN(或 BALANCED)目标分布形状,则可以预配额外的实例,以最大限度地减少可用区级故障的影响。

如果发生可用区级故障,则部署到 3 个可用区且具有 EVEN(或 BALANCED)目标分布形状的区域级 MIG 可能会丢失 1/3 的实例。通过预配更多虚拟机(负载需要其中的 2/3),您可以确保在发生可用区级故障时有足够的容量来处理负载。

例如,如果您需要 8 个实例来处理 3 个可用区的请求,并且想要保护工作负载免受可用区级故障的影响,则应创建具有 12 个实例的区域级实例组。下图显示了某个可用区发生故障时的情况。

对于均匀目标形状,超额预配 MIG 可以在可用区故障发生时维持足够的虚拟机数量。
具有 EVEN 分布的 MIG 发生可用区故障时的影响

在这些情况下,EVEN 目标分布形状可与自动扩缩和负载平衡功能完美配合。如果发生可用区级故障,负载平衡器会开始将流量发送到两个剩余可用区中的实例,以接纳来自故障可用区的流量。

如需详细了解区域级 MIG 如何使用自动扩缩器,请参阅自动扩缩区域级代管式实例组

BALANCED 分布形状

具有 BALANCED 目标形状的区域级 MIG 可能无法在各个可用区中实现均匀分布,特别是在请求的资源在可用区中不可用时。

MIG 会在资源可用的可用区中创建虚拟机,以优先预配所请求数量的虚拟机。当资源可用时,分布类似于 EVEN。如果资源限制非常严重,则分布可能具有任何形状。

调整具有 BALANCED 分布的 MIG 的大小

增大组大小

对于 BALANCED 目标形状,实例组会根据您在 MIG 实例模板中指定的资源的当前可用性来选择创建新实例的可用区。

  • 当所有选定可用区中的资源都足够可用时,实例组会在增加大小时维持各个可用区中实例的均匀分布,其方式与 EVEN 目标形状相同。
  • 当可用区容量限制导致无法均匀分布时,实例组会在资源可用的可用区中创建实例,同时仍然尝试最大限度地保持平衡。

例如,如果您请求专用 CPU 平台、GPU 模型或抢占式虚拟机,而这些资源在所有可用区中的可用性并不相同,则您可能会观察到容量存在限制并且分布不均匀。

平衡目标形状会根据当前容量尽可能均匀地在各个可用区中添加实例以及从中移除实例。
调整具有 BALANCED 分布的 MIG 的大小

减小组大小

减小大小时,具有 BALANCED 目标形状的区域级 MIG 会按以下顺序移除实例,以减少对工作负载造成的影响:

  1. 未运行的实例,即,由于任何原因而无法创建或者正在创建或自动修复的实例。
  2. 实例组具有较多虚拟机的可用区中的实例(移除这些实例以达到均匀分布状态)。

暂时不可用资源或可用区级故障的影响

对于 BALANCED 目标分布形状,实例组会将实例部署到容量可用的可用区。如果可用区级容量暂时存在限制,则上述部署方案可能会导致各个可用区中的实例分布不均匀。

在这种情况下,如果具有最多虚拟机实例的可用区发生故障,则您的工作负载可能会失去大部分服务容量。如果运行状况良好的可用区具有临时容量限制,则实例组会尝试在原始位置(发生故障的可用区)重新创建发生故障的实例,并且此尝试可能会失败。

如需保护您的工作负载免受此类极端情况的影响,请执行以下操作:

  • 超额预配区域级 MIG 的大小,以便您的工作负载在可用区级故障发生时具有足够的服务容量。
  • 在每个可用区中预留足够多的资源,以应对高峰负载、超额预配以及维持各个可用区中实例的均匀分布。此策略有助于确保您实现各个可用区中实例的均匀分布,从而在可用区级故障发生时最大限度地减少容量损失。

下图显示了具有临时可用区级容量限制的场景(随后发生可用区级故障)可能会如何演变。

对于平衡目标形状,如果虚拟机不可用,则分布可能不均匀。如果随后发生可用区级故障,则自动修复功能会持续尝试创建发生故障的虚拟机,直到这些虚拟机可用为止。
具有 BALANCED 分布的 MIG 中暂时不可用资源(随后发生可用区级故障)的影响

如果系统无法在区域的任何可用区中满足您的请求,则实例组会在资源暂时不可用的可用区中创建实例。实例组会继续尝试在最初创建实例的可用区中创建已计划好的实例。如果其他可用区中的资源比计划创建虚拟机的原始可用区更早一步可用,则实例组不会尝试在其他可用区创建虚拟机。您可以在具有可用容量的可用区中手动安排新实例,方法是:删除无法创建的代管式实例,并将实例组的大小调整到其目标大小。

如果实例创建不成功,您可以列出代管式实例以查看相应代管式实例中的错误消息或者列出最近的错误

ANY 分布形状

如果目标分布形状设置为 ANY,则区域级 MIG 会在资源可用的可用区中创建代管式实例,从而确定系统获取资源的优先级。这意味着所有实例可能会在一个可用区中创建,或者在所有可用区中均匀分布,或者出现介于这两种场景之间的任何场景。

调整具有 ANY 分布的 MIG 的大小

当您增加实例组大小时,实例组会选择容量可用的任何可用区。如果您在一个或多个可用区中具有匹配的预留,则实例组会优先利用这些预留。

当您减小实例组大小时,实例组会按以下顺序删除虚拟机实例:

  1. 因任何原因而未运行的虚拟机
  2. 尚未更新为预期版本的虚拟机
  3. 基于非确定性因素选择的虚拟机

如果需要减小特定可用区中的实例组大小或者移除特定虚拟机实例(例如已完成作业的工作器),您可以从实例组中删除个别实例

暂时不可用资源的影响

如果目标分布形状设置为 ANY,则实例组会在所请求的资源可用的可用区中创建虚拟机实例,并避开资源暂时不可用的可用区。

如果系统无法在区域的任何可用区中满足您的请求,则实例组会在资源暂时不可用的可用区中创建实例。实例组将继续尝试在最初创建实例的可用区中创建已计划好的实例。如果其他可用区中的资源比计划创建虚拟机的原始可用区更早一步可用,则实例组不会尝试在其他可用区创建虚拟机。您可以在具有可用容量的可用区中手动安排新实例,方法是:删除未运行的代管式实例,并将实例组的大小调整到其目标大小。

如果实例创建不成功,您可以列出代管式实例以查看相应代管式实例中的错误消息或者列出最近的错误

例如,下图显示了区域级实例组在可用区无法满足请求时如何安排实例。

如果目标分布形状设置为“不限”,则实例组会在所请求的资源可用的可用区中创建虚拟机,并避开资源暂时不可用的可用区。
具有 ANY 分布的 MIG 中暂时不可用资源的影响
可用区级故障的影响

如果目标分布形状设置为 ANY,则实例组可能会将大多数实例或所有实例部署在单个可用区中。如果该可用区发生故障,则实例组的大多数实例或所有实例可能会在故障期间不可用。

如果发生可用区级故障或资源暂时不可用,或者虚拟机实例因任何原因而未运行,则您可以删除个别未运行的实例,然后将实例组的大小调整回所需的大小,以尝试获取具有可用容量的可用区中的替代实例。

如果目标分布形状设置为“不限”,则实例组会在所请求的资源可用的可用区中创建虚拟机。如果资源因任何原因而不可用,您可以减小实例组的大小,然后增大实例组的大小以尝试获取其他可用区中的虚拟机。
当资源暂时不可用时,在具有 ANY 分布的 MIG 中删除并重新创建实例

后续步骤