创建 VM、重启已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源。 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误。 本文说明一些常见分配故障的原因,并建议可能的补救方法。 计划服务的部署时,本信息可能也有用。 还可以用于排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配故障

如果本文未解决你的 Azure 问题,请访问 MSDN 和 CSDN 上的 CSDN Azure 论坛。 你可以在这些论坛上发布你的问题。 此外,还可以通过在 Azure 支持站点上选择“获取支持”来发出 Azure 支持请求。

常规故障排除步骤

对经典部署模型中的常见分配失败进行故障排除

这些步骤可帮助解决虚拟机中的许多分配失败:

  • 将 VM 重设为不同的 VM 大小。
    单击“浏览全部内容” > “虚拟机(经典)” > 你的虚拟机 >“设置” > “大小”****************。 有关详细步骤,请参阅调整虚拟机的大小
  • 从云服务删除所有 VM,然后重新创建 VM。
    单击“浏览全部内容” > “虚拟机(经典)”> 你的虚拟机 >“删除”************。 然后,单击“新建” > “计算”> [虚拟机映像]。

对 Azure Resource Manager 部署模型中的常见分配失败进行故障排除

这些步骤可帮助解决虚拟机中的许多分配失败:

  • 停止(解除分配)同一可用性集中的所有 VM,然后重启每个 VM。
    若要停止:单击“资源组”> 你的资源组 >“资源”> 你的可用性集 >“虚拟机”> 你的虚拟机 >“停止”****************。

    所有 VM 都停止后,选中第一个 VM 并单击“启动”。

背景信息

分配的工作原理

Azure 数据中心的服务器分区成群集。 通常会尝试向多个群集发出分配请求,但分配请求可能带有某些约束,从而强制 Azure 平台只尝试向一个群集发出请求。 在本文中,这种情况称为“固定到群集”。 下图 1 演示了在多个群集中尝试进行一般分配的情况。 图 2 演示了固定到群集 2(因为现有的云服务 CS_1 或可用性集托管于此处)的分配情况。 

发生分配失败的原因

当分配请求固定到某个群集时,由于可用的资源池较小,很可能找不到可用的资源。 此外,如果分配请求固定到某个群集,但该群集不支持你所请求的资源类型,那么,即使该群集有可用的资源,你的请求仍会失败。 下图 3 说明由于唯一候选群集没有可用的资源,导致已固定的分配失败的情况。 图 4 说明由于唯一候选群集不支持所请求的 VM 大小(虽然群集有可用的资源),导致已固定的分配失败的情况。

针对经典部署模型中的具体分配失败情况进行故障排除的步骤

以下是造成分配请求被固定的常见分配案例。 我们将在本文稍后深入探讨每一个案例。

  • 重设 VM 大小或向现有云服务添加 VM 或角色实例
  • 重启部分停止(已解除分配)的 VM
  • 重启完全停止(已解除分配)的 VM
  • 过渡/生产环境部署(仅适用于平台即服务)
  • 地缘组(VM/服务邻近性)
  • 基于地缘组的虚拟网络

发生分配错误时,请查看以下是否有任何案例符合你所处的情况。 使用 Azure 平台返回的分配错误来识别对应的案例。 如果你的请求已固定,请尝试删除一些固定约束,向更多群集展现你的请求,以增加分配成功的机会。

一般而言,只要错误不指示“不支持所请求的 VM 大小”,你永远都可以稍后再试,因为到时群集可能释放足够的资源来满足你的请求。 如果问题在于不支持所请求的 VM 大小,请尝试使用不同的 VM 大小。 否则,唯一的做法就是删除固定约束。

有两个常见的故障案例与地缘组有关。 在过去,地缘组用于支持 VM/服务实例的邻近性,或用于支持创建虚拟网络。 在引进区域虚拟网络之后,创建虚拟网络已不再需要地缘组。 由于 Azure 基础结构中的网络延迟时间缩短,原本建议使用地缘组来支持 VM/服务邻近性的情况已有所改变。

下图 5 显示(固定的)分配案例的分类。 

Note

每个分配案例中列出的错误均已缩略。 如需详细的错误字符串,请参阅错误字符串查找

分配案例:重设 VM 大小或向现有云服务添加 VM 或角色实例

错误

Upgrade_VMSizeNotSupported 或 GeneralError

群集固定的原因

必须在托管现有云服务的原始群集上,尝试请求重设 VM 大小或向现有云服务添加 VM 或角色实例。 创建新的云服务可让 Azure 平台寻找另一个有可用资源的群集,或另一个支持你所请求的 VM 大小的群集。

解决方法

如果错误是 Upgrade_VMSizeNotSupported*,请尝试使用不同的 VM 大小。 如果使用不同的 VM 大小不可行,但可接受使用不同的虚拟 IP 地址 (VIP),则创建新的云服务来托管新的 VM,并将新的云服务添加到运行现有 VM 的区域虚拟网络中。 如果现有的云服务未使用区域虚拟网络,你仍然可以为新的云服务创建新的虚拟网络,然后 将现有虚拟网络连接到新的虚拟网络。 请参阅有关 区域虚拟网络的详细信息。

如果错误是 GeneralError*,很可能是因为群集虽然支持资源的类型(例如特定的 VM 大小),但群集目前没有可用的资源。 类似上述,通过创建新的云服务(请注意,新的云服务必须使用不同的 VIP)添加所需的计算资源,并使用区域虚拟网络连接云服务。

分配案例:重启部分停止(已解除分配)的 VM

错误

GeneralError*

群集固定的原因

部分解除分配表示已停止(解除分配)云服务中的一或多个 VM,但不是全部。 停止(解除分配)VM 时会释放相关联的资源。 因此,重启已停止(解除分配)的 VM 是一项新的分配请求。 重新启动已部分解除分配的云服务中的 VM 相当于向现有云服务添加 VM。 必须在托管现有云服务的原始群集上尝试发出分配请求。 创建不同的云服务可让 Azure 平台寻找另一个有可用资源的群集,或另一个支持你所请求的 VM 大小的群集。

解决方法

如果可接受使用不同的 VIP,请删除已停止(解除分配)的 VM(但保留相关联的磁盘),并通过不同的云服务加回 VM。 使用区域虚拟网络连接你的云服务:

  • 如果现有的云服务使用区域虚拟网络,只要将新的云服务添加到相同的虚拟网络即可。
  • 如果现有的云服务未使用区域虚拟网络,请为新的云服务创建新的虚拟网络,然后 将现有虚拟网络连接到新的虚拟网络。 请参阅有关 区域虚拟网络的详细信息。

分配案例:重启完全停止(已解除分配)的 VM

错误

GeneralError*

群集固定的原因

完全解除分配表示已从云服务停止(解除分配)所有 VM。 必须在托管云服务的原始群集上尝试发出分配请求来重新启动这些 VM。 创建新的云服务可让 Azure 平台寻找另一个有可用资源的群集,或另一个支持你所请求的 VM 大小的群集。

解决方法

如果可接受使用不同的 VIP,请删除已停止(解除分配)的原始 VM(但保留相关联的磁盘),并删除对应的云服务(停止(解除分配)VM 时就已释放相关联的计算资源)。 创建新的云服务来加回 VM。

分配案例:过渡/生产环境部署(仅适用于平台即服务)

错误

New_General* 或 New_VMSizeNotSupported*

群集固定的原因

云服务的过渡环境部署和生产环境部署托管于同一个群集中。 添加第二个部署时,将会在托管第一个部署的相同群集中尝试发出对应的分配请求。

解决方法

删除第一个部署和原始的云服务,然后重新部署云服务。 此操作可能将第一个部署安排到有足够可用资源可满足这两个部署的群集,或安排到支持所请求 VM 大小的群集。

分配案例:地缘组(VM/服务邻近性)

错误

New_General* 或 New_VMSizeNotSupported*

群集固定的原因

任何分配给地缘组的计算资源都绑定到一个群集。 该地缘组中新的计算资源请求将于托管现有资源的相同群集中尝试发出。 无论是通过新的云服务还是现有的云服务创建新资源,都是如此。

解决方法

如果不一定需要地缘组,请不要使用地缘组或尝试将计算资源分组为多个地缘组。

分配案例:基于地缘组的虚拟网络

错误

New_General* 或 New_VMSizeNotSupported*

群集固定的原因

在引入区域虚拟网络之前,必须先将虚拟网络与地缘组进行关联。 这样,便会根据上一部分“分配案例:地缘组(VM/服务邻近性)”中所述的相同约束,绑定已放入地缘组中的计算资源。 计算资源已绑定到一个群集。

解决方法

如果不需要地缘组,请为要添加的新资源创建新的区域虚拟网络,然后 将现有虚拟网络连接到新的虚拟网络。 请参阅有关 区域虚拟网络的详细信息。

此外,你也可以 将基于地缘组的虚拟网络迁移到区域虚拟网络,然后重新添加所需的资源。

针对 Azure Resource Manager 部署模型中的具体分配失败情况进行故障排除的步骤

以下是造成分配请求被固定的常见分配案例。 我们将在本文稍后深入探讨每一个案例。

  • 重设 VM 大小或向现有云服务添加 VM 或角色实例
  • 重启部分停止(已解除分配)的 VM
  • 重启完全停止(已解除分配)的 VM

发生分配错误时,请查看以下是否有任何案例符合你所处的情况。 使用 Azure 平台返回的分配错误来识别对应的案例。 如果你的请求已固定到现有的群集,请删除一些固定约束,向更多群集展现你的请求,以增加分配成功的机会。

一般而言,只要错误不指示“不支持所请求的 VM 大小”,你永远都可以稍后再试,因为到时群集可能释放足够的资源来满足你的请求。 如果问题在于不支持所请求的 VM 大小,请参阅下面的解决方法。

分配案例:重设 VM 大小或向现有可用性集添加 VM

错误

Upgrade_VMSizeNotSupported* 或 GeneralError*

群集固定的原因

必须在托管现有可用性集的原始群集上,尝试请求重设 VM 大小或向现有可用性集添加 VM。 创建新的可用性集可让 Azure 平台寻找另一个有可用资源的群集,或另一个支持你所请求的 VM 大小的群集。

解决方法

如果错误是 Upgrade_VMSizeNotSupported*,请尝试使用不同的 VM 大小。 如果使用不同的 VM 大小不可行,请停止可用性集中的所有 VM。 然后,你可以更改虚拟机的大小,将 VM 分配到支持所需 VM 大小的群集。

如果错误是 GeneralError*,很可能是因为群集虽然支持资源的类型(例如特定的 VM 大小),但群集目前没有可用的资源。 如果 VM 可以属于不同的可用性集,请在(位于相同区域的)不同的可用性集中创建新的 VM。 然后,可以将这个新的 VM 添加到相同的虚拟网络中。

分配案例:重启部分停止(已解除分配)的 VM

错误

GeneralError*

群集固定的原因

部分解除分配表示已停止(解除分配)可用性集中的一或多个(但不是全部)VM。 停止(解除分配)VM 时会释放相关联的资源。 因此,重启已停止(解除分配)的 VM 是一项新的分配请求。 重新启动已部分解除分配的可用性集相当于向现有可用性集添加 VM。 必须在托管现有可用性集的原始群集上尝试发出分配请求。

解决方法

停止可用性集中的所有 VM,再重新启动第一个 VM。 这可确保运行新的分配尝试,而且可以选择有可用容量的新群集。

分配案例:重启完全停止(已解除分配)的 VM

错误

GeneralError*

群集固定的原因

完全解除分配表示已停止(解除分配)可用性集中的所有 VM。 发出分配请求来重新启动这些 VM 时,将会以支持所需大小的所有群集为目标。

解决方法

选择要分配的新 VM 大小。 如果这不起作用,请稍后重试。

错误字符串查找

New_VMSizeNotSupported*

“由于部署请求约束,无法预配此部署所需的 VM 大小(或 VM 大小的组合)。 可能的话,请尝试放宽约束(例如虚拟网络绑定)、部署到不具有其他部署的托管服务及不同的地缘组(或不具有地缘组的托管服务),或尝试部署到不同的区域。”

New_General*

“分配失败;无法满足请求中的约束。 请求的新服务部署绑定至地缘组,或以虚拟网络为目标,或此托管服务下已经有部署。 上述任一情况都会将新的部署局限于特定的 Azure 资源。 请稍后重试,或尝试减少 VM 大小或角色实例数目。 或者,可能的话,删除先前提到的约束,或尝试部署到不同的区域。”

Upgrade_VMSizeNotSupported*

“无法升级部署。 在支持现有部署的资源中,可能没有所请求的 VM 大小 XXX。 请稍后再试,尝试使用不同的 VM 大小或较少数量的角色实例,或在空的托管服务下通过创建新的地缘组或没有地缘组绑定来创建部署。”

GeneralError*

“服务器遇到内部错误。 请重试请求。” 或者“无法为服务生成分配。”

排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障的更多相关文章

  1. 排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配失败

    创建 VM.重新启动已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配 ...

  2. 排查在 Azure 中创建新 Linux 虚拟机时遇到的 Resource Manager 部署问题

    本文内容 常见问题 收集活动日志 问题:自定义映像:预配错误 问题:自定义/库/应用商店映像:分配失败 后续步骤 尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. ...

  3. 排查在 Azure 中新建 Windows VM 时遇到的部署问题

    尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. 当由于准备步骤不当,或者在从门户捕获映像期间选择了错误的设置而导致 OS 映像无法加载时,将发生预配失败. 当群集 ...

  4. 排查在 Azure 中新建 Windows 虚拟机时遇到的经典部署问题

    尝试创建新的 Azure 虚拟机 (VM) 时,遇到的常见错误是预配失败或分配失败. 当由于准备步骤不当,或者在从门户捕获映像期间选择了错误的设置而导致 OS 映像无法加载时,将发生预配失败. 当群集 ...

  5. 对连接到 Azure 中 Linux VM 时出现的问题进行详细的 SSH 故障排除的步骤

    有许多可能的原因会导致 SSH 客户端无法访问 VM 上的 SSH 服务. 如果已经执行了较常规的 SSH 故障排除步骤,则需要进一步排查连接问题. 本文指导用户完成详细的故障排除步骤,以确定 SSH ...

  6. 上传通用化 VHD 并使用它在 Azure 中创建新 VM

    本主题逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure.从该 VHD 创建映像,然后从该映像创建新 VM. 可以上传从本地虚拟化工具或其他云导出的 VHD. 对新 ...

  7. 如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像

    Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许 ...

  8. 在 Azure 中创建通用 VM 的托管映像

    可以从在存储帐户中存储为托管磁盘或非托管磁盘的通用 VM 中创建托管映像资源. 然后可以使用该映像创建多个 VM. 使用 Sysprep 通用化 Windows VM Sysprep 将删除所有个人帐 ...

  9. 【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)

    问题描述 如何把开启NFS协议的Azure Blob挂载到Linux虚拟机中呢? [答案]:可以使用 NFS 3.0 协议从基于 Linux 的 Azure 虚拟机 (VM) 或在本地运行的 Linu ...

随机推荐

  1. uvm_cmdline_processor

    无意中看到uvm_cmdline_processor,之前使用+UVM_TESTNAME也没深究,现在记录一下 内部调用脚本中的参数,通过使用uvm_cmdline_processor可以从脚本层级, ...

  2. kafka producer自定义partitioner和consumer多线程

    为了更好的实现负载均衡和消息的顺序性,Kafka Producer可以通过分发策略发送给指定的Partition.Kafka Java客户端有默认的Partitioner,平均的向目标topic的各个 ...

  3. Python+Selenium(webdriver常用API)

    总结了Python+selenium常用的一些方法函数,以后有新增再随时更新: 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口:  ...

  4. Http请求响应模型

    主要用到以下四个部分: Client   API   DB   API 场景:登录 1.Client发起请求到API接口层 1.1用户在客户端输入登录信息,点击登录,发送请求 2.API接受用户发起的 ...

  5. mac 下安装 mit-scheme

    这两天心血来潮想看一下 SICP 和 Lisp,准备先看 SICP ,之后再学 Haskell, 深入学习一下函数式编程. 所以得装个 mit-scheme 做练习. 尝试了 3 种方式, 前 2 种 ...

  6. springmvc的json数据交互

    准备 @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json ...

  7. D3介绍

    D3介绍 D3是用来做web页面可视化的组件,其官方网址为http://d3js.org 安装 D3类库的文件只有一个d3.js.下载后直接在html的<script>标签中引用此js就可 ...

  8. Scrapy框架学习(二)Scrapy入门

    接下来以爬取quote.toscrape.com为例完成一遍Scrapy的抓取流程. 首先创建一个Scrapy项目.打开命令行,输入以下命令: scrapy startproject projectn ...

  9. [转]Entity Framework Fluent API - Configuring and Mapping Properties and Types

    本文转自:https://msdn.microsoft.com/en-us/data/jj591617#1.2 When working with Entity Framework Code Firs ...

  10. java gc 随记

    gc为garbage collection的缩写,中文翻译为垃圾回收.垃圾为不在使用的实例.变量,回收为释放垃圾所占用的内存空间. 学习过的C语言.C++语言,是没有垃圾回收机制的,因此需要软件工程师 ...