Migrar das regras NAT de entrada versão 1 para a versão 2

Uma regra NAT de entrada é usada para encaminhar o tráfego do frontend de um balanceador de carga para uma ou mais instâncias no pool de backend. Estas regras fornecem um mapeamento 1:1 entre o endereço IP frontend do balanceador de carga e as instâncias backend. Atualmente, existem duas versões das regras NAT de entrada, versão 1 e versão 2.

Importante

A 30 de setembro de 2027, os Pools de NAT de Entrada (a funcionalidade específica do Conjuntos de Dimensionamento de Máquinas Virtuais do Azure das regras de NAT de Entrada V1) serão descontinuados. Se estiver atualmente a utilizar Inbound NAT Pools com Conjuntos de Dimensionamento de Máquinas Virtuais, migre para as regras NAT de entrada v2 antes da data de descontinuação. As regras NAT de entrada de VM única V1 não são afetadas por esta aposentação e não precisam de ser migradas.

Regra NAT versão 1

A versão 1 das regras de NAT de entrada inclui duas características distintas:

  • Regras NAT de entrada de máquina virtual única — Fornece um mapeamento de portas 1:1 entre um IP/porta de front-end do balanceador de carga e uma máquina virtual específica. As regras são aplicadas diretamente à placa de interface de rede (NIC) da VM. Estes não estão a ser reformados e não precisam de ser migrados.

  • Conjuntos de NAT de entrada (apenas para Conjuntos de Dimensionamento de Máquinas Virtuais) — Esta é a abordagem herdada para atribuir a porta de front-end de um Balanceador de Carga do Azure a cada instância de back-end. As regras de NAT de entrada são automaticamente criadas e eliminadas por cada instância do Virtual Machine Scale Set à medida que o conjunto de escalas aumenta e diminui. Os NAT Pools são definidos no balanceador de carga e referenciados pela configuração Conjuntos de Dimensionamento de Máquinas Virtuais NIC através da propriedade loadBalancerInboundNatPools. Estas serão retiradas a 30 de setembro de 2027 e devem ser migradas para as regras NAT de entrada V2.

Regra NAT versão 2

A versão 2 das regras NAT de entrada oferece o mesmo conjunto de funcionalidades que a versão 1, com benefícios adicionais.

  • Experiência de implementação simplificada e atualizações otimizadas.
    • As regras NAT de entrada agora visam o pool backend do balanceador de carga e já não requerem referência na NIC da máquina virtual. Anteriormente, na versão 1, tanto o balanceador de carga como a NIC da máquina virtual precisavam de ser atualizados sempre que a regra do NAT de entrada era alterada. A versão 2 requer apenas uma chamada na configuração do balanceador de carga, resultando em atualizações otimizadas.
  • Recupera facilmente o mapeamento de portas entre as regras NAT de entrada e as instâncias do backend.
    • Com a oferta legada, para recuperar o mapeamento de portas entre uma regra NAT de entrada e uma instância de máquina virtual, a regra teria de estar correlacionada com a NIC da máquina virtual. A versão 2 injeta o mapeamento de portas entre a regra e a instância do backend diretamente na configuração do balanceador de carga.

Como sei se estou a usar a versão 1 das regras de NAT de entrada?

A forma mais fácil de identificar se as suas implementações estão a usar a versão 1 da funcionalidade é inspecionar a configuração do balanceador de carga. As regras NAT da versão 1 têm um valor Type de Azure Virtual Machine, com um valor de Máquina virtual de destino definido.

Captura de ecrã da configuração da regra NAT versão 1 no portal Azure.

Para regras NAT da versão 2, o valor Type será Backend pool com um valor de Target backend pool definido.

Captura de ecrã da configuração da regra NAT versão 2 no portal Azure.

Para determinar programaticamente se uma implementação está a usar a versão 1 das regras NAT de entrada, inspecione a configuração do balanceador de carga usando a CLI do Azure ou PowerShell. Se qualquer uma das backendIPConfiguration propriedades dentro da InboundNATRule configuração estiver preenchida, então a implementação é a versão 1 das regras NAT de entrada. As regras da versão 2 terão a backendAddressPool propriedade em vez da propriedade backendIPConfiguration .

Como sei se estou a usar Inbound NAT Pools?

Para verificar se o seu balanceador de carga tem Pools de NAT de entrada configurados:

az network lb inbound-nat-pool list -g MyResourceGroup --lb-name MyLoadBalancer

Se os comandos acima devolverem algum resultado, o seu balanceador de carga está a usar Pools de NAT de entrada e deve ser migrado.

A diferença principal é o nome da propriedade ARM: os pools de NAT de entrada aparecem na propriedade inboundNatPools no balanceador de carga, enquanto as regras de NAT de entrada aparecem na propriedade inboundNatRules. Se o seu balanceador de carga tiver uma matriz inboundNatPools não vazia, está a utilizar conjuntos de NAT de entrada e tem de ser migrado para a versão V2 antes de 30 de setembro de 2027.

Note

Se o seu balanceador de carga tiver apenas regras de NAT de entrada de VM (Tipo = "Máquina Virtual do Azure") e não tiver conjuntos de NAT de entrada, não é necessária qualquer migração. As regras de VM individual V1 não estão a ser descontinuadas.

Como migrar dos Inbound NAT Pools para a versão 2?

Antes de migrar, é importante rever as seguintes informações:

  • A migração para a versão 2 das regras de NAT de entrada provoca interrupção no tráfego ativo em curso que está a fluir através das regras de NAT. O tráfego que passa pelas regras do balanceador de carga ou pelas regras de saída não é afetado durante o processo de migração.
  • Planeia o número máximo de instâncias num pool de backend. Como a versão 2 visa o pool de backend do balanceador de carga, é necessário alocar um número suficiente de portas para o frontend da regra NAT.
  • Cada instância backend é exposta na porta configurada na nova regra NAT.
  • Múltiplas regras NAT não podem existir se tiverem uma gama de portas sobrepostas ou a mesma porta backend.
  • As regras NAT e as regras de balanceamento de carga não podem partilhar a mesma porta backend.

Migração Manual

Os três passos seguintes migram os Pools de NAT de entrada para a versão 2 das regras de NAT de entrada. Uma única regra de NAT de entrada VM V1 não exige estes passos.

  1. Elimine o Pool de NAT de entrada na configuração do balanceador de carga.
  2. Remova a loadBalancerInboundNatPools referência na configuração da interface de rede em escala de máquina virtual.
    • Atualize todas as instâncias do conjunto de escalas de máquinas virtuais.
  3. Implementar a versão 2 das regras de NAT de entrada no conjunto de back-end do balanceador de carga.

Conjunto de dimensionamento de máquina virtual

Importante

Este é o caminho de migração obrigatório para a descontinuação dos Inbound NAT Pools. Todas as implementações do Virtual Machine Scale Set que utilizam Inbound NAT Pools devem concluir esta migração antes de 30 de setembro de 2027.

Os passos seguintes são utilizados para efetuar a migração da versão 1 para a versão 2 das regras de NAT de entrada de um conjunto de dimensionamento de máquinas virtuais. Assume que o modo de atualização do conjunto de escalas da máquina virtual está definido para Manual. Para mais informações, veja Modos de orquestração para Conjuntos de Dimensionamento de Máquinas Virtuais em 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 --backend-address-pool MybackendPool

Verificar a migração

Depois de completar qualquer um dos procedimentos, confirme os três resultados:

  • O balanceador de carga já não tem Pools de NAT de entrada. az network lb inbound-nat-pool list -g MyResourceGroup --lb-name MyLoadBalancer retorna um resultado vazio, ou $slb.InboundNatPools está vazio no PowerShell.
  • A nova regra da versão 2 visa o pool de backend pretendido. Confirme que a regra mostra um valor de Target backend pool no portal do Azure, ou que backendAddressPool está preenchido na configuração da regra.
  • Existem os mapeamentos de portos esperados. No portal Azure, abra a nova regra NAT de entrada e reveja a secção de mapeamento de portas para cada instância backend.

Migração com script de automação para Virtual Machine Scale Set

O processo de migração irá reutilizar pools backend existentes com membros correspondentes aos NAT Pools a migrar; se não for encontrado um pool de backend correspondente, o script sai (sem fazer alterações). Alternativamente, use o -backendPoolReuseStrategy parâmetro para criar sempre novos pools backend (NoReuse) ou criar um novo pool backend se não existir um correspondente (OptionalFirstMatch). Os pools de backend e as associações de regras NAT podem ser atualizados após a migração para corresponder à sua preferência.

Prerequisites

Antes de iniciar o processo de migração, certifique-se de que os seguintes pré-requisitos são cumpridos:

Instale o AzureLoadBalancerNATPoolMigration módulo

Com o seguinte comando, instale o módulo AzureLoadBalancerNATPoolMigration a partir do Galeria do PowerShell:

# Install the AzureLoadBalancerNATPoolMigration module

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

Atualizar Pools de NAT para Regras de NAT

Com o azureLoadBalancerNATPoolMigration módulo instalado, atualize os seus NAT Pools para NAT Rules com os seguintes passos:

  1. Liga-te a Azure com Connect-AzAccount.

  2. Reúna o nome do balanceador de carga de destino para a atualização das regras de NAT e o do grupo de recursos respetivo.

  3. Execute o comando de migração, substituindo os marcadores <loadBalancerResourceGroupName> e <loadBalancerName> pelos nomes dos seus recursos:

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

Passos seguintes