即使启用了自动修复策略,也不会修复 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/failed
, statusesSummary
请删除失败的实例,并将新实例添加到规模集。 实例修复目前不支持由于预配失败而将虚拟机标记为“不正常”的方案。
若要从规模集中删除失败的实例,请参阅 从规模集中删除 VM。
若要向规模集添加新实例,请参阅 更改规模集的容量。
由于修复失败过多,规模集中已暂停自动修复
如果应用程序在重复修复尝试后继续发出“不正常”信号,平台最终将通过将自动修复更改为 serviceState
暂停实例修复 Suspended
作为安全措施。
serviceState
确认自动修复策略。 为此,请参阅 查看和更新自动实例修复策略的服务状态。
serviceState
Suspended
如果是,则通过使用 API 和 cmdlet 示例在查看和更新自动实例修复策略的服务状态中更新serviceState
回Running
setOrchestrationServiceState
来恢复自动修复。
实例处于宽限期
如果上述任何原因都不适用于此问题,则实例可能处于宽限期。
宽限期是执行修复之前,自动修复将在实例上发生任何状态更改后等待的时间,这有助于避免任何过早或意外的修复。 修复操作应在实例的宽限期完成后发生。 有关自动修复的宽限期设置的详细信息,请参阅 宽限期。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。