在虚拟机规模集上启用自动区域均衡(预览版)

本指南提供有关在虚拟机规模集上启用自动区域平衡的说明。

重要

虚拟机规模集的自动区域均衡功能目前处于预览阶段。 您同意补充使用条款后,预览可供您使用。 此功能的一些方面可能会在正式上线之前发生变化。

先决条件

在规模集上启用自动区域平衡之前,请确保满足以下先决条件:

为虚拟机规模集启用应用程序运行状况监视

规模集必须启用应用健康监控才能使用自动区域平衡。 可以使用 Application Health Extension 或 负载均衡器 Health Probes 进行运行状况监视,一次只能启用一个。

应用程序健康状态用于确保在重新平衡过程中创建的新虚拟机(VM)是成功且“健康”的,然后再删除原始虚拟机。

配置具有至少两个可用区的规模集

虚拟机规模集必须跨区域,且至少配置了两个 可用性区域 。 规模集中的所有 VM 都必须分配给可用性区域。 包含区域(非区域)VM 的规模集不符合自动区域平衡的条件。 这可确保 VM 可以分布在多个区域,以便实现复原。

使用受支持的计算 API 版本

计算 API 版本 2024-07-01 或更高版本支持自动区域平衡。

向 AFEC 注册订阅

订阅必须注册到 Azure 功能曝光控制 (AFEC) 标志Microsoft.Compute.AutomaticZoneRebalancing。 需要此注册才能为订阅启用自动区域平衡功能。

  1. 登录到 Azure portal。

  2. 在搜索框中,输入“订阅”,然后选择“订阅”。

  3. 选择订阅名称的链接。

  4. 从左侧菜单的“设置”下,选择“预览功能”。

  5. 筛选出 AutomaticVMSSZoneRebalancing 并选择它。

  6. 选择注册。 Azure门户的屏幕截图,其中显示了自动区域均衡预览标志的“注册”按钮。

  7. 选择“确定”。

在规模集上启用自动区域平衡

按照步骤在新的或现有的虚拟机规模集上启用自动区域平衡。

将 resiliencyPolicy 具有以下参数的属性添加到规模集模型。 使用 API 版本 2024-07-01 或更高版本。

PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2024-07-01'
"properties": {
    "resiliencyPolicy": {
      "AutomaticZoneRebalancingPolicy": {
        "Enabled": true,
        "RebalanceStrategy": "Recreate",
        "RebalanceBehavior": "CreateBeforeDelete"
      }
    }
}

在没有实例修复的情况下启用自动区域平衡

默认情况下,启用自动区域平衡还允许 自动实例修复 为规模集提供高可用性。 如果想要在没有自动实例修复的情况下使用自动区域平衡,可以单独禁用实例修复。

注释

禁用自动实例修复意味着您的扩展组仅能受益于区域级复原,而不是实例级的健康监测和修复。

以下示例演示如何在创建新的虚拟机规模集时启用自动区域平衡时禁用自动实例修复。 有关详细信息,请参阅 az vmss create 和 az vmss update。

# Step 1: Create VMSS with zones configured
az vmss create \
    --resource-group myResourceGroup \
    --name myVMScaleSet \
    --location chinanorth2 \
    --vm-sku Standard_D2s_v3 \
    --instance-count 3 \
    --zones 1 2 3 \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

# Step 2: Add Application Health extension (required for automatic zone balance)
az vmss extension set \
    --resource-group myResourceGroup \
    --vmss-name myVMScaleSet \
    --name ApplicationHealthLinux \
    --publisher Microsoft.ManagedServices \
    --version 2.0 \
    --settings '{"protocol": "http", "port": 80, "requestPath": "/healthEndpoint"}'

# Step 3: Upgrade instances to install the extension
az vmss update-instances \
    --resource-group myResourceGroup \
    --name myVMScaleSet \
    --instance-ids "*"

# Step 4: Enable automatic zone balance and disable automatic instance repairs
az vmss update \
    --resource-group myResourceGroup \
    --name myVMScaleSet \
    --enable-automatic-zone-balancing true \
    --automatic-zone-balancing-behavior CreateBeforeDelete \
    --automatic-zone-balancing-strategy Recreate \
    --enable-auto-repairs false

常见问题

如何监视在我的规模集中的自动区域平衡操作?

查看 Azure Monitor 活动日志中的重新平衡操作:

可以通过 Azure Monitor 活动日志监视自动区域均衡操作。 每次重新均衡作都会生成活动日志条目,这些条目显示在重新均衡过程中创建和删除 VM 的时间。

  1. 在Azure portal中,导航到虚拟机规模集。
  2. 从左侧菜单中选择 活动日志 。
  3. 对名称为 BalanceVMsAcrossZones 或 Microsoft.Compute/virtualMachineScaleSets/rebalanceVmsAcrossZones/action 的操作进行筛选。

有关Azure监视活动日志的详细信息,请参阅 Azure Monitor 活动日志。

查看编排服务状态(仅限 VMSS 统一):

对于使用统一编排模式的虚拟机规模集,还可以使用 Get 实例视图 API 检查自动区域平衡编排服务状态。

GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmssName}/instanceView?api-version=2025-04-01

响应包括具有自动区域平衡状态的 orchestrationServices 数组:

"orchestrationServices": [
  {
    "serviceName": "AutomaticZoneRebalancing",
    "serviceState": "Running",
    "latestOperationStatus": "InProgress / Completed",
    "lastStatusChangeTime": ""
  }
]

该lastStatusChangeTime字段指示上次更改状态的时间,帮助你跟踪重新平衡操作何时发生。

如何判断我的规模集是否启用了自动区域平衡?

可以检查规模集配置中的 resiliencyPolicy 属性。 如果 AutomaticZoneRebalancingPolicy.Enabled 设置为 true,则启用自动区域平衡。

我的规模集为何不平衡?

仅当规模集中的 VM 在可用性区域之间不平衡并且满足所有 safety 条件时,自动区域均衡才会运行。

重新均衡还取决于可用容量-如果预配不足区域中没有足够的容量,自动区域平衡无法创建新的 VM,重新平衡作不会启动。

自动区域平衡运行的频率如何?

自动区域平衡功能会持续检查你的虚拟机规模集是否存在区域不平衡。 当检测到不平衡并且有机会重新平衡时,在所有安全条件都满足且欠配置区域中有可用容量的情况下,重新平衡操作会立即启动。

内置的重新平衡操作冷却期确保了对缩放集的更改是逐步且可控的。

如果订阅在重新均衡期间没有足够的配额来创建新 VM,会发生什么情况?

如果没有足够的配额来创建新的虚拟机,则重新平衡操作不会继续。 需要增加配额,以便重新平衡。

是否可以控制从重新均衡中排除哪些 VM?

是的。 可以将 实例保护策略 应用于特定 VM,以防止选择它们进行重新均衡。

后续步骤