你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将可用性集中虚拟机附加的所有公网 IP 地址从基本 SKU 升级到标准 SKU

重要说明

2025 年 9 月 30 日,基本 SKU 公共 IP 已停用。 有关详细信息,请查看官方公告。 如果当前使用的是基本 SKU 公共 IP,请确保尽快升级到标准 SKU 公共 IP。 本文将引导你完成升级过程。

要详细了解基本 SKU 公共 IP 的停用情况和标准 SKU 公共 IP 的优势,请查看此处

升级概述

此脚本会将可用性集中虚拟机 (VM) 附加的所有公网 IP 地址从基本 SKU 升级到标准 SKU。 为执行升级,需先将公网 IP 地址分配方法设置为静态,然后再与每个虚拟机解除关联。 解除关联后,将公网 IP SKU 升级到标准 SKU,然后将该 IP 重新与原始虚拟机关联,直到所有 IP 都完成升级。

由于公共 IP 分配在从 VM 分离之前设置为“静态”,因此在升级过程中 IP 地址不会更改,即使脚本失败也是如此。 该模块在从虚拟机分离公网 IP 之前,会再次检查公网 IP 分配方法是否为“静态”。

模块将所有升级活动记录到名为 AvSetPublicIPUpgrade.log 的文件中,该文件是在执行模块的位置创建的(默认情况下)。

约束/不支持的方案

  • 网络接口关联到负载均衡器的 VM:由于虚拟机关联的负载均衡器和公网 IP SKU 必须匹配,因此当虚拟机的网络接口还通过后端池或 NAT 池成员身份关联到负载均衡器时,无法升级与该虚拟机关联的实例级公网 IP 地址。 使用脚本将基本负载均衡器升级到标准 SKU 同时升级负载均衡器和公共 IP。

  • 无网络安全组的 VM:待升级 IP 所属的虚拟机必须具有网络安全组 (NSG),该 NSG 要么与每个带公网 IP 的 IP 配置的子网关联,要么直接与网络接口 (NIC) 关联。 这是因为标准 SKU 公网 IP 默认为“安全”,即必须在 NSG 中明确允许指向该公网 IP 的任何流量才能到达 VM。 默认情况下,基本 SKU 公共 IP 允许任何流量。 如果没有 NSG 就升级公网 IP SKU,会导致之前基本 SKU 允许的指向该公网 IP 的入站互联网流量被阻断。 请参阅:公共 IP SKU

下载脚本

PowerShell 库下载迁移脚本。

Install-Module -Name AzureAvSetBasicPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force

使用模块

  1. 使用 Connect-AzAccount 连接到所需的 Microsoft Entra 租户和 Azure 订阅

    PS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
    
  2. 使用 Select-AzSubscription 选择可用性集所在的 Azure 订阅

    Select-AzSubscription -Subscription <SubscriptionId>
    
  3. 找到附加了要升级的基本公网 IP 的可用性集。 记下其名称和资源组名称。

  4. 检查模块参数:

    • AvailabilitySetName [字符串] 必需 - 此参数是你的可用性集名称。
    • ResourceGroupName [字符串] 必需 - 此参数是附加了要升级的基本公网 IP 的可用性集所属的资源组。
  5. 运行升级,可参考以下示例或 Get-Help Start-AzAvSetPublicIPUpgrade

脚本的示例用法

升级单个可用性集中的 VM,将可用性集名称和资源组名称作为参数传入。

Start-AzAvSetPublicIPUpgrade -availabilitySetName 'myAvSet' -resourceGroupName 'myRG'

评估单个可用性集中的 VM,不执行任何更改

Start-AzAvSetPublicIPUpgrade -availabilitySetName 'myAvSet' -resourceGroupName 'myRG' -WhatIf

尝试升级用户有权访问的所有可用性集中的 VM。 没有公共 IP 的 VM、已经升级的 VM 或没有 NSG 的 VM 将被跳过。

Get-AzAvailabilitySet -resourceGroupName 'myRG' | Start-AzAvSetPublicIPUpgrade -skipVMMissingNSG

从失败的迁移中恢复,传入要恢复的可用性集的名称和资源组以及恢复日志文件。

Start-AzAvSetPublicIPUpgrade -RecoverFromFile ./AvSetPublicIPUpgrade_Recovery_2020-01-01-00-00.csv -AvailabilitySetName myAvSet -ResourceGroup rg-myrg

从失败的迁移中恢复

如果迁移因暂时性问题(如网络中断或客户端系统问题)而失败,可以重试迁移,将 VM 和公网 IP 配置到目标状态。 在执行时,脚本会输出恢复日志文件,用于确保正确重新配置 VM。 查看在执行脚本的位置创建的日志文件 AvSetPublicIPUpgrade.log

要从失败的升级中恢复,请将恢复日志文件路径通过 -recoverFromFile 参数传入脚本,并通过 -AvailabilitySetName 参数指定要恢复的可用性集,如下例所示。

Start-AzAvSetPublicIPUpgrade -RecoverFromFile ./AvSetPublicIPUpgrade_Recovery_2020-01-01-00-00.csv -AvailabilitySetName myAvSet -ResourceGroupName rg-myrg

常见问题

迁移需要多长时间?VM 在其公共 IP 上有多长时间无法访问?

升级 VM 的公共 IP 所需的时间取决于与该 VM 关联的公共 IP 和网络接口的数量。 在测试中,具有单个 NIC 和公共 IP 的 VM 需要 1 到 2 分钟的时间来升级。 VM 上的每个 NIC 会使升级时间额外增加大约一分钟,每个公共 IP 使时间增加几秒。

是否可回滚到基本 SKU 公共 IP?

无法将公共 IP 地址从“标准”降级为“基本”。

是否可以在执行之前测试迁移?

如果没有完成操作,无法评估公共 IP 的升级情况。 不过,此脚本包含 -WhatIf 参数,该参数会检查你的可用性集虚拟机是否支持升级,并逐步演示步骤但不执行操作。

脚本是否支持区域基本 SKU 公共 IP?

是,将区域基本 SKU 公共 IP 升级到区域标准 SKU 公共 IP 的过程是相同的,适用于脚本。

Next steps