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

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

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

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

orchestrationServices在 属性下,如果serviceState用于自动修复的 为 Running,则 VMSS 将选择加入自动修复。

serviceState如果 为 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
            }
        ]
}

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

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

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

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

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

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

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

实例处于宽限期

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

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

联系我们寻求帮助

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