从入站 NAT 规则版本 1 迁移到版本 2

入站 NAT 规则用于将流量从负载均衡器的前端转发到后端池中的一个或多个实例。 这些规则在负载均衡器的前端 IP 地址和后端实例之间提供 1:1 映射。 当前有两个版本的入站 NAT 规则,版本 1 和版本 2。

NAT 规则版本 1

版本 1 是将 Azure 负载均衡器的前端端口分配给每个后端实例的旧方法。 规则将应用于后端实例的网络接口卡 (NIC)。 对于 Azure 虚拟机规模集实例,当纵向扩展/缩减新实例时,会自动创建/删除入站 NAT 规则。

NAT 规则版本 2

入站 NAT 规则的版本 2 提供与版本 1 相同的功能集,并具有额外的优势。

  • 简化部署体验和优化更新。
    • 入站 NAT 规则现在面向负载均衡器的后端池,无需再引用虚拟机的 NIC。 以前在版本 1 上,每当入站 NAT 规则发生更改时,都需要更新负载均衡器和虚拟机的 NIC。 版本 2 只需要调用负载均衡器的配置一次,从而可优化更新。
  • 轻松检索入站 NAT 规则和后端实例之间的端口映射。
    • 使用旧版产品/服务,若要检索入站 NAT 规则与虚拟机实例之间的端口映射,该规则需要与虚拟机的 NIC 相关联。 版本 2 将规则和后端实例之间的端口映射直接注入到负载均衡器的配置中。

如何知道是否正在使用入站 NAT 规则的版本 1?

确定部署是否在使用功能的版本 1 的最简单方法是检查负载均衡器的配置。 如果填充了配置“InboundNATRule”中的 InboundNATPool 属性或 backendIPConfiguration 属性,则部署使用的是入站 NAT 规则的版本 1。

如何从版本 1 迁移到版本 2?

在迁移之前,请务必查看以下信息:

  • 迁移到入站 NAT 规则版本 2 会导致流经 NAT 规则的活动流量停机。 在迁移过程中,流经负载均衡器规则出站规则的流量不会受到影响。
  • 规划后端池中的最大实例数。 由于版本 2 以负载均衡器的后端池为目标,因此需要为 NAT 规则的前端分配足够数量的端口。
  • 每个后端实例都会在新 NAT 规则中配置的端口上公开。
  • 如果多个 NAT 规则具有重叠的端口范围或具有相同的后端端口,则不能存在多个此类规则。
  • NAT 规则和负载均衡规则不能共享同一后端端口。

手动迁移

需要执行以下三个步骤才能迁移到入站 NAT 规则的版本 2

  1. 在负载均衡器配置上删除入站 NAT 规则的版本 1。
  2. 删除对虚拟机或虚拟机规模集配置上的 NAT 规则的引用。
    1. 需要更新所有虚拟机规模集实例。
  3. 部署入站 NAT 规则的版本 2。

虚拟机

以下步骤用于将虚拟机的入站 NAT 规则从版本 1 迁移到版本 2。


az network lb inbound-nat-rule delete -g MyResourceGroup --lb-name MyLoadBalancer --name NATruleV1

az network nic ip-config inbound-nat-rule remove -g MyResourceGroup --nic-name MyNic -n MyIpConfig --inbound-nat-rule MyNatRule 

az network lb inbound-nat-rule create -g MyResourceGroup --lb-name MyLoadBalancer -n MyNatRule --protocol Tcp --frontend-port-range-start 201 --frontend-port-range-end 500 --backend-port 22 

虚拟机规模集

以下步骤用于将虚拟机规模集的入站 NAT 规则从版本 1 迁移到版本 2。 它假定虚拟机规模集的升级模式设置为“手动”。 有关详细信息,请参阅“Azure 中虚拟机规模集的业务流程模式”。


az network lb inbound-nat-pool delete �-g MyResourceGroup --lb-name MyLoadBalancer -n MyNatPool  

az vmss update -g MyResourceGroup -n MyVMScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerInboundNatPools  

az vmss update-instances --instance-ids '*' --resource-group MyResourceGroup --name MyVMScaleSet 

az network lb inbound-nat-rule create -g MyResourceGroup --lb-name MyLoadBalancer -n MyNatRule --protocol Tcp --frontend-port-range-start 201 --frontend-port-range-end 500 --backend-port 22 

使用虚拟机规模集的自动化脚本进行迁移

迁移过程将重复使用现有后端池,其成员身份与要迁移的 NAT 池匹配;如果未找到匹配的后端池,脚本将退出(不进行更改)。 或者,使用 -backendPoolReuseStrategy 参数始终创建新的后端池 (NoReuse) 或在不存在匹配的后端池时 (OptionalFirstMatch) 创建新的。 在迁移后,可以更新后端池和 NAT 规则关联,以匹配偏好。

先决条件

在开始迁移过程之前,请确保满足以下先决条件:

安装 AzureLoadBalancerNATPoolMigration 模块

使用以下命令之一从 PowerShell 库安装 AzureLoadBalancerNATPoolMigration 模块:

# Install the AzureLoadBalancerNATPoolMigration module

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

将 NAT 池升级到 NAT 规则

安装 azureLoadBalancerNATPoolMigration 模块后,采取以下步骤将 NAT 池升级到 NAT 规则:

  1. 使用 Connect-AzAccount -Environment AzureChinaCloud 连接到 Azure。

  2. 收集 NAT 规则升级的目标负载均衡器名称及其资源群名称。

  3. 使用资源名称运行迁移命令,替换 <loadBalancerResourceGroupName><loadBalancerName> 的占位符:

    # Run the migration command 
    
    Start-AzNATPoolMigration -ResourceGroupName <loadBalancerResourceGroupName> -LoadBalancerName <loadBalancerName>
    
    

后续步骤