Exercício – configurar um balanceador de carga público
Pode configurar o Balanceador de Carga do Azure através do portal do Azure, do PowerShell ou da CLI do Azure.
Em sua organização de assistência médica, você deseja balancear a carga do tráfego do cliente para fornecer uma resposta consistente com base na integridade dos servidores Web do portal do paciente. Você tem duas máquinas virtuais (VMs) em um conjunto de disponibilidade para atuar como seu aplicativo Web do portal de assistência médica.
Aqui, você cria um recurso de balanceador de carga e o usa para distribuir uma carga pelas máquinas virtuais.
Implementar a aplicação Web do portal do paciente
Primeiro, implante seu aplicativo de portal do paciente em duas máquinas virtuais em um único conjunto de disponibilidade. Para poupar tempo, vamos começar por executar um script para criar esta aplicação. O script:
- Cria uma rede virtual e uma infraestrutura de rede para as máquinas virtuais.
- Cria duas máquinas virtuais nesta rede virtual.
Para implementar a aplicação Web do portal do paciente:
Execute o seguinte comando
git clone
no Azure Cloud Shell. O comando clona o repositório que contém a origem da aplicação e executa o script de configuração do GitHub. Em seguida, muda para o diretório do repositório clonado.git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git cd mslearn-improve-app-scalability-resiliency-with-load-balancer
Como o próprio nome sugere, o script gera duas máquinas virtuais em um único conjunto de disponibilidade. Demora cerca de dois minutos a correr.
bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
Quando o script for concluído, no portal do Azure ou a partir da Home page, selecione Grupos de recursos e, em seguida, selecione o grupo de recursos
[nome do grupo de recursos do sandbox] . Analise os recursos criados pelo script.
Criar um balanceador de carga
Agora, vamos criar o balanceador de carga.
No menu do portal do Azure ou na página inicial , em Serviços do Azure, selecione Criar um recurso. O painel Criar um recurso é exibido.
Na caixa de pesquisa Serviços de pesquisa e marketplace , digite Balanceador de Carga e pressione Enter.
Na lista seguinte, selecione Load Balancer - Microsoft e, em seguida, selecione Criar.
Na guia Noções básicas, insira os seguintes valores para cada configuração:
Definição Value Detalhes do projeto Subscrição a sua subscrição Grupo de recursos Selecione [nome do grupo de recursos do sandbox] Detalhes da instância Nome Introduza um nome exclusivo. Por exemplo, Pub-LB-PatientsPortal País/Região Selecione a localização onde foram criadas as máquinas virtuais. SKU Standard Type Público Escalão de serviço Regionais
Adicionar uma configuração de IP front-end
Selecione Next : Frontend IP configuration.
Selecione + Adicionar uma configuração de IP frontend. O painel de configuração Adicionar IP frontend é exibido.
Insira os seguintes valores para cada configuração.
Definição Value Nome Insira um nome exclusivo para a configuração de IP front-end. Por exemplo, myFrontendIP Versão do IP Selecione IPv4 Tipo de IP Selecione o endereço IP Endereço IP público Selecione Criar novo, dê um nome ao seu endereço IP e selecione Salvar Experimente agora o Balanceador de Carga de Gateway Selecione Nenhum Para fechar a caixa de diálogo, selecione Salvar. O painel Criar balanceador de carga é exibido.
Adicionar um conjunto back-end
Selecione Avançar : Pools de back-end.
Selecione + Adicionar um pool de back-end. O painel Adicionar pool de back-end é exibido.
Insira os seguintes valores para cada configuração.
Definição Value Nome Introduza um nome exclusivo para o conjunto de back-end. Por exemplo, bepool-http. Rede virtual Confirme se bePortalVnet está selecionado. Em Configurações de IP, selecione Adicionar. O painel Adicionar configurações IP ao pool de back-end é exibido.
Em Máquina virtual, selecione as máquinas virtuais webVM1 e webVM2 e selecione Adicionar.
A tela Adicionar pool de back-end reaparece. Em Configurações de IP, selecione as máquinas virtuais webVM1 e webVM2 e selecione Salvar. A tela Criar balanceador de carga reaparece.
Adicionar uma regra de balanceamento de carga
Finalmente, vamos criar uma regra para o balanceador de carga.
Selecione Avançar : Regras de entrada.
Na seção Regra de balanceamento de carga, selecione + Adicionar uma regra de balanceamento de carga. O painel Adicionar regra de balanceamento de carga é exibido.
Insira os seguintes valores para cada configuração.
Definição Value Nome Um nome para a regra de balanceamento de carga. Por exemplo, lbrule-http. Versão do IP IPv4 Endereço IP de front-end Selecione o endereço IP Frontend que você nomeou anteriormente. Conjunto de back-end Selecione o pool de back-end que você nomeou anteriormente. Por exemplo, bepool-http. Protocolo TCP Porta Introduza 80 (predefinição). Porta back-end Introduza 80 (predefinição). Sonda de estado de funcionamento Selecione o link Criar novo . A caixa de diálogo Adicionar sonda de integridade é exibida. Insira os seguintes valores para cada configuração.
Definição Value Nome Um nome para a sonda de saúde. Por exemplo, healthprobe-http. Protocolo TCP Porta Introduza 80 (predefinição). Intervalo Introduza 5 (predefinição). Este valor é a quantidade de tempo entre sondas. Selecione Salvar para fechar a caixa de diálogo. O painel Adicionar regra de balanceamento de carga reaparece.
Continue inserindo os seguintes valores para cada configuração.
Definição Value Persistência da sessão* Nenhum (predefinição) Tempo limite de inatividade (minutos) Selecione 4 (predefinição). Esse valor é o tempo para manter uma conexão TCP (Transmission Control Protocol) ou HTTP aberta sem depender de clientes para enviar mensagens keep-alive. IP Flutuante Desativado (padrão). Selecione Salvar para concluir a configuração da regra de balanceamento de carga.
A tela Criar balanceador de carga reaparece. Selecione Rever + criar.
Quando a validação for aprovada, selecione Criar. Quando a implantação for concluída, selecione Ir para o recurso.
Na página Visão geral, copie e salve o endereço IP público. Talvez seja necessário selecionar Ver mais... para visualizar o endereço IP público.
Criar endereços IP
Em primeiro lugar, precisamos de um endereço IP público para o balanceador de carga.
No Cloud Shell, inicie o PowerShell executando este comando:
pwsh
No PowerShell, crie um novo endereço IP público:
$Location = $(Get-AzureRmResourceGroup -ResourceGroupName <rgn>[sandbox resource group name]</rgn>).Location $publicIP = New-AzPublicIpAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Location $Location ` -AllocationMethod "Static" ` -Name "myPublicIP"
Crie um IP de front-end com o cmdlet New-AzLoadBalancerFrontendIpConfig. O código a seguir cria uma configuração IP front-end chamada myFrontEnd e anexa o endereço myPublicIP:
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
Criar o balanceador de carga
Quando utiliza o PowerShell para configurar um balanceador de carga, tem de criar o conjunto de endereços de back-end, a sonda de estado de funcionamento e a regra antes de criar o próprio balanceador.
Crie um pool de endereços back-end executando o cmdlet New-AzLoadBalancerBackendAddressPoolConfig . Você anexará as máquinas virtuais a esse pool de back-end nas etapas finais. O exemplo a seguir cria um pool de endereços back-end chamado myBackEndPool:
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
Crie uma sonda de integridade para permitir que o balanceador de carga monitore o status do portal de assistência médica. A sonda de estado de funcionamento adiciona ou remove, de forma dinâmica, máquinas virtuais da rotação do balanceador de carga, com base na respetiva resposta às verificações de estado de funcionamento.
$probe = New-AzLoadBalancerProbeConfig ` -Name "myHealthProbe" ` -Protocol http ` -Port 80 ` -IntervalInSeconds 5 ` -ProbeCount 2 ` -RequestPath "/"
Agora você precisa de uma regra de balanceador de carga para definir como o tráfego é distribuído para as máquinas virtuais. Pode definir a configuração de IP de front-end do tráfego de entrada e o conjunto de IPs de back-end para receber o tráfego, juntamente com a porta de origem e de destino necessárias. Para garantir que apenas as máquinas virtuais em bom estado de funcionamento recebem o tráfego, também pode definir a sonda de estado de funcionamento a utilizar.
$lbrule = New-AzLoadBalancerRuleConfig ` -Name "myLoadBalancerRule" ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 ` -Probe $probe
Agora, você pode criar o balanceador de carga básico executando o cmdlet New-AzLoadBalancer :
$lb = New-AzLoadBalancer ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule
Ligue as máquinas virtuais ao conjunto de back-end ao atualizar as interfaces de rede que o script criou para utilizar as informações do conjunto de back-end.
$nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1" $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic2" $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob
Execute o seguinte comando para obter o endereço IP público do balanceador de carga e a URL do seu site:
Write-Host http://$($(Get-AzPublicIPAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name "myPublicIP").IpAddress)
Criar um balanceador de carga
Vamos utilizar a CLI do Azure para criar o balanceador de carga e os respetivos recursos associados.
Crie um novo endereço IP público.
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
Crie o balanceador de carga.
az network lb create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myLoadBalancer \ --public-ip-address myPublicIP \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool
Crie uma sonda de integridade que permita que o balanceador de carga monitore o status do portal de assistência médica. A sonda de integridade adiciona ou remove dinamicamente máquinas virtuais da rotação do balanceador de carga com base em sua resposta às verificações de integridade.
az network lb probe create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80
Agora, você precisa de uma regra de balanceador de carga para definir como o tráfego é distribuído para as máquinas virtuais. Pode definir a configuração de IP de front-end do tráfego de entrada e o conjunto de IPs de back-end para receber o tráfego, juntamente com a porta de origem e de destino necessárias. Para garantir que apenas as máquinas virtuais em bom estado de funcionamento recebem o tráfego, também pode definir a sonda de estado de funcionamento a utilizar.
az network lb rule create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe
Ligue as máquinas virtuais ao conjunto de back-end ao atualizar as interfaces de rede que o script criou para utilizar as informações do conjunto de back-end.
az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic1 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic2 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool
Execute o seguinte comando para obter o endereço IP público do balanceador de carga e a URL do seu site:
echo http://$(az network public-ip show \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myPublicIP \ --query ipAddress \ --output tsv)
Testar a configuração do balanceador de carga
Vamos testar a configuração do balanceador de carga, mostrando como ele pode lidar com problemas de disponibilidade e integridade dinamicamente.
Num novo separador do browser, aceda ao endereço IP público que anotou. Uma resposta de uma das máquinas virtuais é exibida no navegador.
Tente forçar a atualização pressionando Ctrl+F5 algumas vezes para ver se a resposta é retornada aleatoriamente de ambas as máquinas virtuais.
No menu do portal do Azure ou a partir da Home page, selecione Todos os recursos. Em seguida, selecione webVM1 e selecione Parar.
Volte ao separador que mostra o site e force uma atualização da página Web. Todos os pedidos são devolvidos da máquina virtual webVM2.