将 Azure 虚拟网络重新定位到另一个区域

本文介绍如何通过重新部署虚拟网络将虚拟网络重新定位到新区域。 重新部署既支持多个工作负载的独立迁移,也支持目标区域的专用 IP 地址范围变化。 建议使用 Azure 资源管理器 (ARM) 模板重新定位虚拟网络。

如果选择使用 Azure 资源移动器移动虚拟网络,请确保了解以下注意事项:

  • 必须一起重新定位虚拟网络中的所有工作负载。
  • 使用 Azure 资源转移器进行重定位不支持专用 IP 地址范围更改。
  • Azure 资源转移器可以移动网络安全组和用户定义的路由等资源以及虚拟网络。 不过,建议分别移动它们。 一起移动可能会导致验证依赖项阶段失败。
  • 资源转移器无法直接将 NAT 网关实例从一个区域移到另一个区域。 若要解决此限制,请参阅在将资源移到另一个区域后创建和配置 NAT 网关。
  • 在重定位过程中,Azure 资源转移器不支持对地址空间进行任何更改。 因此,转移完成后,源和目标具有相同的地址空间,因此产生冲突。 重定位完成后,请手动更新地址空间。
  • 重定位后,必须重新配置虚拟网络对等互连。 建议在源虚拟网络之前移动对等互连虚拟网络,或同时移动。
  • 使用 Azure 资源移动器执行启动移动步骤时,资源可能暂时不可用。

若要了解如何使用资源转移器转移虚拟网络,请参阅跨区域移动 Azure VM

先决条件

  • 确定也与虚拟网络关联的任何独立资源,例如:

  • 网络对等互连

  • 确认虚拟网络位于源 Azure 区域中。

  • 若要导出虚拟网络并部署模板,以便在另一区域创建虚拟网络,需要“网络参与者”角色或更高级别的角色。

  • 确定源网络布局和当前正在使用的所有资源。 此布局包括但不限于负载均衡器、网络安全组 (NSG) 和公共 IP。

  • 验证 Azure 订阅是否允许在目标区域中创建虚拟网络。 若要启用所需配额,请联系支持部门。

  • 确认订阅提供足够的资源,以支持在此过程中添加虚拟网络。 有关详细信息,请参阅 Azure 订阅和服务限制、配额与约束

  • 了解以下注意事项:

    • 如果启用专用 IP 地址范围更改,则可以单独重新定位虚拟网络中的多个工作负荷。
    • 重新部署方法支持在目标区域中启用和禁用专用 IP 地址范围更改的选项。
    • 如果未在目标区域中启用专用 IP 地址更改,则只能使用公共端点(公共 IP 地址)建立需要在源区域和目标区域之间通信的数据迁移场景。

重要

自 2021 年 7 月 1 日起,你将无法在现有工作区中添加新测试,也无法通过网络性能监视器启用新的工作区。 可以继续使用在 2021 年 7 月 1 日之前创建的测试。 为了最大程度地减少当前工作负载的服务中断,请在 2024 年 2 月 29 日之前,在 Azure 网络观察程序中将测试从网络性能监视器迁移到新的连接监视器。

计划

若要规划 Azure 虚拟网络的重新定位,必须了解是在连接还是断开连接的情况下重新定位虚拟网络。 在连接的情况下,虚拟网络使用中心、VPN 网关或 ExpressRoute 连接路由到本地数据中心。 在断开连接的情况下,工作负载组件使用虚拟网络相互通信。

同时显示虚拟网络连接方案和断开连接方案的关系图。

离线场景

IP 地址不变的重定位 IP 地址变更的重定位
不需要其他 IP 地址范围。 需要其他 IP 地址范围。
重定位后,不会更改资源的 IP 地址。 重定位后,资源的 IP 地址会被修改
必须一起重新定位虚拟网络中的所有工作负载。 可以在不考虑依赖关系的情况下进行工作负载重定位或部分重定位(考虑通信延迟)
需要断开或删除源区域中的虚拟网络,然后才能连接目标区域中的虚拟网络。 使用 vNetwork 对等互连在源区域和目标区域之间启用通信快捷方式。
不支持需要在源区域和目标区域之间通信的数据迁移场景。 如果在数据迁移场景中需要在源区域和目标区域之间进行通信,可以在迁移期间建立网络对等连接。

在断开连接的情况下,具有相同 IP 地址范围的重定位

图表显示脱机工作负载重新定位,而虚拟网络 IP 地址范围未更改。

在断开连接的情况下,使用新的 IP 地址范围的重定位

显示断开连接的工作负载重定位以及虚拟网络 IP 地址范围更改的图示。

已连接的应用场景

IP 地址不变的重定位 IP 地址变更的重定位
不需要其他 IP 地址范围。 需要其他 IP 地址范围。
重定位后,不会更改资源的 IP 地址。 重定位后,会更改资源的 IP 地址。
需要将具有相互依赖关系的所有工作负载重新定位在一起。 可以在不考虑依赖关系的情况下重新分配工作负载(考虑通信延迟)。
源区域和目标区域中的两个虚拟网络之间无法通信。 可以使用 vNetwork 对等互连在源区域和目标区域之间启用通信。
数据迁移是指当源区域与目标区域之间无法通信或仅能通过公共终结点建立连接时发生。 如果在数据迁移场景中需要在源区域和目标区域之间进行通信,可以在迁移期间建立网络对等连接。

在已连接的情况下,具有相同 IP 地址范围的重定位

显示已连接的工作负载重定位但未更改虚拟网络 IP 地址范围的图示。

在已连接的情况下,使用新的 IP 地址范围的重定位

显示已连接的工作负载迁移与虚拟网络 IP 地址范围更改的图表。

准备

  1. 移动包含网络观察程序 NSG 日志的诊断存储帐户。 若要了解如何移动存储帐户,请参阅“将 Azure 存储帐户重新定位到另一个区域”。
  2. 重新定位网络安全组 (NSG)
  3. 禁用 DDoS 保护计划

导出和修改模板

若要使用 Azure 门户导出虚拟网络并部署目标虚拟网络,请执行以下操作:

  1. 删除任何虚拟网络对等互连。 无法重新创建虚拟网络对等互连,如果它们仍存在于模板中,它们将会失败。 在“重新部署”部分中,您将重新配置目标虚拟网络上的连接。

  2. 登录到 Azure 门户,然后选择“资源组”。

  3. 找到包含源虚拟网络的资源组并选择它。

  4. 选择自动化>导出模板

  5. 在“导出模板”窗格中选择“部署”。

  6. 若要在在线编辑器中打开 parameters.json 文件,请选择“模板”“编辑参数”。>

  7. 若要编辑虚拟网络名称的参数,请更改 parameters 下的 value 属性:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "virtualNetworks_myVNET1_name": {
            "value": "<target-virtual-network-name>"
        }
      }
    }
    
  8. 在编辑器中,将源虚拟网络名称值更改为所需的目标虚拟网络名称。 请务必将名称括在引号中。

  9. 在编辑器中选择“保存”。

  10. 若要在在线编辑器中打开 template.json 文件,请选择“模板”“编辑模板”。>

  11. 若要编辑目标区域,请在联机编辑器中更改 resources 下的 location 属性:

    "resources": [
      {
        "type": "Microsoft.Network/virtualNetworks",
        "apiVersion": "2019-06-01",
        "name": "[parameters('virtualNetworks_myVNET1_name')]",
        "location": "<target-region>",
        "properties": {
          "provisioningState": "Succeeded",
          "resourceGuid": "6e2652be-35ac-4e68-8c70-621b9ec87dcb",
          "addressSpace": {
            "addressPrefixes": [
              "10.0.0.0/16"
            ]
          }
        }
      }
    ]
    
  12. 若要获取区域位置代码,请参阅 Azure 位置。 区域的代码是区域名称,不带空格。

  13. (可选)还可以根据要求更改模板中的其他参数:

    • 地址空间:在保存该文件之前,可以通过修改 资源>地址空间 部分并更改 地址前缀 属性来调整虚拟网络的地址空间。

      "resources": [
        {
          "type": "Microsoft.Network/virtualNetworks",
          "apiVersion": "2019-06-01",
          "name": "[parameters('virtualNetworks_myVNET1_name')]",
          "location": "<target-region",
          "properties": {
            "provisioningState": "Succeeded",
            "resourceGuid": "6e2652be-35ac-4e68-8c70-621b9ec87dcb",
            "addressSpace": {
              "addressPrefixes": [
                "10.0.0.0/16"
              ]
            }
          }
        }
      ]
      
    • 子网:可以通过更改该模板的 subnets 节来更改子网名称和子网地址空间或在其中添加内容。 可以通过更改 name 属性来更改子网名称。 可以通过更改 addressPrefix 属性来更改子网地址空间:

      "subnets": [
        {
          "name": "subnet-1",
          "etag": "W/\"d9f6e6d6-2c15-4f7c-b01f-bed40f748dea\"",
          "properties": {
            "provisioningState": "Succeeded",
            "addressPrefix": "10.0.0.0/24",
            "delegations": [],
            "privateEndpointNetworkPolicies": "Enabled",
            "privateLinkServiceNetworkPolicies": "Enabled"
          }
        },
        {
          "name": "GatewaySubnet",
          "etag": "W/\"d9f6e6d6-2c15-4f7c-b01f-bed40f748dea\"",
          "properties": {
            "provisioningState": "Succeeded",
            "addressPrefix": "10.0.1.0/29",
            "serviceEndpoints": [],
            "delegations": [],
            "privateEndpointNetworkPolicies": "Enabled",
            "privateLinkServiceNetworkPolicies": "Enabled"
          }
        }
      ]
      

      若要更改 template.json 文件中的地址前缀,请在两个位置对其进行编辑:

      • 在前面的代码中。
      • 在以下代码的“类型”部分中。

      此外,还需更改以下代码中的 addressPrefix 属性,使之与前一节的代码中的 addressPrefix 属性相符。

      {
        "type": "Microsoft.Network/virtualNetworks/subnets",
        "apiVersion": "2019-06-01",
        "name": "[concat(parameters('virtualNetworks_myVNET1_name'), '/GatewaySubnet')]",
        "dependsOn": [
            "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_myVNET1_name'))]"
        ],
        "properties": {
          "provisioningState": "Succeeded",
          "addressPrefix": "10.0.1.0/29",
          "serviceEndpoints": [],
          "delegations": [],
          "privateEndpointNetworkPolicies": "Enabled",
          "privateLinkServiceNetworkPolicies": "Enabled"
        }
      },
      {
        "type": "Microsoft.Network/virtualNetworks/subnets",
        "apiVersion": "2019-06-01",
        "name": "[concat(parameters('virtualNetworks_myVNET1_name'), '/subnet-1')]",
        "dependsOn": [
          "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_myVNET1_name'))]"
        ],
        "properties": {
          "provisioningState": "Succeeded",
          "addressPrefix": "10.0.0.0/24",
          "delegations": [],
          "privateEndpointNetworkPolicies": "Enabled",
          "privateLinkServiceNetworkPolicies": "Enabled"
        }
      }
      
  14. 在在线编辑器中选择“保存”。

重新部署

  1. 若要选择部署目标虚拟网络的订阅,请选择 “基本>订阅”。

  2. 若要选择部署目标虚拟网络的资源组,请选择“基本资源组>”。

    如果需要为目标虚拟网络创建新的资源组,请选择“新建”。 确保该名称不同于现有虚拟网络中的源资源组名称。

  3. 确认“基本信息”“位置”是否设置为要将虚拟网络部署到的目标位置。

  4. 在“设置”下,确认名称是否与先前在 parameters 编辑器中输入的名称相匹配。

  5. 选中“条款和条件”复选框。

  6. 若要部署目标虚拟网络,请选择“购买”。

  7. 配置虚拟网络对等

  8. 按照“从网络性能监视器迁移到连接监视器”中的指南启用连接监视器。

  9. 启用 DDoS 保护计划。 移动后,适用于虚拟网络所有受保护的公共 IP 地址的自动优化策略阈值都将重置。

    • (可选)将网络安全组(NSG)、应用程序安全组(ASG)和用户定义的路由(UDR)重新配置到目标虚拟网络子网,该子网曾经与源虚拟网络子网关联,现在已迁移到目标区域。
    • (可选)将 NAT-Gateway 重新配置为目标虚拟网络子网,该子网此前与源虚拟网络子网关联,现在已移至目标区域。
    • (可选)诊断设置:重新配置目标虚拟网络的诊断设置,以将日志发送到已按准备中所述迁移的日志分析工作区/存储帐户/事件中心。

弃用

若要丢弃目标虚拟网络,请删除包含目标虚拟网络的资源组。 为此,做以下事情:

  1. 在 Azure 门户仪表板上,选择该资源组。
  2. 在“概述”窗格的顶部,选择“删除”。

清除

若要提交更改并完成虚拟网络的移动,请删除源虚拟网络或资源组。 为此,做以下事情:

  1. 在 Azure 门户仪表板上,选择该虚拟网络或资源组。
  2. 在每个窗格的顶部,选择“删除”。

后续步骤

若要详细了解如何在区域之间移动资源,以及如何在 Azure 中进行灾难恢复,请参阅: