排查在 Azure 中创建 VM 或调整其大小时分配失败的问题

创建虚拟机 (VM) 、启动已停止 (已解除分配) VM 或调整 VM 大小时,Microsoft Azure 会将计算资源分配给订阅。 我们不断投资于其他基础结构和功能,以确保我们始终提供所有 VM 类型来支持客户需求。 但是,由于特定区域中对 Azure 服务的需求空前增长,有时可能会遇到资源分配失败。 尝试在区域中创建或启动 VM 时,VM 显示以下错误代码和消息时,可能会出现此问题:

错误代码:AllocationFailed 或 ZonalAllocationFailed

错误消息:“分配失败。 此区域中请求的 VM 大小没有足够的容量。 在 中详细了解如何提高分配成功 https://aka.ms/allocation-guidance"的可能性;

注意

如果要对虚拟机规模集进行故障排除, (VMSS) ,此过程与标准 VM 相同。 若要解决此问题,应按照本文中的说明进行操作。

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

本文介绍了一些常见分配失败的原因,并提出了可能的补救措施。

如果本文未解决 Azure 问题,请访问 有关 Q&A 和 Stack Overflow 的 Azure 论坛。 你可以在这些论坛上或 @AzureSupport Twitter 上发布你的问题。 此外,还可以通过在Azure 支持网站上选择“获取支持”来提交Azure 支持请求。

在首选区域中提供首选 VM 类型之前,我们建议遇到部署问题的客户考虑下表中的指导作为临时解决方法。

确定最符合案例的方案,然后使用相应的建议解决方法重试分配请求,以提高分配成功的可能性。 或者,以后始终可以重试。 这是因为群集、区域或区域中可能已释放足够的资源来满足请求。

调整 VM 大小或将 VM 添加到现有可用性集

原因

必须在托管现有可用性集的原始群集上尝试重设 VM 大小或将 VM 添加到现有可用性集的请求。 群集支持请求的 VM 大小,但群集当前可能没有足够的容量。

解决方法

如果 VM 可以是不同可用性集的一部分,请在同一区域) 的不同可用性集中 (创建 VM。 然后,可以将此新 VM 添加到同一虚拟网络。

停止 (解除分配) 同一可用性集中的所有 VM,然后批量启动所有适用的 VM。 若要停止:单击“资源组>[资源组] > 资源 > [可用性集] > 虚拟机 > [虚拟机] > 停止”。 所有 VM 停止后,导航到 “主>虚拟机”,添加 可用性集 筛选器,然后选择“ 按可用性集分组”。 选择所有适用的 VM,然后单击 “启动”。 此步骤可确保运行新的分配尝试,并且可以选择具有足够容量的新群集。

启动部分停止 (已解除分配) VM

原因

部分解除分配意味着已停止 (解除分配) 可用性集中的一个或多个 VM,但不是全部 VM。 解除分配 VM 时,会释放关联的资源。 在部分解除分配的可用性集中启动 VM 与将 VM 添加到现有可用性集相同。 因此,必须在托管可能没有足够的容量的现有可用性集的原始群集上尝试分配请求。

解决方法

停止 (解除分配) 同一可用性集中的所有 VM,然后批量启动所有适用的 VM。 若要停止:单击“资源组>[资源组] > 资源 > [可用性集] > 虚拟机 > [虚拟机] > 停止”。 所有 VM 停止后,导航到 “主>虚拟机”,添加 可用性集 筛选器,然后选择“ 按可用性集分组”。 选择所有适用的 VM,然后单击 “启动”。 这将确保运行新的分配尝试,并且可以选择具有足够容量的新群集。

已完全停止启动 (已解除分配) VM

原因

完全解除分配意味着已停止 (解除分配) 可用性集中的所有 VM。 启动这些 VM 的分配请求将面向区域或区域中支持所需大小的所有群集。 根据本文中的建议更改分配请求,然后重试请求以提高分配成功的机会。

解决方法

如果使用较旧的 VM 系列或大小(如 Dv1、DSv1、Av1、D15v2 或 DS15v2),请考虑迁移到较新版本。 有关特定 VM 大小,请参阅这些建议。 如果没有选择使用不同的 VM 大小,请尝试部署到同一地理位置中的不同区域。 有关每个区域中可用 VM 大小的详细信息,请参阅 https://aka.ms/azure-regions

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

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

较旧 VM 大小的分配失败 (Av1、Dv1、DSv1、D15v2、DS15v2 等 )

随着我们扩展 Azure 基础结构,我们将部署新一代硬件,该硬件旨在支持最新的虚拟机类型。 某些较旧的系列 VM 不在最新一代基础结构上运行。 因此,客户偶尔可能会遇到这些旧版 SKU 的分配失败。 为避免此问题,我们鼓励使用旧系列虚拟机的客户考虑按照以下建议迁移到等效的新 VM:这些 VM 针对最新硬件进行优化,可让你利用更好的定价和性能。

旧 VM 系列/大小 建议的较新的 VM 系列/大小 更多信息
Av1 系列 Av2 系列 https://azure.microsoft.com/blog/new-av2-series-vm-sizes/
Dv1 或 DSv1 系列 (D1 到 D5) Dv3 或 DSv3 系列 https://azure.microsoft.com/blog/introducing-the-new-dv3-and-ev3-vm-sizes/
Dv1 或 DSv1 系列 (D11 到 D14) Ev3 或 ESv3 系列
D15v2 或 DS15v2 如果使用Resource Manager 部署模型来利用更大的 VM 大小,请考虑迁移到 D16v3/DS16v3 或 D32v3/DS32v3。 它们设计为在最新一代硬件上运行。 如果使用资源管理器部署模型来确保 VM 实例与专用于单个客户的硬件隔离,请考虑迁移到设计为在最新一代硬件上运行的新独立 VM 大小(E64i_v3或E64is_v3)。 https://azure.microsoft.com/blog/new-isolated-vm-sizes-now-available/

(超过 500 个核心) 的大型部署的分配失败

减少所请求 VM 大小的实例数,然后重试部署操作。 此外,对于较大的部署,可能需要评估具有多个放置组的 Azure 虚拟机规模集 。 VM 实例的数量可以根据需求或定义的计划自动增加或减少,并且分配成功的可能性更大,因为在部署为多位置组时,部署可以分散到多个群集。 详细了解如何使用 大型虚拟机规模集 以及如何 将现有规模集转换为跨多个放置组。 请注意,可以将规模集从支持单个放置组更改为支持多个放置组,但不能在其他方向执行转换。

背景信息

分配的工作原理

Azure 数据中心中的服务器分区为群集。 通常,在多个群集中尝试分配请求,但分配请求中的某些约束可能会强制 Azure 平台仅在一个群集中尝试该请求。 在本文中,我们将这称为“固定到群集”。下图 1 说明了在多个群集中尝试进行正常分配的情况。 图 2 说明了固定到群集 2 的分配情况,因为该分配是托管现有云服务CS_1或可用性集的位置。 图 1 显示了在多个群集中尝试的分配,关系图 2 显示了固定到一个群集的分配。

分配失败的原因

将分配请求固定到群集时,无法找到可用资源的可能性更大,因为可用资源池较小。 此外,如果分配请求已固定到群集,但该群集不支持所请求的资源类型,则即使群集具有可用资源,请求也会失败。 下图 3 说明了固定分配失败的情况,因为唯一的候选群集没有可用资源。 图 4 说明了固定分配失败的情况,因为唯一的候选群集不支持请求的 VM 大小,即使群集具有可用资源也是如此。

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

联系我们寻求帮助

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