共用方式為

将 Azure 应用程序网关和 Web 应用程序防火墙从 V1 迁移到 V2

在 2023 年 4 月 28 日,我们已宣布弃用应用程序网关 V1 SKU(标准和 WAF)。 V1 SKU 将于 2026 年 4 月 28 日停用。 有关详细信息,请参阅 在 2026 年 4 月 28 日前将应用程序网关从 V1 SKU 迁移到 V2 SKU

迁移到 Azure 应用程序网关和 Web 应用程序防火墙 (WAF) V2 具有以下优势:

  • 更好的复原能力:AZ 冗余、自动缩放
  • 更好的安全性:Azure Keyvault 集成、改进的 WAF 功能、机器人保护
  • 增强型监视功能:与仅具有 CPU 监视功能的 V1 不同,V2 提供对 CPU、内存和磁盘使用情况的全面监视。
  • 改进的检测和自动缓解:V2 网关提供高级检测机制和自动缓解过程,这些机制可以快速准确地识别和解决问题,而无需手动干预。
  • 所有新功能都针对 V2 SKU 发布。

强烈建议立即制定迁移计划。 V1 网关不会自动升级到 V2。 使用此迁移指南帮助你规划和执行迁移。

迁移分为两个阶段:

  1. 迁移配置文件
  2. 迁移客户端流量

本文主要帮助你完成配置迁移。 客户端流量迁移过程因环境而异。 本文提供了一些常规建议

先决条件

  • 具有活动订阅的 Azure 帐户。 创建帐户
  • 现有应用程序网关 V1 标准版。
  • 确保你有最新的 PowerShell 模块。
  • 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。
  • 确保在 V1 订阅中不存在具有指定的 AppGW V2 名称和资源组名称的应用网关。 这会重写现有资源。
  • 请确保在迁移期间,不会在 V1 网关或任何相关资源上进行其他操作。
  • 如果提供了公共 IP 地址,请确保其处于成功状态。 如果未提供且已提供 AppGWResourceGroupName,请确保 V1 订阅中名为 AppGWResourceGroupName 的资源组中不存有名为 AppGWV2Name-IP 的公共 IP 资源。
  • 对于 V1 SKU,需要身份验证证书才能设置与后端服务器的 TLS 连接。 V2 SKU 需要上传受信任的根证书,以实现相同的目的。 虽然 V1 允许使用自签名证书作为身份验证证书,但 V2 要求在后端使用自签名证书时生成并上传自签名根证书

注意

应用程序网关 V2 包括 客户控制的后端 TLS 放宽功能,该功能可简化迁移期间的后端证书验证。 此功能允许你通过跳过证书链、过期验证或重写 SNI 验证来暂时放宽 TLS 检查,使行为与 V1 SKU 中已允许的行为保持一致。 在增强的迁移脚本运行时,HTTPS 后端默认启用这些放宽设置,以防止 V2 中更严格的证书强制导致中断。 完成迁移后,可以上传适当的受信任根证书并禁用后端 TLS 放宽,以符合 V2 的建议安全状况。

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

注意

如果在订阅上启用了 NetworkIsolation,则所有应用程序网关 v2 部署(无论是仅限公共的还是专用的)都必须部署在委托给 Microsoft.Network/applicationGateways 的子网中。 使用 以下步骤设置子网委派

配置迁移

配置迁移侧重于使用现有 V1 环境中的设置设置新的 V2 网关。 我们提供了两个 Azure PowerShell 脚本,旨在促进将配置从 V1(标准或 WAF)迁移到 V2(Standard_V2 或 WAF_V2) 网关。 这些脚本通过自动化密钥部署和配置任务来帮助简化转换过程。

1. 增强型克隆脚本

这是通过以下方法改进迁移体验的新体验:

  • 无需手动输入前端 SSL 证书和后端受信任的根证书。
  • 支持部署专用 V2 网关。

注意

如果现有的 V1 应用程序网关配置了仅专用前端,必须在订阅中为私有部署注册 EnableApplicationGatewayNetworkIsolation 功能,然后才能运行迁移脚本。 此步骤是避免部署失败所必需的。

注意

专用应用程序网关部署必须将子网委派配置为Microsoft.Network/applicationGateways。 使用 以下步骤设置子网委派

可以从 PowerShell 库下载增强型克隆脚本。

脚本的参数: 此脚本采用以下参数:

  • AppGw V1 ResourceId -Required:此参数是现有标准 V1 或 WAF V1 网关的 Azure 资源 ID。 若要查找此字符串值,请导航到 Azure 门户,选择你的应用程序网关或 WAF 资源,然后单击网关对应的“属性”链接。 资源 ID 位于该页上。 还可以运行以下 Azure PowerShell 命令来获取资源 ID:
    $appgw = Get-AzApplicationGateway -Name <V1 gateway name> -ResourceGroupName <resource group Name>
    $appgw.Id
    
  • SubnetAddressRange -Required:CIDR 表示法中的子网地址,其中要部署应用程序网关 V2
  • AppGwName -Optional:v2 应用网关的名称。 默认值 = {AppGwV1 Name}_migrated
  • AppGwResourceGroupName -Optional:将在其中创建 V2 应用程序网关的资源组的名称。 如果未提供,将使用应用程序网关 V1 资源组。
  • PrivateIPAddress -可选:要分配给应用程序网关 V2 的专用 IP 地址。 如果未提供,则会分配随机专用 IP。
  • ValidateBackendHealth -可选:通过比较 ApplicationGatewayBackendHealth 响应进行迁移后验证。 如果未设置,将跳过此验证。
  • PublicIpResourceId -Optional:公共 IP 地址的资源 ID(如果已存在)可附加到应用程序网关。 如果未提供,公共 IP 名称将为 {AppGwName}-IP。
  • DisableAutoscale -Optional:禁用应用程序网关 V2 实例的自动缩放配置,默认情况下为 false
  • WafPolicyName -Optional:从 WAF V1 配置生成的 WAF 策略名称,将附加到 WAF v2 网关。

如何运行脚本

若要运行该脚本,请执行以下操作:

  1. 使用 Connect-AzAccount -Environment AzureChinaCloud 连接到 Azure。
  2. 使用 Import-Module Az 导入 Az 模块。
  3. 运行 Set-AzContext cmdlet,将活动 Azure 上下文设置为正确的订阅。 这是一个重要的步骤,因为迁移脚本可能会清理现有资源组(如果它在当前订阅上下文中不存在)。
    Set-AzContext -Subscription '<V1 application gateway SubscriptionId>'
    
  4. 按照步骤安装脚本进行安装。
  5. 使用相应的参数运行脚本。 完成该脚本可能需要 5 到 7 分钟时间。
    ./AzureAppGWClone.ps1
    -resourceId <V1 application gateway Resource ID>
    -subnetAddressRange <subnet space you want to use>
    -appgwName <string to use to append>
    -AppGWResourceGroupName <resource group name you want to use>
    -privateIpAddress <private IP string>
    -publicIpResourceId <public IP name string>
    - disableAutoscale
    -wafpolicyname <wafpolicyname>
    
    示例
    ./AzureAppGWClone.ps1 `
    -resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv1appgateway `
    -subnetAddressRange 10.0.0.0/24 `
    -appgwname "MynewV2gw" `
    -AppGWResourceGroupName "MyResourceGroup" `
    -privateIpAddress "10.0.0.1" `
    -publicIpResourceId "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/MyPublicIP" `
    

Recommendations

  • 脚本完成后,请查看 Azure 门户中的 V2 网关配置,并通过直接将流量发送到 V2 网关的 IP 来测试连接。
  • 默认情况下,脚本在克隆期间放宽后端 TLS 验证(无证书链、过期或 SNI 验证)。 如果需要更严格的 TLS 验证或身份验证证书,客户可以在创建后更新其应用程序网关 V2,以添加受信任的根证书,并根据需要启用此功能。
  • 对于 NTLM/Kerberos 直通,克隆后,在 HTTP 设置中将专用后端连接设置为“true”。

注意事项

  • 必须为 V1 网关所在的虚拟网络中的另一个子网提供 IP 地址空间。 该脚本无法在已有 V1 网关的子网中创建 V2 网关。 如果子网已具有 V2 网关,则脚本可能仍然会工作,前提是有足够的可用 IP 地址空间。
  • 如果你具有与 V2 网关子网关联的网络安全组或用户定义的路由,则为了成功迁移,请确保它们符合 NSG 要求UDR 要求
  • 如果为 V1 网关启用了 FIPS 模式,则它不会迁移到新的 V2 网关。
  • 新的 WAFV2 默认配置为使用 CRS 3.0。 但是,由于 CRS 3.0 即将被弃用,因此,我们建议在迁移后升级到最新的规则集 DRS 2.1。 有关更多详细信息,请参阅 CRS 和 DRS 规则组和规则 具有与 V2 网关子网关联的网络安全组或用户定义的路由,确保它们遵守 NSG 要求和 UDR 要求,以便成功迁移。

注意

在迁移期间,请勿尝试对 V1 网关或任何关联的资源执行任何其他操作。

2. 旧版克隆脚本

这是较旧的克隆脚本,可通过以下方式促进转换:

  • 在用户指定的虚拟网络子网中创建新的Standard_V2或WAF_V2应用程序网关。
  • 自动将配置从现有标准网关或 WAF V1 网关复制到新创建的 V2 网关。
  • 要求客户提供 SSL 和身份验证证书作为输入,并且不支持专用 V2 网关,可以从 PowerShell 库下载此克隆脚本

脚本的参数: 旧脚本采用以下参数:

  • resourceId: [String]: 必需:此参数是现有的 Standard V1 或 WAF V1 网关的 Azure 资源 ID。 若要查找此字符串值,请导航到 Azure 门户,选择你的应用程序网关或 WAF 资源,然后单击网关对应的“属性”链接。 资源 ID 位于该页上。 还可以运行以下 Azure PowerShell 命令来获取资源 ID:
    $appgw = Get-AzApplicationGateway -Name <V1 gateway name> -ResourceGroupName <resource group Name>
    $appgw.Id
    
  • subnetAddressRange: [String]: 必需:此参数是为包含新 V2 网关的新子网分配(或想要分配)的 IP 地址空间。 必须使用 CIDR 表示法指定地址空间。 例如:10.0.0.0/24。 无需提前创建此子网,但 CIDR 需要是 VNET 地址空间的一部分。 此脚本将为你创建它(如果它不存在),如果存在,它会使用现有子网(确保子网为空,且仅包含 V2 网关(如果有),并且具有足够可用的 IP)。
  • appgwName: [String]:Optional。 这是指定用作新 Standard_V2 或 WAF_V2 网关的名称的字符串。 如果未提供此参数,则会使用现有 V1 网关的名称并在其后追加后缀 _V2
  • AppGWResourceGroupName: [String]: Optional。 要在其中创建 V2 应用程序网关资源的资源组的名称(默认值为 <V1-app-gw-rgname>

注意

确保在 V1 订阅中不存在具有指定的 AppGW V2 名称和资源组名称的应用网关。 这会重写现有资源。

  • sslCertificates: [PSApplicationGatewaySslCertificate]: 可选。 创建的 PSApplicationGatewaySslCertificate 对象的列表(以逗号分隔)用于表示来自您 V1 网关的 TLS/SSL 证书,这些证书必须上传到新的 V2 网关。 对于为 Standard V1 或 WAF V1 网关配置的每个 TLS/SSL 证书,可按如下所示通过 New-AzApplicationGatewaySslCertificate 命令创建新的 PSApplicationGatewaySslCertificate 对象。 需要 TLS/SSL 证书文件的路径和密码。

    仅当没有为 V1 网关或 WAF 配置 HTTPS 侦听器时,此参数才是可选项。 如果至少安装了一个 HTTPS 侦听器,则必须指定此参数。

         $password = ConvertTo-SecureString <cert-password> -AsPlainText -Force
         $mySslCert1 = New-AzApplicationGatewaySslCertificate -Name "Cert01" `
        -CertificateFile <Cert-File-Path-1> `
         Password $password
         $mySslCert2 = New-AzApplicationGatewaySslCertificate -Name "Cert02" `
        -CertificateFile <Cert-File-Path-2> `
        -Password $password
    

    在以上示例中,可以传入 $mySslCert1, $mySslCert2(逗号分隔)作为脚本中此参数的值。

  • 来自 Keyvault 的 SSL证书: 可选。 可以下载存储在 Azure Key Vault 中的证书,并将其传递给迁移脚本。 若要将证书下载为 PFX 文件,请运行以下命令。 这些命令访问 SecretId,并将内容另存为 PFX 文件。

        $vaultName = ConvertTo-SecureString <kv-name> -AsPlainText -Force
        $certificateName = ConvertTo-SecureString <cert-name> -AsPlainText -Force
        $password = ConvertTo-SecureString <password> -AsPlainText -Force
        $pfxSecret = Get-AzKeyVaultSecret -VaultName $vaultName -Name $certificateName -AsPlainText
        $secretByte = [Convert]::FromBase64String($pfxSecret)
        $x509Cert = New-Object Security.Cryptography.X509Certificates.X509Certificate2
        $x509Cert.Import($secretByte, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
        $pfxFileByte = $x509Cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
        # Write to a file
        [IO.File]::WriteAllBytes("KeyVaultcertificate.pfx", $pfxFileByte)
    

    对于从 Keyvault 下载的每个证书,可以通过此处所示的 New-AzApplicationGatewaySslCertificate 命令创建新的 PSApplicationGatewaySslCertificate 对象。 需要 TLS/SSL 证书文件的路径和密码。

    //Convert the downloaded certificate to SSL object
    $password = ConvertTo-SecureString  <password> -AsPlainText -Force 
    $cert = New-AzApplicationGatewaySSLCertificate -Name <certname> -CertificateFile <Cert-File-Path-1> -Password $password 
    
  • trustedRootCertificates: [PSApplicationGatewayTrustedRootCertificate]: 可选。 创建的 PSApplicationGatewayTrustedRootCertificate 对象的逗号分隔列表,表示用于对 v2 网关中后端实例进行身份验证的受信任根证书

    $certFilePath = ".\rootCA.cer"
    $trustedCert = New-AzApplicationGatewayTrustedRootCertificate -Name "trustedCert1" -CertificateFile $certFilePath
    

    若要创建 PSApplicationGatewayTrustedRootCertificate 对象列表,请参阅 New-AzApplicationGatewayTrustedRootCertificate

  • privateIpAddress: [String]:Optional。 要将一个特定的专用IP地址关联到您的新V2网关。 此地址必须来自为新 V2 网关分配的同一 VNet。 如果未指定,该脚本将为 V2 网关分配一个专用 IP 地址。

  • publicIpResourceId: [String]:Optional。 订阅中要分配给新 V2 网关的现有公共 IP 地址(标准 SKU)资源的 resourceId。 如果提供了公共 IP 资源名称,请确保它处于成功状态。 如果未指定参数,该脚本将在同一资源组中分配一个新的公共 IP 地址。 名称是 V2 网关名称,附加了 "-IP"。 如果提供 AppGWResourceGroupName 且未提供公共 IP 地址,请确保具有名称 AppGWV2Name-IP 的公共 IP 资源不存在于 V1 订阅中名为 AppGWResourceGroupName 的资源组中。

  • validateMigration: [switch]:可选。 在创建 V2 网关并复制配置后使用此参数让脚本执行一些基本的配置比较验证。 默认不会执行任何验证。

  • enableAutoScale: [开关]: 可选。 创建新的 V2 网关后,使用此参数来启用脚本对该网关的自动缩放功能。 默认禁用自动缩放。 创建新的 V2 网关后,您随时可以手动启用它。

如何运行脚本

若要运行该脚本,请执行以下操作:

  1. 使用 Connect-AzAccount -Environment AzureChinaCloud 连接到 Azure。
  2. 使用 Import-Module Az 导入 Az 模块。
  3. 运行 Set-AzContext cmdlet,将活动 Azure 上下文设置为正确的订阅。 这是一个重要的步骤,因为迁移脚本可能会清理现有资源组(如果它在当前订阅上下文中不存在)。
    Set-AzContext -Subscription '<V1 application gateway SubscriptionId>'
    
  4. 按照步骤安装脚本进行安装。
  5. 运行 Get-Help AzureAppGWMigration.ps1 检查所需的参数:
  6. 使用相应的参数运行脚本。 完成该脚本可能需要 5 到 7 分钟时间。
       ./AzureAppGWMigration.ps1
       -resourceId <V1 application gateway Resource ID>
       -subnetAddressRange <subnet space you want to use>
       -appgwName <string to use to append>
       -AppGWResourceGroupName <resource group name you want to use>
       -sslCertificates <comma-separated SSLCert objects as above>
       -trustedRootCertificates <comma-separated Trusted Root Cert objects as above>
       -privateIpAddress <private IP string>
       -publicIpResourceId <public IP name string>
       -validateMigration -enableAutoScale
    
    示例
       ./AzureAppGWMigration.ps1 `
       -resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv1appgateway `
       -subnetAddressRange 10.0.0.0/24 `
       -appgwname "MynewV2gw" `
       -AppGWResourceGroupName "MyResourceGroup" `
       -sslCertificates $mySslCert1,$mySslCert2 `
       -trustedRootCertificates $trustedCert `
       -privateIpAddress "10.0.0.1" `
       -publicIpResourceId "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/MyPublicIP" `
       -validateMigration -enableAutoScale
    

注意事项/限制

  • 新的 V2 网关使用新的公共和专用 IP 地址。 无法将与现有 V1 网关关联的 IP 地址无缝移动到 V2。 但是,可将现有的(未分配的)公共或专用 IP 地址分配到新的 V2 网关。
  • 必须为 V1 网关所在的虚拟网络中的另一个子网提供 IP 地址空间。 该脚本无法在已有 V1 网关的子网中创建 V2 网关。 如果子网已具有 V2 网关,则脚本可能仍然会工作,前提是有足够的可用 IP 地址空间。
  • 如果网络安全组或用户定义的路由关联到 V2 网关子网,请确保它们遵守 NSG 要求UDR 要求 ,以便成功迁移。
  • 应用程序网关子网中当前不支持虚拟网络服务终结点策略
  • 若要迁移 TLS/SSL 配置,必须指定 V1 网关中使用的所有 TLS/SSL 证书。
  • 如果为 V1 网关启用了 FIPS 模式,则它不会迁移到新的 V2 网关。
  • WAFv2 是在旧 WAF 配置模式下创建的;需要迁移到 WAF 策略。
  • 新的 WAFv2 默认配置为使用 CRS 3.0。 但是,由于 CRS 3.0 即将被弃用,因此,我们建议在迁移后升级到最新的规则集 DRS 2.1。 有关更多详细信息,请参阅 CRS 和 DRS 规则组和规则

注意

应用程序网关 V2 支持 NTLM 和 Kerberos 直通身份验证。 有关更多详细信息,请参阅 专用后端连接

安装脚本

注意

每次运行迁移脚本之前,运行 Set-AzContext -Subscription <V1 application gateway SubscriptionId> cmdlet。 这是将活动的 Azure 上下文设置为正确的订阅所必需的,因为迁移脚本可能会清理现有资源组(如果它在当前订阅上下文中不存在)。

根据本地 PowerShell 环境的设置和首选项,可以使用两个选项:

  • 如果你尚未安装 Azure Az 模块或者不介意卸载 Azure Az 模块,最佳做法是使用 Install-Script 选项运行该脚本。
  • 如果需要保留 Azure Az 模块,则最佳做法是下载并直接运行该脚本。 若要确定是否安装了 Azure Az 模块,请运行 Get-InstalledModule -Name az。 如果未看到任何已安装的 Az 模块,可以使用 Install-Script 方法。

只有尚未在计算机上安装 Azure Az 模块时才能使用此选项。 如果已安装,则以下命令将显示错误。 可以卸载 Azure Az 模块,或者选择另外一种方式,手动下载并运行该脚本。

使用以下命令运行该脚本以获取最新版本:

  • 用于增强克隆公网 IP 保留的脚本 - Install-Script -Name AzureAppGWIPMigrate -Force

  • 对于增强型克隆脚本 - Install-Script -Name AzureAppGWClone -Force

  • 对于旧版克隆脚本 - Install-Script -Name AzureAppGWMigration -Force

此命令还会安装所需的 Az 模块。

直接使用脚本安装

如果已安装某些 Azure Az 模块并且无法卸载它们(或者不想卸载),可以使用脚本下载链接中的“手动下载”选项卡手动下载该脚本。

此脚本将作为原始 nupkg 文件下载。 若要安装此 nupkg 文件中的脚本,请参阅手动下载包

对于旧版克隆脚本,版本 1.0.11 是迁移脚本的新版本,其中包括主要的 bug 修复。 请确保使用 PowerShell 库中的最新稳定版本

如何检查下载的脚本的版本

若要检查下载的脚本的版本,步骤如下:

  1. 提取 NuGet 包的内容。
  2. 打开文件夹中的 .PS1 文件,然后检查位于顶部的 ..VERSION,以确认下载的脚本的版本
<#PSScriptInfo
.VERSION 1.0.10
.GUID be3b84b4-e9c5-46fb-a050-699c68e16119
.AUTHOR Microsoft Corporation
.COMPANYNAME Microsoft Corporation
.COPYRIGHT Microsoft Corporation. All rights reserved.

流量迁移

先决条件

  • 首先,请仔细检查脚本是否已成功创建了一个新的 V2 网关,其中包含要从 V1 网关迁移的确切配置。 可以从 Azure 门户验证此结果。
  • 另外,请通过 V2 网关发送少量的流量作为手动测试。

公共 IP 保留脚本

成功迁移配置并彻底测试新的 V2 网关后,此步骤重点介绍如何重定向实时流量。 我们提供了一个 Azure PowerShell 脚本,旨在 保留 V1 中的公共 IP 地址

  • 交换公共 IP:此脚本保留 V1 中的基本公共 IP,将其转换为标准 IP,并将其附加到 V2 网关。 这有效地将所有传入流量重定向到 V2 网关。
  • 预期停机时间:此 IP 交换作通常会导致 大约 1-5 分钟的短暂停机时间。 相应地进行规划。
  • 成功运行脚本后,公共 IP 将从应用程序网关 V1 移动到应用程序网关 V2,应用程序网关 V1 接收新的公共 IP。

注意

IP 迁移脚本不支持具有以数字字符开头的 DNS 名称的公共 IP 地址资源。 存在此限制,因为公共 IP 地址资源不允许以数字开头的 DNS 名称标签。 2023 年 5 月之前创建的 V1 网关更有可能出现此问题,届时公共 IP 地址会自动为 {GUID}.chinacloudapp.cn 格式的默认 DNS 名称分配。 若要继续迁移,请更新公共 IP 地址资源,以使用以字母开头的 DNS 名称标签,然后再运行脚本。 了解如何配置公共 IP DNS

可以从 PowerShell 库下载此公共 IP 保留脚本

脚本的参数:

此脚本需要以下必需参数:

  • V1 ResourceId - V1 应用程序网关的资源 ID,其公共 IP 将保留并与 V2 关联。
  • V2 ResourceId - 将向其分配 V1 公共 IP 的 V2 应用网关的资源 ID。 可以通过手动创建或使用任意一个克隆脚本来创建 V2 网关。

下载并安装脚本

使用所需参数执行 AzureAppGWIPMigrate.ps1:

   ./AzureAppGWIPMigrate.ps1
    -v1resourceId <V1 application gateway Resource ID>
    -v2resourceId <V2 application gateway Resource ID>

示例

 ./AzureAppGWIPMigrate.ps1 `
 -v1resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv1appgateway `
 -v2resourceId /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup/providers/Microsoft.Network/applicationGateways/myv2appgateway `

IP 交换完成后,客户应检查 V2 网关上的控制平面操作和数据平面操作。 在 V1 网关上,将禁用除 Delete 之外的所有控制平面操作。

注意

在 IP 迁移期间,请勿尝试对 V1 和 V2 网关或任何关联的资源执行任何其他操作。

注意

此脚本执行的公共 IP 交换不可逆。 启动后,无法使用脚本将 IP 还原回 V1 网关。

流量迁移建议

以下是当前应用程序网关(标准)可以接收客户端流量的几种情况,以及针对每种情况的建议:

  • 自定义 DNS 区域(例如 contoso.com)指向与 Standard V1 或 WAF V1 网关关联的前端 IP 地址(使用 A 记录)。 可以更新 DNS 记录,使其指向与 Standard_V2 应用程序网关关联的前端 IP 或 DNS 标签。 根据 DNS 记录上配置的 TTL,所有客户端流量可能需要一段时间才能迁移到新的 V2 网关。
  • 指向与您的 V1 网关关联的 DNS 标签(例如,通过 CNAME 记录指向 myappgw.chinanorth2.chinacloudapp.cn)的自定义 DNS 区域(例如:contoso.com)。 有两种选择:
    • 如果在应用程序网关上使用公共 IP 地址,则可以使用流量管理器配置文件执行受控的粒度迁移,以增量方式将流量路由到新的 V2 网关(加权流量路由方法)。 为此,可将 V1 和 V2 应用程序网关的 DNS 标签添加到流量管理器配置文件,并通过 CNAME 将自定义 DNS 记录(例如 www.contoso.com)指向流量管理器域(例如 contoso.trafficmanager.cn)。
    • 或者,可以更新自定义域的 DNS 记录,使其指向新 V2 应用程序网关的 DNS 标签。 根据 DNS 记录上配置的 TTL,所有客户端流量可能需要一段时间才能迁移到新的 V2 网关。
  • 您的客户端连接到应用程序网关的前端 IP 地址。 更新客户端以使用与新创建的 V2 应用程序网关关联的 IP 地址。 我们建议不要直接使用 IP 地址。 请考虑使用与您的应用程序网关(例如 yourgateway.chinanorth2.chinacloudapp.cn)关联的 DNS 名称标签,您可以通过 CNAME 将其指向您自己的自定义 DNS 区域(例如 contoso.com)。

迁移后

一旦流量迁移成功,并且在通过 V2 网关完全验证应用程序正确运行后,可以安全地计划退役并删除旧 V1 应用程序网关资源,以避免不必要的成本。

定价注意事项

应用程序网关 V1 和 V2 SKU 的定价模型不同。 V2 根据使用量收费。 在迁移之前,请参阅应用程序网关定价以了解定价信息。

成本效益指南

V2 SKU 提供诸多优势,例如性能提升 5 倍、通过密钥保管库集成提高安全性、更快地更新 WAF_V2 中的安全规则、WAF 自定义规则、策略关联和机器人防护。 它还提供很高的可伸缩性、优化的流量路由,以及与 Azure 服务的无缝集成。 这些特性可以改进整体用户体验,防止在流量繁忙期间速度变慢,并避免代价高昂的数据违规。

V1 SKU 提供五种基于层级和尺寸的变体:Standard_Small、Standard_Medium、Standard_Large、WAF_Medium 和 WAF_Large。

SKU V1 固定月费 V2 每月固定收费 建议
标准中型 102.2 179.8 V2 SKU 可以处理的请求数比 V1 网关更多,因此我们建议将多个 V1 网关合并成一个 V2 网关,以优化成本。 确保合并后不会超过应用程序网关的限制。 建议按照 3:1 的比例合并。
WAF 中型 183.96 262.8 与标准中型相同
标准大号 467.2 179.58 对于这些变体,在大多数情况下,迁移到 V2 网关所带来的成本效益比使用 V1 要好。
WAF 大型 654.08 262.8 与标准大型相同

注意

此处显示的计算基于美国东部,并针对 V1 版本中具有两个实例的网关。 V2 中的可变成本基于使用量最高的三个维度之一:新连接(50/秒)、持久连接(2500 个持久连接/分钟)、吞吐量(一个 CU 可以处理 2.22 Mbps)。

此处所述的场景均为示例,仅用于演示目的。 若要了解你所在区域的定价,请参阅定价页

在定价方面若有其他疑问,请咨询 CSAM,或联系我们的支持团队以寻求帮助。

常见问题

此处可以找到有关迁移的常见问题

后续步骤

了解应用程序网关 V2