修复在 Azure 中创建、重启或调整虚拟机规模集时出现的 AllocationFailed 或 ZonalAllocationFailed 错误

警告

如果Microsoft Azure 虚拟机规模集是 Azure Service Fabric 群集的一部分,请不要遵循此故障排除指南。 此指南可能会导致数据丢失和不可逆的群集损坏。在这种情况下,本指南可能会造成数据丢失和不可逆的群集损坏。 有关详细信息,请参阅 是否可以在 Service Fabric 群集中使用大型虚拟机规模集?

在本文中,获取有关以下内容的信息:

  • Microsoft Azure 虚拟机规模集中的 AllocationFailed 或 ZonalAllocationFailed 错误。
  • 如何避免分配失败。
  • 分配失败的原因。
  • 如何排查出现分配失败的问题。

若要排查标准虚拟机(VM)的分配失败问题,请参阅 在 Azure 中创建、重启或调整 VM 大小时排查分配失败问题。

症状

由于对 Azure 服务的需求较高,如果尝试在某些区域中创建或启动 VM 实例,则可能会出现分配失败。 每当有以下情况时,Azure 会尝试将计算资源分配给订阅:

  • 创建虚拟机规模集。
  • 重启已停止的(已解除分配)规模集 VM 实例。
  • 调整规模集的大小。

以下错误详细信息是分配失败消息的示例。

错误代码:AllocationFailed 或 ZonalAllocationFailed

错误消息 1:分配失败。 对于此区域中请求的 VM 大小,我们的容量不够。 详细了解如何提高分配成功 https://aka.ms/allocation-guidance的可能性。

错误消息 2:分配失败。 由于条件限制性太强,无法分配具有以下约束的虚拟机。 请删除一些约束,然后重试。 应用的约束包括:

  • Availability zone
  • VM 大小

错误消息 3:分配失败。 如果尝试将新 VM 添加到具有单个放置组的虚拟机规模集,或者更新/调整具有单个放置组的虚拟机规模集中的现有 VM 的大小,请注意,此类分配的范围限定为单个群集,并且群集可能容量不足。 请阅读有关提高分配成功 https://aka.ms/allocation-guidance的可能性的详细信息。

如何避免分配失败

为了避免分配失败,可以将某些配置设置应用到规模集以优化分配请求。

  • 过度预配。 启用过度预配后,规模集实际上会启动比你要求更多的 VM 实例。 然后,在成功预配请求的 VM 实例数后,它会删除额外的 VM 实例。 这种做法可提高预配成功率并缩短部署时间。 不会为额外的 VM 实例付费,它们不会计入配额限制。 若要启用过度预配,请执行:

    1. Azure 门户中,搜索并选择虚拟机规模集

    2. 选择规模集的名称。

    3. 在菜单窗格中,选择“ 配置”。

    4. “过度预配”标题中,将“启用过度预配”设置为“打开”。

    5. 选择“保存”。

    详细了解 过度预配

  • 启用大型规模集。 大型虚拟机规模集定义为可缩放到 100 个以上的 VM 实例的规模集。 此功能由规模集属性 (singlePlacementGroup=false) 设置。 大型规模集的特殊之处不是 VM 实例的数量,而是它所包含的放置组数。 放置组类似于 Azure 可用性集,其自己的容错域和升级域。 设置为 singlePlacementGroup <a0/> 后,分配成功的可能性更大,因为在部署为多位置组时,部署可以分散到多个群集中。 详细了解如何使用大型虚拟机规模集,特别是如何将现有规模集转换为跨多个放置组。

    注意

    可以将规模集从支持单个放置组更改为支持多个放置组,但不能在其他方向执行转换。 一旦 singlePlacementGroup 设置为该设置 false,则无法将其更改回去。

减少请求的 VM 大小的实例数,然后重试部署操作。 对于较大的部署,可能需要使用多个放置组评估 Azure 虚拟机规模集。 可以根据需求或定义的计划自动增减 VM 实例的数目。

其他提示

在首选区域中提供首选 VM 类型之前,遇到部署问题的客户应将以下部分中的指南视为临时解决方案。

确定最适合你的案例的方案。 若要增加分配成功的可能性,请使用相应的建议解决方案重试分配请求。 或者,以后始终可以重试。 群集、区域或区域可能已释放足够的资源,以便于其他时间满足你的请求。

原因

区域或区域没有足够的核心容量来容纳所请求的 SKU。

原因 1:调整规模集的大小或向现有规模集添加 VM 实例的大小

如果请求重设规模集大小或将 VM 实例添加到现有规模集,则必须在托管现有规模集的原始群集中尝试该实例。 或者群集支持请求的 VM 大小,但当前可能没有足够的容量。

原因 1 的解决方案

请尝试以下操作之一:

  • 尝试将规模集移到具有相同容量的同一区域中的其他群集。

    停止(解除分配)规模集中的所有 VM 实例,然后根据需要调整规模集的大小。 调整大小完成后,重启 VM 实例。 停止 VM 实例:

    1. Azure 门户中,搜索并选择虚拟机规模集

    2. 选择规模集的名称。

    3. 选择“停止” 。

    停止所有 VM 实例以执行重设大小,然后启动规模集后,新的分配尝试可以识别具有足够容量的群集来托管整个规模集。

  • 将规模集配置为跨多个放置组进行缩放。

    请参阅 “创建大型规模集”。

原因 2:重启部分停止(已解除分配)VM

部分解除分配意味着在规模集中停止了一个或多个 VM 实例,但并非全部停止。 解除分配 VM 实例时,将释放关联的资源。 在部分解除分配的可用性集中重启 VM 实例与将 VM 实例添加到现有可用性集相同。 因此,必须在托管现有可用性集的原始群集上尝试分配请求,该请求容量可能不足。

原因 2 的解决方案

停止(解除分配)规模集中的所有 VM 实例,然后重启每个 VM 实例。 停止 VM 实例:

  1. Azure 门户中,搜索并选择虚拟机规模集

  2. 选择规模集的名称。

  3. 在菜单窗格中,选择“ 实例”。

  4. 选择列出的所有虚拟机实例。

  5. 选择“停止” 。

所有 VM 停止后,选择第一个 VM 实例,然后选择“ 启动”。 Azure 进行新的分配尝试,并选择具有足够容量的新群集。

原因 3:已完全停止的重启 VM 实例

完全解除分配意味着已停止(已解除分配)可用性集中的所有 VM 实例。 重启这些 VM 实例的分配请求将面向支持区域或区域中所需大小的所有群集。

原因 3 的解决方案

使用本文中的建议更改分配请求。 然后重试请求以提高分配成功的可能性。

如果使用较旧的 VM 系列或大小(例如 Dv1、DSv1、Av1、D15v2 或 DS15v2),请考虑迁移到较新版本。 对特定的 VM 大小参阅以下建议。 是否不允许使用不同的 VM 大小? 然后,尝试部署到同一地理位置中的其他区域。 有关每个区域中可用的 VM 大小的详细信息,请访问 https://aka.ms/azureregions

如果使用可用性区域,请尝试区域中可能具有所请求 VM 大小的可用容量的另一个区域。

如果分配请求很大(超过 500 个核心),请参阅以下部分,将请求分解为较小的部署。

尝试 重新部署 VM 实例,该实例将 VM 实例分配给区域中的新群集。

较旧 VM 大小的分配失败

某些较旧的系列 VM 大小不会在我们的最新一代基础结构上运行。 客户有时可能会遇到这些旧 SKU 的分配失败。 我们鼓励使用旧系列虚拟机的客户考虑迁移到等效的新 VM。 较新的 VM 针对最新硬件进行优化,可让你利用更好的定价和性能。

请参阅以下建议:

旧版 VM 系列或大小 建议的较新的 VM 系列或大小 博客链接
Av1 系列 Av2 系列 新的 A_v2 系列 VM 大小
Dv1 或 DSv1 系列(D1 到 D5) Dv3 或 DSv3 系列 引入新的 Dv3 和 Ev3 VM 大小
Dv1 或 DSv1 系列(D11 到 D14) Ev3 或 ESv3 系列
D15v2 或 DS15v2

如果使用资源管理器部署模型来利用更大的 VM 大小,请考虑迁移到 D16v3/DS16v3 或 D32v3/DS32v3。 这些大小设计为在最新一代硬件上运行。

是否使用资源管理器部署模型来确保 VM 实例与专用于单个客户的硬件隔离? 然后考虑迁移到新的独立 VM 大小,E64i_v3或E64is_v3,这些大小设计为在最新一代硬件上运行。

新的独立 VM 大小现已可用

背景信息

分配的工作原理

Azure 平台尝试将数据中心服务器分区到群集中。 通常,它会尝试多个群集中的分配请求。 但是,来自分配请求的某些约束可能会强制 Azure 平台仅尝试在一个群集(“固定到群集”)中请求。 下图 1 显示了在多个群集(群集 1 到群集 n)中尝试的正常分配。 在图 2 中,分配固定到群集 2,因为该群集托管了现有的云服务(CS_1)或可用性集。

图 1:在多个群集中尝试了 Azure 平台分配。图 2:固定到一个群集的 Azure 平台分配。

发生分配失败的原因

如果分配请求固定到群集,则找不到可用资源的可能性更高,因为可用资源池较小。 如果将分配请求固定到不支持所请求资源类型的群集,该怎么办? 然后,即使群集具有可用资源,请求也会失败。 下图 3 显示了固定分配失败的位置,因为唯一的候选群集没有可用资源。 图 4 显示了固定分配失败的位置,因为唯一的候选群集不支持所请求的 VM 大小,即使群集具有可用资源。

分配失败的关系图是固定的群集。图 3 显示没有可用的免费资源。图 4 显示不支持大小。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区