共用方式為

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

Microsoft于 2023 年 4 月 28 日宣布弃用应用程序网关 V1(标准和 Web 应用程序防火墙)。 应用程序网关 V1 将于 2026 年 4 月 28 日停用。

本文介绍如何使用 Azure PowerShell 脚本将 Azure 应用程序网关和 Azure Web 应用程序防火墙从 V1 迁移到 V2。 迁移分为两个阶段:配置迁移和流量迁移。 可以使用增强型克隆脚本(建议)或旧版克隆脚本将 V1 网关配置克隆到新的 V2 网关,然后在最短停机时间的情况下重定向客户端流量。

有关应用程序网关 V1 退役的详细信息,请参阅 在 2026 年 4 月 28 日前,从应用程序网关 V1 迁移到 V2

为什么迁移到 V2?

应用程序网关 V2 和 Web 应用程序防火墙 V2 在 V1 上具有以下优势:

  • 复原能力。 可用性区域冗余和自动缩放。
  • 安全性。 Azure Key Vault 集成、改进的 Web 应用程序防火墙功能和机器人保护。
  • 监视。 全面监视 CPU、内存和磁盘使用情况。 (V1 仅支持 CPU。)
  • 检测和缓解。 高级检测和自动缓解,无需手动干预即可识别和解决问题。
  • 新功能。 仅限 V2 发布新功能。

V1 网关不会自动升级到 V2。 使用本指南规划和执行迁移。

本文重点介绍迁移的配置阶段。 客户端流量的迁移因环境而异。 本文仅提供有关流量迁移的一般建议。

先决条件

  • 需要一个具有活动订阅的 Azure 帐户。 创建帐户

  • 需要现有的应用程序网关 V1 标准部署。

  • 使用最新的 PowerShell 模块。

  • 如果在本地运行 PowerShell,请运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。

  • V1 订阅中不能存在具有提供的 AppGWV2NameAppGWResourceGroupName 参数的现有网关。 此条件可防止重写现有资源。

  • 在迁移期间,您不能在 V1 网关或任何关联的资源上进行任何其他计划的操作。

  • 如果提供公共 IP 地址,请确保其处于成功状态。 如果未提供公共 IP 地址但提供 AppGWResourceGroupName,请确保具有名称 AppGWV2Name-IP 的公共 IP 资源不存在于 V1 订阅中名称 AppGWResourceGroupName 的资源组中。

  • 为了 V1,需要认证证书来与后端服务器建立 TLS 连接。 V2 需要上传 受信任的根证书 以实现相同的目的。 虽然 V1 允许使用自签名证书作为身份验证证书,但如果在后端中使用自签名证书,V2 会强制 生成和上传自签名根证书

  • 如果在订阅上启用网络隔离,则所有应用程序网关 V2 仅限公共部署或仅专用部署都必须位于委托给 Microsoft.Network/applicationGateways的子网中。 使用 步骤设置子网委派

注意

应用程序网关 V2 包括 客户控制的后端 TLS 放松,该功能可简化迁移期间的后端证书验证。 可以使用此功能通过跳过证书链验证、跳过过期验证,或忽略服务器名称指示(SNI)验证来暂时放松 TLS 检查。 此操作使行为与 V1 中已允许的行为保持一致。

在增强的迁移脚本运行时,它默认启用 HTTPS 后端的放宽设置,以防止 V2 中更严格的证书强制导致中断。 完成迁移后,可以上传适当的受信任根证书,并禁用后端 TLS 放松限制,以符合 V2 的推荐的安全措施。

注意

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

配置迁移

配置迁移侧重于使用现有 V1 环境中的设置设置新的 V2 网关。 两个 Azure PowerShell 脚本有助于将配置(标准或 Web 应用程序防火墙)从 V1 迁移到 V2 网关。 这些脚本通过自动化密钥部署和配置任务来帮助简化转换过程。

建议使用增强型克隆脚本。 它通过以下方式提供了改进的迁移体验:

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

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

注意事项

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

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

脚本的参数

  • AppGw V1 ResourceId -Required。 现有标准 V1 或 Web 应用程序防火墙 V1 网关的 Azure 资源 ID。 若要查找此字符串值,请转到 Azure 门户,选择应用程序网关或 Web 应用程序防火墙资源,然后选择网关 的属性 链接。 资源 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 应用程序网关的资源组的名称。 如果未提供,则将使用 Application Gateway V1 资源组。

  • PrivateIPAddress -Optional。 要分配给应用程序网关 V2 的专用 IP 地址。 如果未提供,则会分配随机专用 IP。

  • ValidateBackendHealth -Optional。 通过比较 ApplicationGatewayBackendHealth 的响应进行迁移后的验证。 如果未设置,则会跳过此验证。

  • PublicIpResourceId -Optional。 要附加到应用程序网关的公共 IP 地址的资源 ID(如果已存在)。 如果未提供,则公共 IP 名称为 {AppGwName}-IP.

  • DisableAutoscale -Optional。 用于禁用应用程序网关 V2 实例的自动缩放配置的选项。 它默认为 false

  • WafPolicyName -Optional。 将从 Web 应用程序防火墙 V1 配置创建并附加到 Web 应用程序防火墙 V2 网关的 Web 应用程序防火墙策略的名称。

运行脚本的步骤

  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 地址空间可用,脚本可能仍然有效。

  • 如果网络安全组(NSG)或用户定义的路由(UDR)与 V2 网关子网相关联,请确保它们遵守 NSG 要求UDR 要求 ,以便成功迁移。

  • 如果为 V1 网关启用了 FIPS 模式,则它不会迁移到新的 V2 网关。

  • 默认情况下,Web 应用程序防火墙 V2 配置为使用核心规则集 (CRS) 3.0。 由于 CRS 3.0 位于弃用的路径上,因此在迁移后升级到最新的规则集:默认规则集 (DRS) 2.2。 有关详细信息,请参阅 Web 应用程序防火墙 DRS 和 CRS 规则组和规则

注意

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

旧版克隆脚本

旧克隆脚本通过以下方法促进转换:

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

脚本的参数

旧脚本采用以下参数:

  • resourceId。 此必需参数是现有标准 V1 或 Web 应用程序防火墙 V1 网关的 Azure 资源 ID。 若要查找此字符串值,请转到 Azure 门户,选择应用程序网关或 Web 应用程序防火墙资源,然后选择网关 的属性 链接。 资源 ID 位于该窗格上。

    还可以运行以下 Azure PowerShell 命令来获取资源 ID:

    $appgw = Get-AzApplicationGateway -Name <V1 gateway name> -ResourceGroupName <resource group Name>
    $appgw.Id
    
  • subnetAddressRange。 此必需的字符串参数是您已分配或计划为包含新 V2 网关的新子网分配的 IP 地址空间。 必须使用 CIDR 表示法指定地址空间。 示例为 10.0.0.0/24

    无需提前创建此子网,但 CIDR 需要成为虚拟网络的地址空间的一部分。 如果该脚本不存在,该脚本会为你创建它。 如果存在,脚本将使用已有的。 请确保子网为空或仅包含 V2 网关,并且具有足够的可用 IP。

  • appgwName。 将此可选字符串指定为新的标准 V2 或 Web 应用程序防火墙 V2 网关的名称。 如果不提供此参数,将使用现有 V1 网关的名称并附加后缀 _V2

  • AppGWResourceGroupName。 此可选字符串是要在其中创建应用程序网关 V2 资源的资源组的名称。 默认值为 <V1-app-gw-rgname>

    确保 V1 订阅中不存在具有提供的 AppGWV2NameAppGWResourceGroupName 值的现有应用程序网关。 此参数重写现有资源。

  • sslCertificates。 此参数提供了一份用逗号分隔的对象PSApplicationGatewaySslCertificate列表,这些对象表示必须从您的 V1 网关上传到新 V2 网关的 TLS/SSL 证书。

    对于为标准 V1 或 Web 应用程序防火墙 V1 网关配置的每个 TLS/SSL 证书,可以通过以下代码所示的命令创建新 PSApplicationGatewaySslCertificate 对象 New-AzApplicationGatewaySslCertificate 。 你需要您 TLS/SSL 证书文件的路径和密码。

    仅当未为 V1 网关或 Web 应用程序防火墙配置 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(用逗号分隔)作为脚本中该参数的值。

  • sslCertificates。 使用此可选参数下载 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)
    

    对于从 Key Vault 下载的每个证书,可以通过以下代码所示的命令创建新 PSApplicationGatewaySslCertificate 对象 New-AzApplicationGatewaySslCertificate 。 你需要您 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 ,以表示 受信任的根证书 ,以便从 V2 网关对后端实例进行身份验证。

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

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

  • privateIpAddress。 使用此可选字符串提供要与新的 V2 网关关联的特定专用 IP 地址。 它必须来自为新 V2 网关分配的同一虚拟网络。 如果未指定此参数,脚本将为 V2 网关分配专用 IP 地址。

  • publicIpResourceId。 使用此可选字符串在订阅中提供要分配给新 V2 网关的现有公共 IP 地址(标准层)资源的资源 ID。 如果提供公共 IP 资源名称,请确保它处于成功状态。

    如果未指定此参数,脚本将在同一资源组中分配新的公共 IP 地址。 该名称是 V2 网关的名称加上 -IP。 如果未提供 AppGWResourceGroupName 公共 IP 地址,请确保具有名称 AppGWV2Name-IP 的公共 IP 资源不存在于 V1 订阅中名称 AppGWResourceGroupName 的资源组中。

  • validateMigration。 使用此可选开关参数,使脚本能够在 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 地址空间可用,脚本可能仍然有效。

  • 如果 NSG 或 UDR 与 V2 网关子网相关联,请确保它们符合 NSG 要求UDR 要求 ,以便成功迁移。

  • 应用程序网关子网中当前不支持虚拟网络服务终结点策略

  • 若要迁移 TLS/SSL 配置,必须指定 V1 网关中使用的所有 TLS/SSL 证书。

  • 如果为 V1 网关启用了 FIPS 模式,则它不会迁移到新的 V2 网关。

  • Web 应用程序防火墙 V2 实例是在旧的 Web 应用程序防火墙配置模式下创建的。 需要迁移到 Web 应用程序防火墙策略。

  • 默认情况下,Web 应用程序防火墙 V2 配置为使用 CRS 3.0。 由于 CRS 3.0 位于弃用的路径上,因此在迁移后升级到最新的规则集(DRS 2.2)。 有关详细信息,请参阅 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 是迁移脚本的新版本。 包括主要漏洞修复。 请确保使用 PowerShell Gallery 中的最新稳定版本。

检查下载的脚本的版本

  1. 提取 NuGet 包的内容。

  2. 打开 .PS1 文件夹中的文件,并检查 .VERSION 该值以确认下载的脚本的版本。

    <#PSScriptInfo
    .VERSION 1.0.10
    .GUID aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    .AUTHOR Microsoft Corporation
    .COMPANYNAME Microsoft Corporation
    .COPYRIGHT Microsoft Corporation. All rights reserved.
    

流量迁移

先决条件

  • 在 Azure 门户中,验证脚本是否已成功创建具有从 V1 网关迁移的确切配置的新 V2 网关。
  • 通过 V2 网关发送少量流量作为手动测试。

公共 IP 保留脚本

成功迁移配置并彻底测试新的 V2 网关后,此步骤重点介绍如何重定向实时流量。

注意

IP 迁移脚本不支持名称以数字字符开头的公共 IP 地址资源。

  • 该脚本保留 V1 中的基本公共 IP,将其转换为标准 IP,并将其附加到 V2 网关。 此作有效地将所有传入流量重定向到 V2 网关。
  • 此 IP 交换操作通常会导致 大约 1 到 5 分钟的短暂停机时间。 相应地进行规划。
  • 成功运行脚本后,公共 IP 将从应用程序网关 V1 移动到应用程序网关 V2。 应用程序网关 V1 接收新的公共 IP。
  • 在 IP 迁移期间,请勿尝试对 V1 和 V2 网关或任何关联的资源执行任何其他操作。
  • 此脚本执行的公共 IP 交换不可逆。 启动后,无法使用脚本将 IP 还原到 V1 网关。

注意

IP 迁移脚本不支持具有以数字字符开头的 DNS 名称的公共 IP 地址资源。 存在此限制,因为公共 IP 地址资源不允许以数字开头的 DNS 名称标签。 对于 在 2023 年 5 月之前创建的 V1 网关,当公共 IP 地址自动分配为表单 {GUID}.chinacloudapp.cn的默认 DNS 名称时,更有可能出现此问题。

若要继续迁移,请更新公共 IP 地址资源,以使用以字母开头的 DNS 名称标签,然后再运行脚本。 了解如何配置公共 IP DNS

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

脚本的参数

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

  • v1resourceId。 V1 网关的资源 ID,其公共 IP 将被保留并与 V2 绑定。
  • v2resourceId。 将向其分配 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 网关上禁用所有除了删除的控制平面操作。

流量迁移建议

以下是当前应用程序网关(标准)可以接收客户端流量的几个场景以及我们对每个场景的建议:

  • 自定义 DNS 区域(例如,contoso.com)指向与标准 V1 或 Web 应用程序防火墙 V1 网关关联的前端 IP 地址(使用 A 记录)。

    可以将 DNS 记录更新为指向与标准 V2 应用程序网关关联的前端 IP 或 DNS 标签。 根据 DNS 记录上配置的生存时间(TTL),所有客户端流量可能需要一段时间才能迁移到新的 V2 网关。

  • 自定义 DNS 区域(例如,contoso.com)使用 CNAME 记录指向与您的 V1 网关关联的 DNS 标签(例如,myappgw.chinanorth2.chinacloudapp.cn)

    有两种选择:

    • 如果在应用程序网关上使用公共 IP 地址,可以使用 Azure 流量管理器配置文件以增量方式将流量路由到新的 V2 网关,从而执行受控的精细迁移。

      可以通过将 V1 和 V2 应用程序网关的 DNS 标签添加到 流量管理器配置文件来使用此加权流量路由方法。 然后,在自定义 DNS 记录(例如,www.contoso.com)上将 CNAME 应用到流量管理器域(例如)。 contoso.trafficmanager.cn

    • 可以更新自定义域 DNS 记录,以指向新 V2 应用程序网关的 DNS 标签。 根据 DNS 记录上配置的 TTL,所有客户端流量可能需要一段时间才能迁移到新的 V2 网关。

  • 您的客户端连接到应用程序网关的前端 IP 地址。

    更新客户端以使用与新创建的 V2 应用程序网关关联的 IP 地址。 我们建议不要直接使用 IP 地址。 请考虑使用与您的应用程序网关关联的 DNS 名称标签(例如,yourgateway.chinanorth2.chinacloudapp.cn),您可以通过 CNAME(例如,contoso.com)将其应用到您自定义的 DNS 区域。

迁移后的任务

流量迁移成功并完全验证应用程序是否通过 V2 网关正确运行后,可以安全地解除授权并删除旧的应用程序网关 V1 资源,以避免不必要的成本。

定价注意事项

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

成本效益指南

应用程序网关 V2 具有一系列优势,例如:

  • 性能提升 5 倍。
  • 改进了 Key Vault 集成的安全性。
  • 更快地更新 Web 应用程序防火墙 V2 中的安全规则。
  • Web 应用程序防火墙自定义规则。
  • 策略关联。
  • 机器人保护。

应用程序网关 V2 还提供高可伸缩性、优化的流量路由,并与 Azure 服务无缝集成。 这些功能可以改善整体用户体验,防止在大量流量期间速度变慢,并帮助避免昂贵的数据泄露。

V1 中提供了五种变体,具体取决于层和大小:标准小型、标准中型、标准大型、Web 应用程序防火墙中型和 Web 应用程序防火墙大型。 有关你的区域的定价信息,请参阅 定价页

下表中的方案仅用于说明目的。 计算基于华北 2 区域,并针对 V1 中的具有两个实例的网关。 V2 中的可变成本基于使用量最高的三个维度之一:新连接(每秒 50 个)、永久性连接(每分钟 2,500 个)和吞吐量(每个容量单位 2.22 Mbps)。

变量 V1 固定价格/月 V2 每月固定价格 建议
标准中型 102.2 179.8 V2 可以处理比 V1 网关更多的请求,因此我们建议将多个 V1 网关合并到单个 V2 网关,以优化成本。 确保整合不超出应用程序网关的限制。 建议按照 3:1 的比例合并。
网络应用防火墙中级 183.96 262.8 与标准中型相同
标准大号 467.2 179.58 对于此变体,在大多数情况下,迁移到 V2 网关可以提供比 V1 更好的价格优势。
大型网页应用程序防火墙 654.08 262.8 与标准大号相同。

如对定价有进一步疑虑,请与您的客户成功经理(CSAM)合作,或联系我们的支持团队以获得帮助。

常见问题

有关迁移的常见问题的解答,请参阅 有关应用程序网关 V1 停用的常见问题解答