Implantar um aplicativo de pilha dupla IPv6 usando o Standard Internal Load Balancer no Azure usando PowerShell

Este artigo mostra como implantar um aplicativo de pilha dual (IPv4 e IPv6) no Azure que inclui uma rede virtual e uma sub-rede de pilha dual, um balanceador de carga interno Standard com configurações de front-end dual (IPv4 e IPv6), VMs com adaptadores de rede que têm uma configuração de IP dual, um grupo de segurança de rede e IPs públicos.

O procedimento para criar um Load Balancer interno com capacidade para IPv6 é quase idêntico ao processo de criação de um IPv6 para a Internet Load Balancer descritoaqui. As únicas diferenças para a criação de um balanceador de carga interno estão na configuração de front-end, conforme ilustrado no exemplo do PowerShell abaixo:

 $frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
 -Name "dsLbFrontEnd_v6" `
 -PrivateIpAddress "fd00:db8:deca:deed::100" `
 -PrivateIpAddressVersion "IPv6" `
 -Subnet $DsSubnet

As alterações que fazem a configuração acima ser a de um front-end do balanceador de carga interno são:

  • O PrivateIpAddressVersion é especificado como "IPv6"
  • O -PublicIpAddress argumento foi omitido ou substituído por -PrivateIpAddress. Observe que o endereço privado deve estar no intervalo do espaço de IP de sub-rede no qual o balanceador de carga interno será implantado. Se um estático -PrivateIpAddress for omitido, o próximo endereço IPv6 gratuito será selecionado na sub-rede na qual o balanceador de carga interno é implantado.
  • A sub-rede de pilha dupla na qual o balanceador de carga interno será implantado é especificada com um -Subnetou -SubnetId argumento.

Azure Cloud Shell

O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Link
Selecione Experimentar no canto superior direito de um bloco de código ou de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. Captura de tela que mostra um exemplo de Experimente para o Azure Cloud Shell.
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. Botão para iniciar o Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. Captura de tela que mostra o botão Cloud Shell no portal do Azure

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e no Linux, ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou o comando.

Se você optar por instalar e usar o PowerShell localmente, este artigo exigirá o módulo do Azure PowerShell versão 6.9.0 ou posterior. Execute Get-Module -ListAvailable Az para localizar a versão instalada. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount para criar uma conexão com o Azure.

Criar um grupo de recursos

Antes de criar sua rede virtual de pilha dupla, você deve criar um grupo de recursos com New-AzResourceGroup. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização Leste dos EUA:

$rg = New-AzResourceGroup `
  -ResourceGroupName "dsStd_ILB_RG"  `
  -Location "east us"

Criar endereços IP públicos IPv4 e IPv6

Para acessar suas máquinas virtuais na Internet, você precisa de endereços IP públicos IPv4 e IPv6 para o balanceador de carga. Crie endereços IP públicos com New-AzPublicIpAddress. O exemplo a seguir cria o endereço IP público IPv4 e IPv6 denominado RdpPublicIP_1 e RdpPublicIP_2 no grupo de recursos dsStd_ILB_RG :

$RdpPublicIP_1 = New-AzPublicIpAddress `
  -Name "RdpPublicIP_1" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv4  `
  -sku Standard
  
$RdpPublicIP_2 = New-AzPublicIpAddress `
  -Name "RdpPublicIP_2" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -AllocationMethod Static `
  -IpAddressVersion IPv6  `
  -sku Standard

Criar a rede virtual e a sub-rede

Crie uma rede virtual usando New-AzVirtualNetwork com pilha dupla uma configuração de sub-rede usando New-AzVirtualNetworkSubnetConfig. O exemplo a seguir cria uma rede virtual chamada dsVnet com uma sub-rede chamada mySubnet.

# Create dual stack subnet config
$DsSubnet = New-AzVirtualNetworkSubnetConfig `
  -Name "dsSubnet" `
  -AddressPrefix "10.0.0.0/24","fd00:db8:deca:deed::/64"

# Create the virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsVnet" `
  -AddressPrefix "10.0.0.0/16","fd00:db8:deca::/48"  `
  -Subnet $DsSubnet

#Refresh the fully populated subnet for use in load balancer frontend configuration
$DsSubnet = get-AzVirtualNetworkSubnetconfig -name dsSubnet -VirtualNetwork $vnet

Criar o Standard Load Balancer

Nesta seção, você configura o IP de front-end duplo (IPv4 e IPv6) e o pool de endereços de back-end para o balanceador de carga e, em seguida, cria um balanceador de carga padrão.

Criar um IP de front-end

Crie um IP de front-end com New-AzLoadBalancerFrontendIpConfig. O exemplo a seguir cria as configurações de IP de front-end IPv4 e IPv6 chamadas dsLbFrontEnd_v4 e dsLbFrontEnd_v6:

$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v4" `
  -PrivateIpAddress "10.0.0.100"  `
  -PrivateIpAddressVersion "IPv4"   `
  -Subnet $DsSubnet

$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
  -Name "dsLbFrontEnd_v6" `
  -PrivateIpAddress "fd00:db8:deca:deed::100"  `
  -PrivateIpAddressVersion "IPv6"   `
  -Subnet $DsSubnet

Configurar o pool de endereços de back-end

Crie um pool de endereços de back-end com New-AzLoadBalancerBackendAddressPoolConfig. As VMs são anexadas a este pool de back-end nas etapas restantes. O seguinte exemplo cria pools de endereços de back-end chamados dsLbBackEndPool_v4 e dsLbBackEndPool_v6 para incluir VMs com configurações de adaptadores de rede IPv4 e IPv6:

$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v4"

$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig -Name "dsLbBackEndPool_v6"

Criar uma regra de balanceador de carga

Uma regra de balanceador de carga é usada para definir como o tráfego é distribuído para as VMs. Defina a configuração de IP de front-end para o tráfego de entrada e o pool de IPs de back-end para receber o tráfego, junto com as portas de origem e de destino necessárias. Para ter certeza de que apenas VMs íntegras recebem tráfego, você pode, opcionalmente, definir a investigação de integridade. O Load Balancer básico usa uma investigação de IPv4 para avaliar a integridade dos pontos de extremidade IPv4 e IPv6 nas VMs. O Standard Load Balancer inclui suporte para investigações de integridade IPv6 explicitamente.

Crie uma regra de balanceador de carga com Add-AzLoadBalancerRuleConfig. O seguinte exemplo cria regras de balanceador de carga chamadas dsLBrule_v4 e dsLBrule_v6 e equilibra o tráfego na porta TCP80 para as configurações de IP de front-end IPv4 e IPv6:

$lbrule_v4 = New-AzLoadBalancerRuleConfig `
  -Name "dsLBrule_v4" `
  -FrontendIpConfiguration $frontendIPv4 `
  -BackendAddressPool $backendPoolv4 `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80

$lbrule_v6 = New-AzLoadBalancerRuleConfig `
  -Name "dsLBrule_v6" `
  -FrontendIpConfiguration $frontendIPv6 `
  -BackendAddressPool $backendPoolv6 `
  -Protocol Tcp `
  -FrontendPort 80 `
  -BackendPort 80

Criar um balanceador de carga

Crie um Standard Load Balancer com New-AzLoadBalancer. O seguinte exemplo cria um Standard Load Balancer público chamado myLoadBalancer usando as configurações de IP de front-end IPv4 e IPv6, pools de back-end e regras de balanceamento de carga criadas nas etapas anteriores:

$lb = New-AzLoadBalancer  `
  -ResourceGroupName $rg.ResourceGroupName  `
  -Location $rg.Location  `
  -Name  "MyInternalLoadBalancer"  `
  -Sku "Standard"  `
  -FrontendIpConfiguration  $frontendIPv4,$frontendIPv6  `
  -BackendAddressPool  $backendPoolv4,$backendPoolv6  `
  -LoadBalancingRule  $lbrule_v4,$lbrule_v6

Criar recursos da rede

Antes de implantar algumas VMs e pode testar seu balanceador, você deve criar recursos da rede de suporte - conjunto de disponibilidade, grupo de segurança de rede, rede virtual e NICs virtuais.

Criar um conjunto de disponibilidade

Para melhorar a alta disponibilidade do seu aplicativo, coloque suas VMs em um conjunto de disponibilidade.

Crie um conjunto de disponibilidade com New-AzAvailabilitySet. O seguinte exemplo cria um conjunto de disponibilidade chamadodsAVset:

$avset = New-AzAvailabilitySet `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsAVset" `
  -PlatformFaultDomainCount 2 `
  -PlatformUpdateDomainCount 2 `
  -Sku aligned

Criar um grupo de segurança de rede

Crie um grupo de segurança de rede para as regras que controlarão a comunicação de entrada e saída em sua VNET.

Criar uma regra do grupo de segurança de rede para a porta 3389

Crie uma regra do grupo de segurança de rede para permitir conexões RDP pela porta 3389 com New-AzNetworkSecurityRuleConfig.

$rule1 = New-AzNetworkSecurityRuleConfig `
  -Name 'myNetworkSecurityGroupRuleRDP' `
  -Description 'Allow RDP' `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 100 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 3389

Criar uma regra do grupo de segurança de rede para a porta 80

Crie uma regra do grupo de segurança de rede para permitir conexões da Internet pela porta 80 com New-AzNetworkSecurityRuleConfig.

$rule2 = New-AzNetworkSecurityRuleConfig `
  -Name 'myNetworkSecurityGroupRuleHTTP' `
  -Description 'Allow HTTP' `
  -Access Allow `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 200 `
  -SourceAddressPrefix * `
  -SourcePortRange 80 `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80

Criar um grupo de segurança de rede

Crie um grupo de segurança de rede com New-AzNetworkSecurityGroup.

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -Name "dsNSG1"  `
  -SecurityRules $rule1,$rule2

Criar NICs

Crie as NICs virtuais com New-AzNetworkInterface. O exemplo a seguir cria duas NICs virtuais com as configurações de IPv4 e IPv6. (Uma NIC virtual para cada VM criada para seu aplicativo nas etapas a seguir).


# Create the IPv4 configuration for NIC 1
$Ip4Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp4Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv4 `
  -LoadBalancerBackendAddressPool $backendPoolv4 `
  -PublicIpAddress  $RdpPublicIP_1

# Create the IPv6 configuration
$Ip6Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp6Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv6 `
  -LoadBalancerBackendAddressPool $backendPoolv6

# Create NIC 1
$NIC_1 = New-AzNetworkInterface `
  -Name "dsNIC1" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -NetworkSecurityGroupId $nsg.Id `
  -IpConfiguration $Ip4Config,$Ip6Config

# Create the IPv4 configuration for NIC 2
$Ip4Config=New-AzNetworkInterfaceIpConfig `
  -Name dsIp4Config `
  -Subnet $vnet.subnets[0] `
  -PrivateIpAddressVersion IPv4 `
  -LoadBalancerBackendAddressPool $backendPoolv4 `
  -PublicIpAddress  $RdpPublicIP_2

# Create NIC 2 reusing the IPv6 configuration from NIC 1
$NIC_2 = New-AzNetworkInterface `
  -Name "dsNIC2" `
  -ResourceGroupName $rg.ResourceGroupName `
  -Location $rg.Location  `
  -NetworkSecurityGroupId $nsg.Id `
  -IpConfiguration $Ip4Config,$Ip6Config

Criar máquinas virtuais

Defina o nome de usuário e a senha de um administrador para as VMs com Get-Credential:

$cred = get-credential -Message "DUAL STACK VNET SAMPLE:  Please enter the Administrator credential to log into the VM's"

Agora, é possível criar as VMs com New-AzVM. O exemplo a seguir cria duas VMs e os componentes de rede virtual necessários, caso ainda não existam.

$vmsize = "Standard_A2"
$ImagePublisher = "MicrosoftWindowsServer"
$imageOffer = "WindowsServer"
$imageSKU = "2019-Datacenter"

$vmName= "dsVM1"
$VMconfig1 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage  3> $null | Add-AzVMNetworkInterface -Id $NIC_1.Id  3> $null
$VM1 = New-AzVM -ResourceGroupName $rg.ResourceGroupName  -Location $rg.Location  -VM $VMconfig1


$vmName= "dsVM2"
$VMconfig2 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage  3> $null | Add-AzVMNetworkInterface -Id $NIC_2.Id  3> $null
$VM2 = New-AzVM -ResourceGroupName $rg.ResourceGroupName  -Location $rg.Location  -VM $VMconfig2

Exibir a rede virtual de pilha dupla IPv6 no portal do Azure

Você pode exibir a rede virtual de pilha dual IPv6 no portal do Azure da seguinte maneira:

  1. Na barra de pesquisa do portal, insira dsVnet.
  2. Quando a dsVnet for exibida nos resultados da pesquisa, selecione-a. Isso inicia a página Visão geral da rede virtual de pilha dual chamada dsVnet. A rede virtual de pilha dual mostra as duas NICs com as configurações de IPv4 e IPv6 localizadas na sub-rede de pilha dual chamada dsSubnet.

Rede virtual de pilha dupla IPv6 com o Standard Load Balancer interno

Observação

O IPv6 para rede virtual do Azure está disponível no portal do Azure somente leitura nesta versão prévia.

Limpar os recursos

Quando não forem mais necessários, você poderá usar o comando Remove-AzResourceGroup para remover o grupo de recursos, a VM e todos os recursos relacionados.

Remove-AzResourceGroup -Name dsStd_ILB_RG

Próximas etapas

Neste artigo, você criou um Standard Load Balancer com uma configuração de IP de front-end dual (IPv4 e IPv6). Você também criou duas máquinas virtuais que incluíam NICs com configurações de IP duplo (IPV4 + IPv6) que foram adicionadas ao pool de back-end do balanceador de carga. Para saber mais sobre o suporte a IPv6 em redes virtuais do Azure, confira O que é o IPv6 para a Rede Virtual do Azure?