即使启用了自动修复策略,也不会修复 Azure 虚拟机规模集实例

即使启用了自动修复策略,Azure VMSS 实例仍处于“不正常”状态,也不会修复。 本文提供了此问题的可能原因和相应的解决方案:

规模集中未正确启用自动修复策略

通过 查看 VMSS 的服务状态确认已选择自动修复。

orchestrationServices 属性下,如果 serviceState 自动修复是 Running,则 VMSS 选择自动修复。

serviceState如果 is NotRunning 或自动修复策略未显示在属性下orchestrationServices,则必须在规模集中启用自动修复策略。 有关详细信息,请参阅 更新现有规模集时启用自动修复策略。

serviceState Suspended如果是,请转到规模集中的自动修复由于修复失败过多而暂停。

在规模集中未正确配置运行状况监视

如果规模集中的所有实例显示为“不正常”,则可能表示运行状况监视探测在安装过程中未正确配置。 确保应用程序向配置的终结点发出预期的 HTTP/HTTPS/TCP 响应。

为了达到“正常”状态,应用程序运行状况扩展探测或负载均衡器运行状况探测至少需要 2xx HTTP(S) 响应,或者从配置的终结点的应用程序成功握手。 如果未收到预期的响应,将报告“不正常”状态。 确保应用程序向提供的终结点发出正确的运行状况信号。

有关负载均衡器运行状况探测的预期 TCP/HTTP(S) 响应的详细信息,请参阅负载均衡器自定义探测

有关应用程序运行状况扩展探测的预期 TCP/HTTP(S) 响应的详细信息,请参阅“配置终结点以提供运行状况”部分( 要求使用自动实例修复)。

由于预配失败,实例标记为不正常

对 VMSS 使用 API 版本 2019-12-01 或更高版本的“获取实例视图”,以便从virtualMachine属性中statusesSummary查看实例的预配状态。

REST API

GET '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2019-12-01'
"virtualMachine": {
        "statusesSummary": [
            {
                "code": "ProvisioningState/succeeded",
                "count": 2
            }
        ]
}

如果有代码 ProvisioningState/failedstatusesSummary请删除失败的实例,并将新实例添加到规模集。 实例修复目前不支持由于预配失败而将虚拟机标记为“不正常”的方案。

若要从规模集中删除失败的实例,请参阅 从规模集中删除 VM。

若要向规模集添加新实例,请参阅 更改规模集的容量。

由于修复失败过多,规模集中已暂停自动修复

如果应用程序在重复修复尝试后继续发出“不正常”信号,平台最终将通过将自动修复更改为 serviceState 暂停实例修复 Suspended作为安全措施。

serviceState确认自动修复策略。 为此,请参阅 查看和更新自动实例修复策略的服务状态。

serviceState Suspended如果是,则通过使用 API 和 cmdlet 示例在查看和更新自动实例修复策略的服务状态中更新serviceStateRunningsetOrchestrationServiceState来恢复自动修复。

实例处于宽限期

如果上述任何原因都不适用于此问题,则实例可能处于宽限期。

宽限期是执行修复之前,自动修复将在实例上发生任何状态更改后等待的时间,这有助于避免任何过早或意外的修复。 修复操作应在实例的宽限期完成后发生。 有关自动修复的宽限期设置的详细信息,请参阅 宽限期

联系我们寻求帮助

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