Atualizar um balanceador de carga básico com o PowerShell
Importante
Em 30 de setembro de 2025, o Basic Load Balancer será aposentado. Para obter mais informações, veja o anúncio oficial. Se você estiver usando o Basic Load Balancer, certifique-se de atualizar para o Standard Load Balancer antes da data de desativação.
O Azure Standard Load Balancer oferece um conjunto avançado de funcionalidades e alta disponibilidade por meio da redundância de zona. Para saber mais sobre o SKU do Balanceador de Carga, consulte a tabela de comparação.
Este artigo apresenta um módulo do PowerShell que cria um Balanceador de Carga Padrão com a mesma configuração do Balanceador de Carga Básico e, em seguida, associa o Conjunto de Escala de Máquina Virtual ou os membros do pool de back-end de Máquina Virtual ao novo Balanceador de Carga.
Para obter um passo a passo detalhado do módulo e do processo de atualização, consulte o seguinte vídeo:
- 03:06 - Passo-a-passo
- 32:54 - Recuperação
- 40:55 - Cenários Avançados
- 57:54 - Recursos
Visão geral da atualização
O módulo PowerShell executa as seguintes funções:
- Verifica se o cenário do Balanceador de Carga Básico fornecido é suportado para atualização.
- Faz backup da configuração do Balanceador de Carga Básico e do Conjunto de Dimensionamento de Máquina Virtual, permitindo novas tentativas em caso de falha ou se forem encontrados erros.
- Para balanceadores de carga públicos, atualiza os endereços IP públicos front-end para SKU padrão e atribuição estática
- Atualiza a configuração do Basic Load Balancer para um novo Standard Load Balancer, garantindo a configuração e a paridade de recursos.
- Migra membros do Conjunto de Escala de Máquina Virtual e do pool de back-end de Máquina Virtual do Balanceador de Carga Básico para o Balanceador de Carga Padrão.
- Cria e associa um grupo de segurança de rede ao Conjunto de Dimensionamento de Máquina Virtual ou à Máquina Virtual para garantir que o tráfego com balanceamento de carga atinja os membros do pool de back-end, seguindo a mudança do Balanceador de Carga Padrão para uma diretiva de rede de negação padrão.
- Atualiza endereços IP públicos no nível da instância associados a instâncias do Conjunto de Dimensionamento de Máquina Virtual ou de Máquina Virtual
- Atualiza Pools NAT de entrada para regras NAT de entrada para back-ends de conjunto de escala de máquina virtual, criando um novo pool de back-end para cada pool NAT migrado. Especifique
-skipUpgradeNATPoolsToNATRules
para ignorar essa atualização e use o módulo de migração do pool NAT autônomo mais tarde para obter mais opções de pool de back-end. - Registra a operação de atualização para facilitar a auditoria e a recuperação de falhas.
Aviso
A migração de Balanceadores de Carga Básicos internos em que as VMs de back-end ou instâncias VMSS não têm Endereços IP Públicos requer etapas adicionais para a conectividade de back-end com a Internet. Revisão Como devo configurar o tráfego de saída para o meu Load Balancer?
Nota
Se o Conjunto de Dimensionamento de Máquina Virtual no pool de back-end do Balanceador de Carga tiver Endereços IP Públicos em sua configuração de rede, os Endereços IP Públicos associados a cada instância do Conjunto de Dimensionamento de Máquina Virtual serão alterados quando forem atualizados para SKU Padrão. Isso ocorre porque os endereços IP públicos no nível da instância do conjunto de escala não podem ser atualizados, apenas substituídos por um novo IP público de SKU padrão. Todos os outros endereços IP públicos serão mantidos através da migração.
Nota
Se o Conjunto de Escala de Máquina Virtual atrás do Balanceador de Carga for um Cluster do Service Fabric, a migração com esse script levará mais tempo, representará maior risco para seu aplicativo e causará tempo de inatividade. Consulte as diretrizes de atualização do Balanceador de Carga de Cluster do Service Fabric para obter opções de migração.
Cenários Não Suportados
- Balanceadores de carga básicos com configurações IP frontend IPv6
- Balanceadores de carga básicos para clusters do Azure Kubernetes Services (AKS)
- Balanceadores de carga básicos com um membro do pool de back-end do Conjunto de Dimensionamento de Máquina Virtual em que uma ou mais instâncias do Conjunto de Dimensionamento de Máquina Virtual têm políticas de Proteção de Instância ProtectFromScaleSetActions habilitadas
- Migrando um Balanceador de Carga Básico para um Balanceador de Carga Padrão existente
Instalar o módulo 'AzureBasicLoadBalancerUpgrade'
Pré-requisitos
- PowerShell: Uma versão suportada do PowerShell versão 7 ou superior é recomendada para uso com o módulo AzureBasicLoadBalancerUpgrade em todas as plataformas, incluindo Windows, Linux e macOS. No entanto, o PowerShell 5.1 no Windows é suportado.
Instalação do módulo
Instalar o módulo da Galeria do PowerShell
Install-Module -Name AzureBasicLoadBalancerUpgrade -Scope CurrentUser -Repository PSGallery -Force
Etapas pré e pós-migração
Passos de pré-migração
- Valide se o cenário é suportado
- Planejar o tempo de inatividade do aplicativo durante a migração
- Desenvolva testes de conectividade de entrada e saída para o seu tráfego
- Planejar alterações de IP público no nível de instância em instâncias do Conjunto de Dimensionamento de Máquina Virtual (consulte a nota)
- [Recomendado] Crie Grupos de Segurança de Rede ou adicione regras de segurança a um Grupo de Segurança de Rede existente para os membros do pool de back-end. Permitir o tráfego através do Balanceador de Carga e qualquer outro tráfego que precisará ser explicitamente permitido em recursos públicos de SKU padrão
- [Recomendado] Prepare sua conectividade de saída, seguindo uma das seguintes abordagens descritas em Como devo configurar o tráfego de saída para meu Load Balancer?
Passos pós-migração
- Validar se a migração foi bem-sucedida
- Teste a conectividade de aplicativos de entrada por meio do Load Balancer
- Testar a conectividade de saída dos membros do pool de back-end para a Internet
- Para balanceadores de carga públicos com vários pools de back-end, crie regras de saída para cada pool de back-end
Utilize o módulo
Certifique-se de ter selecionado o ID de assinatura do Balanceador de Carga Básico executando
Select-AzSubscription
o .Select-AzSubscription -Subscription <SubscriptionId>
Encontre o Load Balancer que deseja atualizar. Registre seu nome e nome do grupo de recursos.
Examine os parâmetros do módulo básico:
- BasicLoadBalancerName [string] Required - Este parâmetro é o nome do Basic Load Balancer existente que você gostaria de atualizar
- ResourceGroupName [string] Required - Este parâmetro é o nome do grupo de recursos que contém o Basic Load Balancer
- StandardLoadBalancerName [string] Optional - Use este parâmetro para configurar opcionalmente um novo nome para o Standard Load Balancer. Se não for especificado, o nome do Balanceador de Carga Básico será reutilizado.
- RecoveryBackupPath [string] Opcional - Este parâmetro permite especificar um caminho alternativo no qual armazenar o arquivo de backup do modelo ARM do Basic Load Balancer (padrão para o diretório de trabalho atual)
Gorjeta
Parâmetros adicionais para cenários avançados e de recuperação podem ser visualizados executando
Get-Help Start-AzBasicLoadBalancerUpgrade -Detailed
Execute o
Start-AzBasicLoadBalancerUpgrade
comando, usando os exemplos a seguir para orientação.
Exemplo: validar um cenário
Validar se um Balanceador de Carga Básico é suportado para atualização
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -validateScenarioOnly
Exemplo: atualizar por nome
Atualize um Balanceador de Carga Básico para um Balanceador de Carga Padrão com o mesmo nome, fornecendo o nome do Balanceador de Carga Básico e o nome do grupo de recursos
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName>
Exemplo: atualizar, alterar nome e mostrar logs
Atualize um Balanceador de Carga Básico para um Balanceador de Carga Padrão com o nome especificado, exibindo a saída registrada na tela
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -FollowLog
Exemplo: atualizar com caminho de backup alternativo
Atualize um Balanceador de Carga Básico para um Balanceador de Carga Padrão com o nome especificado e armazene o arquivo de backup do Balanceador de Carga Básico no caminho especificado
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -RecoveryBackupPath C:\BasicLBRecovery
Exemplo: validar migração concluída
Valide uma migração concluída passando o backup do arquivo de estado do Balanceador de Carga Básico e o nome do Balanceador de Carga Padrão
Start-AzBasicLoadBalancerUpgrade -validateCompletedMigration -StandardLoadBalancerName <newStandardLBName> -basicLoadBalancerStatePath C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json
Exemplo: migrar vários Load Balancers relacionados
Migre vários Load Balancers com membros de back-end compartilhados ao mesmo tempo, geralmente quando um aplicativo tem um Load Balancer interno e externo
# build array of multiple basic load balancers
$multiLBConfig = @(
@{
'standardLoadBalancerName' = 'myStandardInternalLB01' # specifying the standard load balancer name is optional
'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName myRG -Name myBasicInternalLB01)
},
@{
'standardLoadBalancerName' = 'myStandardExternalLB02'
'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName myRG -Name myBasicExternalLB02)
}
)
# pass the array of load balancer configurations to the -MultiLBConfig parameter
Start-AzBasicLoadBalancerUpgrade -MultiLBConfig $multiLBConfig
Exemplo: repetição da migração do conjunto de escala da máquina virtual com falha
Repita uma atualização com falha para o balanceador de carga de um conjunto de dimensionamento de máquina virtual (devido a erro ou terminação de script) fornecendo o arquivo de estado de backup do Balanceador de Carga Básico e do Conjunto de Escala de Máquina Virtual
Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json -FailedMigrationRetryFilePathVMSS C:\RecoveryBackups\VMSS_myVMSS_rg-basiclbrg_20220912T1740032148.json
Exemplo: nova tentativa de migração de máquina virtual com falha
Repita uma atualização com falha para um balanceador de carga de VM (devido a erro ou encerramento de script) fornecendo o arquivo de estado de backup do Balanceador de Carga Básico
Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json
Perguntas comuns
Como posso listar os Load Balancers Básicos a serem migrados no meu ambiente?
Uma maneira de obter uma lista dos Balanceadores de Carga Básicos que precisam ser migrados em seu ambiente é usar uma consulta do Azure Resource Graph. Uma consulta simples como esta listará todos os Balanceadores de Carga Básicos que você tem acesso para ver.
Resources
| where type == 'microsoft.network/loadbalancers' and sku.name == 'Basic'
'' Também escrevemos uma consulta mais complexa que avalia a prontidão de cada Balanceador de Carga Básico para migração na maioria dos critérios que este módulo verifica durante a validação. A consulta Gráfico de Recursos pode ser encontrada em nosso projeto GitHub ou aberta no Azure Resource Graph Explorer.
Essa migração causará tempo de inatividade para meu aplicativo?
Sim, como o Basic Load Balancer precisa ser removido antes que o novo Standard Load Balancer possa ser criado, haverá tempo de inatividade para seu aplicativo. Consulte Quanto tempo demora a atualização?
O módulo migrará meu endereço IP frontend para o novo Standard Load Balancer?
Sim, para balanceadores de carga públicos e internos, o módulo garante que os endereços IP front-end sejam mantidos. Para IPs públicos, o IP é convertido em um IP estático antes da migração. Para front-ends internos, o módulo tenta reatribuir o mesmo endereço IP liberado quando o Basic Load Balancer foi excluído. Se o IP privado não estiver disponível, o script falhará (consulte O que acontece se minha atualização falhar no meio da migração?).
Quanto tempo demora a atualização?
A atualização normalmente leva alguns minutos para que o script seja concluído. Os seguintes fatores podem levar a tempos de atualização mais longos:
- Complexidade da configuração do balanceador de carga
- Número de membros do pool de back-end
- Contagem de instâncias de Conjuntos de Dimensionamento de Máquinas Virtuais ou Máquinas Virtuais associadosf
- Cluster do Service Fabric: as atualizações para clusters do Service Fabric levam cerca de uma hora em testes
Tenha em mente o tempo de inatividade e planeje o failover, se necessário.
O script migra meus membros do pool de back-end do meu Balanceador de Carga Básico para o Balanceador de Carga Padrão recém-criado?
Sim. O script do Azure PowerShell migra os Conjuntos de Escala de Máquina Virtual e as Máquinas Virtuais para os pools de back-end do Balanceador de Carga Padrão recém-criados.
Quais componentes do balanceador de carga são migrados?
O script migra o seguinte do Basic Load Balancer para o Standard Load Balancer:
Balanceadores de carga públicos e privados:
- Sondas de Saúde:
- Todos os testes são migrados para o novo Standard Load Balancer
- Regras de balanceamento de carga:
- Todas as regras de balanceamento de carga são migradas para o novo Standard Load Balancer
- Regras NAT de entrada:
- Todas as regras NAT criadas pelo usuário são migradas para o novo Standard Load Balancer
- Pools NAT de entrada:
- Por padrão, os pools NAT são atualizados para regras NAT
- Para migrar pools NAT, especifique o
-skipUpgradeNATPoolsToNATRules
parâmetro ao atualizar
- Pools de back-end:
- Todos os pools de back-end são migrados para o novo Standard Load Balancer
- Todas as interfaces de rede e configurações IP do Conjunto de Dimensionamento de Máquina Virtual e da Máquina Virtual são migradas para o novo Balanceador de Carga Padrão
- Se um Conjunto de Dimensionamento de Máquina Virtual estiver usando a política de Atualização Contínua, o script atualizará a política de atualização do Conjunto de Dimensionamento de Máquina Virtual para "Manual" durante o processo de migração e a reverterá para "Rolagem" após a conclusão da migração.
- Endereços IP públicos ao nível da instância
- Para Máquinas Virtuais e Conjuntos de Dimensionamento de Máquinas Virtuais, converte IPs Públicos anexados de SKU Básico para Padrão. Nota, os IPs públicos da instância do Scale set mudam durante a atualização; IPs de máquina virtual não.
- Tags do Balanceador de Carga Básico para o Balanceador de Carga Padrão
Balanceador de carga público:
- Configuração de IP frontend público
- Converte o IP público em um IP estático, se dinâmico
- Atualiza o SKU IP público para Padrão, se Básico
- Atualize todos os IPs públicos associados para o novo Standard Load Balancer
- Regras de saída:
- Os balanceadores de carga básicos não suportam regras de saída configuradas. O script cria uma regra de saída no balanceador de carga padrão para preservar o comportamento de saída do balanceador de carga básico. Para obter mais informações sobre regras de saída, consulte Regras de saída.
- Grupo de segurança de rede
- O Balanceador de Carga Básico não requer um grupo de segurança de rede para permitir a conectividade de saída. Caso não haja nenhum grupo de segurança de rede associado ao Conjunto de Dimensionamento de Máquina Virtual, um novo grupo de segurança de rede é criado para preservar a mesma funcionalidade. Esse novo grupo de segurança de rede está associado às interfaces de rede de membros do pool de back-end do Conjunto de Escala de Máquina Virtual. Permite o mesmo balanceamento de carga, regras, portas e protocolos e preserva a conectividade de saída.
Balanceador de carga interno:
- Configuração de IP frontend privado
Nota
Os grupos de segurança de rede não são configurados como parte da atualização do Balanceador de Carga Interno. Para saber mais sobre NSGs, consulte Grupos de segurança de rede
Como faço para migrar quando meus membros do pool de back-end pertencem a vários Load Balancers?
Em um cenário em que os membros do pool de back-end também são membros de pools de back-end em outro Load Balancer, como quando você tem Load Balancers internos e externos para o mesmo aplicativo, os Basic Load Balancers precisam ser migrados ao mesmo tempo. Tentar migrar os Load Balancers um de cada vez tentaria misturar recursos de SKU Básico e Padrão, o que não é permitido. O script de migração suporta isso passando vários Balanceadores de Carga Básicos para a mesma execução de script usando o -MultiLBConfig
parâmetro.
Como posso validar que uma migração foi bem-sucedida?
No final de sua execução, o módulo de atualização executa as seguintes validações, comparando o Basic Load Balancer com o novo Standard Load Balancer. Em uma migração com falha, essa mesma operação pode ser chamada usando os -validateCompletedMigration
parâmetros e -basicLoadBalancerStatePath
para determinar o estado de configuração do Standard Load Balancer (se um tiver sido criado). O arquivo de log criado durante a migração também fornece detalhes abrangentes sobre a operação de migração e quaisquer erros.
- O Standard Load Balancer existe e seu SKU é 'Standard'
- A contagem de configurações de IP front-end corresponde e que os endereços IP são os mesmos
- A contagem de pools de back-end e suas associações corresponde
- A contagem de regras de balanceamento de carga corresponde
- A contagem de sondas de saúde corresponde
- A contagem de regras NAT de entrada corresponde
- A contagem de pools NAT de entrada corresponde
- Os balanceadores de carga padrão externos têm uma regra de saída configurada
- Os membros do pool de back-end do Balanceador de Carga Padrão Externo têm Grupos de Segurança de Rede associados
Como devo configurar o tráfego de saída para o meu Load Balancer?
Os Load Balancers de SKU padrão não permitem acesso de saída padrão para seus membros do pool de back-end. Permitir o acesso de saída à internet requer mais etapas.
Para Load Balancers externos, você pode usar Regras de Saída para habilitar explicitamente o tráfego de saída para os membros do pool. Se você tiver um único pool de back-end, configuraremos automaticamente uma Regra de Saída para você durante a migração; se você tiver mais de um pool de back-end, precisará criar manualmente suas Regras de Saída para especificar alocações de porta.
Para balanceadores de carga internos, as regras de saída não são uma opção porque não há nenhum endereço IP público para SNAT através. Isso deixa algumas opções a considerar:
- Gateway NAT: os gateways NAT são a abordagem recomendada do Azure para o tráfego de saída na maioria dos casos. No entanto, os Gateways NAT exigem que a sub-rede anexada não tenha recursos básicos de rede SKU, o que significa que você precisará ter migrado todos os seus Load Balancers e Endereços IP Públicos antes de poder usá-los. Por esse motivo, recomendamos o uso de uma abordagem de duas etapas em que você primeiro usa uma das seguintes abordagens para conectividade de saída e, em seguida , alterna para Gateways NAT assim que as migrações básicas de SKU forem concluídas.
- Dispositivo Virtual de Rede: Encaminhe o seu tráfego através de uma Ferramenta Virtual de Rede, como uma Firewall do Azure, que, por sua vez, encaminhará o seu tráfego para a Internet. Esta opção é ideal se já tiver uma Ferramenta Virtual de Rede configurada.
- Balanceador de Carga Externo Secundário: Ao adicionar um Balanceador de Carga externo secundário aos seus recursos de back-end, você pode usar o Balanceador de Carga externo para tráfego de saída configurando regras de saída. Se esse Balanceador de Carga externo não tiver regras de balanceamento de carga, regras NAT ou pools de NAT de entrada configurados, seus recursos de back-end permanecerão isolados em sua rede interna para tráfego de entrada - consulte Configuração do balanceador de carga somente de saída. Com essa opção, o Load Balancer externo pode ser configurado antes da migração do SKU básico para o padrão e migrado ao mesmo tempo que o balanceador de carga interno usando o
-MultiLBConfig
parâmetro - Endereços IP Públicos: Por fim, os Endereços IP Públicos podem ser adicionados diretamente às suas Máquinas Virtuais ou instâncias do Conjunto de Dimensionamento de Máquinas Virtuais. No entanto, esta opção não é recomendada devido à área de superfície de segurança adicional e às despesas de adição de endereços IP públicos.
O que acontece se minha atualização falhar no meio da migração?
O módulo é projetado para acomodar falhas, seja devido a erros não tratados ou terminação de script inesperada. O design da falha é uma abordagem de 'fail forward', onde em vez de tentar voltar para o Basic Load Balancer, você deve corrigir o problema que está causando a falha (consulte a saída do erro ou o arquivo de log) e tentar novamente a migração, especificando os -FailedMigrationRetryFilePathLB <BasicLoadBalancerBackupFilePath> -FailedMigrationRetryFilePathVMSS <VMSSBackupFile>
parâmetros. Para balanceadores de carga públicos, como o SKU de Endereço IP Público foi atualizado para Padrão, mover o mesmo IP de volta para um Balanceador de Carga Básico não será possível.
Assista a um vídeo do processo de recuperação:
Se a migração com falha foi direcionada a vários balanceadores de carga ao mesmo tempo, usando o -MultiLBConfig
parâmetro, recupere cada Load Balancer individualmente usando o mesmo processo abaixo.
O procedimento básico de recuperação de falhas é:
- Resolva a causa da falha de migração. Verifique o arquivo de
Start-AzBasicLoadBalancerUpgrade.log
log para obter detalhes - Remova o novo Standard Load Balancer (se criado). Dependendo do estágio da migração que falhou, talvez seja necessário remover a referência do Balanceador de Carga Padrão do Conjunto de Escala de Máquina Virtual ou das interfaces de rede da Máquina Virtual (configurações IP) e das Sondas de Integridade para remover o Balanceador de Carga Padrão.
- Localize o arquivo de backup de estado do Basic Load Balancer. Esse arquivo estará no diretório onde o script foi executado ou no caminho especificado com o
-RecoveryBackupPath
parâmetro durante a execução com falha. O ficheiro tem o seguinte nome:State_<basicLBName>_<basicLBRGName>_<timestamp>.json
- Execute novamente o script de migração, especificando os parâmetros e
-FailedMigrationRetryFilePathVMSS <VMSSBackupFile>
(para back-ends definidos de-FailedMigrationRetryFilePathLB <BasicLoadBalancerbackupFilePath>
Escala de Máquina Virtual) em vez de -BasicLoadBalancerName ou passando o Balanceador de Carga Básico pelo pipeline