使用 Azure PowerShell 将 Azure 虚拟网络从经典部署模型迁移到资源管理器部署模型

本文将介绍如何从经典部署模型迁移到较新的资源管理器部署模型。

从经典部署模型到资源管理器部署模型的迁移是一次一个虚拟网络来完成的。 对于迁移,除了 Azure PowerShell 要求外,没有其他对工具或先决条件的要求。 迁移是虚拟网络资源的控制平面迁移。 迁移期间没有数据路径停机时间。 在迁移期间,现有工作负载将继续运行,而不会丢失连接。 与虚拟网络关联的任何公共 IP 地址在迁移过程中都不会更改。

迁移完成后,必须使用资源管理器模型执行所有管理操作。 只能通过资源管理器部署模型访问管理操作。 子网或虚拟网络资源更改将不再通过旧部署模型提供。

将虚拟网络从经典模型迁移到资源管理器模型时,虚拟网络中支持的资源会自动迁移到新模型。

先决条件

  • 具有活动订阅的 Azure 帐户。 创建一个试用帐户
  • 本文中的步骤和示例使用 Azure PowerShell Az 模块。 若要在计算机上本地安装 Az 模块,请参阅安装 Azure PowerShell。 若要详细了解新 Az 模块,请参阅新 Azure Powershell Az 模块简介。 PowerShell cmdlet 经常更新。 如果未运行最新版本,在说明中指定的值可能无法使用。 若要查找系统上安装的 PowerShell 版本,请使用 cmdlet Get-Module -ListAvailable Az cmdlet。
  • 若要迁移带应用程序网关的虚拟网络,请先删除该网关,然后运行“准备”操作来移动网络。 完成迁移后,在 Azure Resource Manager 中重新连接该网关。
  • 验证是否已在本地计算机上安装经典模块和 Az Azure PowerShell 模块。 有关详细信息,请参阅如何安装和配置 Azure PowerShell
  • 无法自动迁移其他订阅中连接到 ExpressRoute 线路的 Azure ExpressRoute 网关。 在这些情况下,请删除 ExpressRoute 网关、迁移虚拟网络并重新创建网关。

支持的方案

经典模型到资源管理器模型的迁移支持以下方案:

  • 包含虚拟机的经典虚拟网络。

  • 经典虚拟网络,每个云服务最多一个可用性集。

  • 包含 Microsoft Entra 域服务的经典虚拟网络。

  • 具有单个 VPN 网关或单个 Express Route 线路的经典虚拟网络。

不支持的方案

迁移不支持以下方案:

  • 从经典部署模型管理虚拟网络的生命周期。

  • 对经典部署模型的 Azure 基于角色的访问控制支持。

  • 包含 ExpressRoute 网关和 VPN 网关的虚拟网络迁移。

  • 对在单个云服务中有多个可用性集的虚拟网络进行迁移。

  • 迁移具有以下特征的虚拟网络:包含一个或多个可用性集以及并非属于单个云服务中的单个可用性集的虚拟机。

  • 从经典部署模型到资源管理器部署模型的应用程序网关迁移。

注册资源提供程序

在本部分,你将使用资源管理器 cmdlet 登录到订阅并注册迁移资源提供程序。

  1. 登录到 Azure PowerShell:

    Connect-AzAccount -Environment AzureChinaCloud
    
    
  2. 注册迁移资源提供程序:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
    
    

    请等五分钟让注册完成。 使用以下命令检查注册状态:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
    
    

    请确保在继续操作之前,RegistrationState 为 Registered

    注意

    注册是一次性步骤,但必须在尝试迁移之前完成。 如果不注册,会看到以下错误消息:

    BadRequest:Subscription is not registered for migration. (BadRequest:订阅尚未注册迁移。)

检索要迁移的虚拟网络名称

在本部分,你将登录到经典部署模型 PowerShell 并检索要迁移的虚拟网络的名称。

  1. 登录到经典部署 PowerShell:

    Add-AzureAccount -Environment AzureChinaCloud
    
    
  2. 运行以下命令来检索经典虚拟网络名称:

    Get-AzureVnetSite | Select -Property Name
    
    

记下虚拟网络的名称,供下一部分使用。

迁移虚拟网络

在本部分,你将验证迁移是否可继续进行,然后准备迁移。

  1. 将上一部分中记下的虚拟网络名称放入变量中供命令使用。 将 myVNet 替换为在上一部分检索到的虚拟网络的名称:

    $vnetname = "myVNet"
    
    
  2. 运行以下命令来验证是否可以迁移虚拟网络:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName
    
    

    该命令会显示任何阻止迁移的警告或错误。 如果验证成功,则可继续执行以下准备步骤。

    注意

    如果虚拟网络包含的 Web 角色/辅助角色或虚拟机的配置不受支持,则会出现验证错误消息。

  3. 运行以下命令来准备要迁移的虚拟网络:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName
    
    

    如果尚未做好迁移准备,因此想要回到旧的状态,请使用以下命令:

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName
    

提交迁移

如果已准备好的配置看起来一切正常,可以通过运行以下命令提交迁移:

Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

后续步骤

有关将 Azure 中的资源从经典部署模型迁移到资源管理器部署模型的详细信息,请参阅: