Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: ✔️ VMs do Windows ✔️ Conjuntos de escala uniforme
O balanceamento de carga fornece um nível mais alto de disponibilidade, distribuindo solicitações de entrada em várias máquinas virtuais. Neste tutorial, você aprenderá sobre os diferentes componentes do balanceador de carga do Azure que distribuem o tráfego e fornecem alta disponibilidade. Você aprende a:
- Criar um balanceador de carga do Azure
- Criar uma sonda de integridade do balanceador de carga
- Criar regras para o tráfego do balanceador de carga
- Usar a extensão de script personalizado para criar um site básico do IIS
- Criar máquinas virtuais e anexar a um balanceador de carga
- Ver um balanceador de carga em ação
- Adicionar e remover VMs de um balanceador de carga
Visão geral do balanceador de carga do Azure
Um balanceador de carga do Azure é um balanceador de carga de Camada 4 (TCP, UDP) que fornece alta disponibilidade distribuindo o tráfego de entrada entre VMs íntegras. Uma sonda de integridade do balanceador de carga monitora uma determinada porta em cada VM e distribui apenas o tráfego para uma VM operacional.
Você define uma configuração de IP front-end que contém um ou mais endereços IP públicos. Essa configuração de IP front-end permite que seu balanceador de carga e aplicativos estejam acessíveis pela Internet.
As máquinas virtuais se conectam a um balanceador de carga usando sua placa de interface de rede virtual (NIC). Para distribuir o tráfego para as VMs, um pool de endereços de back-end contém os endereços IP das NICs virtuais ligadas ao balanceador de carga.
Para controlar o fluxo de tráfego, você define regras de balanceador de carga para portas e protocolos específicos que são mapeados para suas VMs.
Lançar o Azure Cloud Shell
O Azure Cloud Shell é um shell interativo gratuito que você pode usar para executar as etapas neste artigo. Tem ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta.
Para abrir o Cloud Shell, basta selecionar Experimentar no canto superior direito de um bloco de código. Você também pode iniciar o Cloud Shell em uma guia separada do navegador acessando https://shell.azure.com/powershell. Selecione Copiar para copiar os blocos de código, cole-o no Cloud Shell e prima Enter para executá-lo.
Criar balanceador de carga do Azure
Esta seção detalha como você pode criar e configurar cada componente do balanceador de carga. Antes de criar seu balanceador de carga, crie um grupo de recursos com New-AzResourceGroup. O exemplo a seguir cria um grupo de recursos chamado myResourceGroupLoadBalancer no local EastUS :
New-AzResourceGroup `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Location "EastUS"
Criar um endereço IP público
Para acessar seu aplicativo na Internet, você precisa de um endereço IP público para o balanceador de carga. Crie um endereço IP público com New-AzPublicIpAddress. O exemplo a seguir cria um endereço IP público chamado myPublicIP no grupo de recursos myResourceGroupLoadBalancer :
$publicIP = New-AzPublicIpAddress `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Location "EastUS" `
-AllocationMethod "Static" `
-Name "myPublicIP"
Criar um balanceador de carga
Crie um pool de IP frontend com New-AzLoadBalancerFrontendIpConfig. O exemplo a seguir cria um pool de IP frontend chamado myFrontEndPool e anexa o endereço myPublicIP :
$frontendIP = New-AzLoadBalancerFrontendIpConfig `
-Name "myFrontEndPool" `
-PublicIpAddress $publicIP
Crie um pool de endereços de backend com New-AzLoadBalancerBackendAddressPoolConfig. As VMs são anexadas a este pool de back-end nos próximos passos. O exemplo a seguir cria um pool de endereços de back-end chamado myBackEndPool:
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "myBackEndPool"
Agora, crie o balanceador de carga com New-AzLoadBalancer. O exemplo a seguir cria um balanceador de carga chamado myLoadBalancer usando os pools de IP frontend e backend criados nas etapas anteriores:
$lb = New-AzLoadBalancer `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myLoadBalancer" `
-Location "EastUS" `
-FrontendIpConfiguration $frontendIP `
-BackendAddressPool $backendPool
Criar uma sonda de integridade
Para permitir que o balanceador de carga monitorize o estado da sua aplicação, use uma sonda de integridade. A sonda de integridade adiciona ou remove dinamicamente VMs da rotação do balanceador de carga, baseadas na sua resposta às verificações de integridade. Por padrão, uma VM é removida da distribuição do balanceador de carga após duas falhas consecutivas em intervalos de 15 segundos. Você cria uma sonda de saúde com base num protocolo ou numa página de verificação de saúde específica para a sua aplicação.
O exemplo a seguir cria uma sonda TCP. Você também pode criar testes HTTP personalizados para verificações de integridade mais refinadas. Ao usar uma sonda HTTP personalizada, você deve criar a página de verificação de integridade, como healthcheck.aspx. A sonda deve retornar uma resposta HTTP 200 OK para que o balanceador de carga mantenha o host em rotação.
Para criar uma sonda de integridade TCP, use Add-AzLoadBalancerProbeConfig. O exemplo a seguir cria uma investigação de integridade chamada myHealthProbe que monitora cada VM na porta TCP80:
Add-AzLoadBalancerProbeConfig `
-Name "myHealthProbe" `
-LoadBalancer $lb `
-Protocol tcp `
-Port 80 `
-IntervalInSeconds 15 `
-ProbeCount 2
Para aplicar a sonda de integridade, atualize o balanceador de carga com Set-AzLoadBalancer:
Set-AzLoadBalancer -LoadBalancer $lb
Criar uma regra do balanceador de carga
É utilizada uma regra de balanceador de carga para definir a forma como o tráfego é distribuído pelas VMs. Defina a configuração de IP de front-end para o tráfego de entrada e o conjunto de IPs de back-end para receber o tráfego, juntamente com as portas necessárias de origem e destino. Para garantir que apenas VMs íntegras recebam tráfego, você também define o teste de integridade a ser usado.
Crie uma regra de balanceador de carga com Add-AzLoadBalancerRuleConfig. O exemplo a seguir cria uma regra de balanceador de carga chamada myLoadBalancerRule e equilibra o tráfego na porta TCP80:
$probe = Get-AzLoadBalancerProbeConfig -LoadBalancer $lb -Name "myHealthProbe"
Add-AzLoadBalancerRuleConfig `
-Name "myLoadBalancerRule" `
-LoadBalancer $lb `
-FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
-BackendAddressPool $lb.BackendAddressPools[0] `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80 `
-Probe $probe
Atualize o balanceador de carga com Set-AzLoadBalancer:
Set-AzLoadBalancer -LoadBalancer $lb
Configurar uma rede virtual
Antes de implantar algumas VMs e testar seu balanceador, crie os recursos de rede virtual de suporte. Para obter mais informações sobre redes virtuais, consulte o tutorial Gerenciar Redes Virtuais do Azure .
Criar recursos de rede
Crie uma rede virtual com New-AzVirtualNetwork. O exemplo seguinte cria uma rede virtual designada myVnet com mySubnet:
# Create subnet config
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name "mySubnet" `
-AddressPrefix 192.168.1.0/24
# Create the virtual network
$vnet = New-AzVirtualNetwork `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Location "EastUS" `
-Name "myVnet" `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig
As NICs virtuais são criadas com New-AzNetworkInterface. O exemplo a seguir cria três NICs virtuais. (Uma NIC virtual para cada VM que criar para a aplicação nos passos seguintes). Você pode criar NICs e VMs virtuais adicionais a qualquer momento e adicioná-las ao balanceador de carga:
for ($i=1; $i -le 3; $i++)
{
New-AzNetworkInterface `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name myVM$i `
-Location "EastUS" `
-Subnet $vnet.Subnets[0] `
-LoadBalancerBackendAddressPool $lb.BackendAddressPools[0]
}
Criar máquinas virtuais
Para melhorar a elevada disponibilidade da aplicação, coloque as VMs num conjunto de disponibilidade.
Crie um conjunto de disponibilidade com New-AzAvailabilitySet. O exemplo seguinte cria um conjunto de disponibilidade designado myAvailabilitySet:
$availabilitySet = New-AzAvailabilitySet `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myAvailabilitySet" `
-Location "EastUS" `
-Sku aligned `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2
Definir um nome de utilizador e palavra-passe de administrador para as VMs com Get-Credential:
$cred = Get-Credential
Agora você pode criar as VMs com New-AzVM. O exemplo a seguir cria três VMs e os componentes de rede virtual necessários, se ainda não existirem:
for ($i=1; $i -le 3; $i++)
{
New-AzVm `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myVM$i" `
-Location "East US" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-SecurityGroupName "myNetworkSecurityGroup" `
-OpenPorts 80 `
-AvailabilitySetName "myAvailabilitySet" `
-Credential $cred `
-AsJob
}
O -AsJob parâmetro cria a VM como uma tarefa em segundo plano, para que os prompts do PowerShell retornem para você. Você pode exibir detalhes de trabalhos em segundo plano com o Job cmdlet. Leva alguns minutos para criar e configurar as três VMs.
Instalar o IIS com extensão de script personalizada
Em um tutorial anterior sobre Como personalizar uma máquina virtual do Windows, você aprendeu como automatizar a personalização de VM com a Extensão de Script Personalizada para Windows. Você pode usar a mesma abordagem para instalar e configurar o IIS em suas VMs.
Use Set-AzVMExtension para instalar a extensão de script personalizado. A extensão é executada powershell Add-WindowsFeature Web-Server para instalar o servidor Web do IIS e, em seguida, atualiza a página Default.htm para mostrar o nome do host da VM:
for ($i=1; $i -le 3; $i++)
{
Set-AzVMExtension `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-ExtensionName "IIS" `
-VMName myVM$i `
-Publisher Microsoft.Compute `
-ExtensionType CustomScriptExtension `
-TypeHandlerVersion 1.8 `
-SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
-Location EastUS
}
Testar o balanceador de carga
Obtenha o endereço IP público do seu balanceador de carga com Get-AzPublicIPAddress. O exemplo a seguir obtém o endereço IP para myPublicIP criado anteriormente:
Get-AzPublicIPAddress `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myPublicIP" | select IpAddress
Em seguida, você pode inserir o endereço IP público em um navegador da Web. O site é exibido, incluindo o nome do host da VM para a qual o balanceador de carga distribuiu o tráfego, como no exemplo a seguir:
Para ver o balanceador de carga distribuir o tráfego entre as três VMs que executam seu aplicativo, você pode forçar a atualização do navegador da Web.
Adicionar e remover VMs
Talvez seja necessário realizar manutenção nas VMs que executam seu aplicativo, como instalar atualizações do sistema operacional. Para lidar com o aumento do tráfego para seu aplicativo, talvez seja necessário adicionar VMs adicionais. Esta seção mostra como remover ou adicionar uma VM do balanceador de carga.
Remover uma VM do balanceador de carga
Obtenha a placa de interface de rede com Get-AzNetworkInterface e, em seguida, defina a propriedade LoadBalancerBackendAddressPools da NIC virtual como $null. Finalmente, atualize a placa de rede virtual.:
$nic = Get-AzNetworkInterface `
-ResourceGroupName "myResourceGroupLoadBalancer" `
-Name "myVM2"
$nic.Ipconfigurations[0].LoadBalancerBackendAddressPools=$null
Set-AzNetworkInterface -NetworkInterface $nic
Para ver o balanceador de carga distribuir o tráfego entre as duas VMs restantes que estão a executar a sua aplicação, pode recarregar o browser. Agora você pode executar a manutenção na VM, como instalar atualizações do sistema operacional ou executar uma reinicialização da VM.
Adicionar uma VM ao balanceador de carga
Depois de executar a manutenção da VM, ou se você precisar expandir a capacidade, defina a propriedade LoadBalancerBackendAddressPools da NIC virtual como BackendAddressPool de Get-AzLoadBalancer:
Obtenha o balanceador de carga:
$lb = Get-AzLoadBalancer `
-ResourceGroupName myResourceGroupLoadBalancer `
-Name myLoadBalancer
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$lb.BackendAddressPools[0]
Set-AzNetworkInterface -NetworkInterface $nic
Próximos passos
Neste tutorial, você criou um balanceador de carga e anexou VMs a ele. Você aprendeu a:
- Criar um balanceador de carga do Azure
- Criar uma sonda de integridade do balanceador de carga
- Criar regras de tráfego do balanceador de carga
- Usar a extensão de script personalizado para criar um site básico do IIS
- Criar máquinas virtuais e anexar a um balanceador de carga
- Ver um balanceador de carga em ação
- Adicionar e remover VMs de um balanceador de carga
Avance para o próximo tutorial para aprender a gerenciar a rede VM.