Exercício – Configurar um balanceador de carga público
É possível configurar o Azure Load Balancer usando o portal do Azure, o PowerShell ou a CLI do Azure.
Em sua organização de assistência médica, convém balancear a carga do tráfego de clientes 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 o 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 entre as máquinas virtuais.
Implantar o aplicativo Web do portal do paciente
Primeiro, implante seu aplicativo do portal do paciente em duas máquinas virtuais em um único conjunto de disponibilidade. Para poupar tempo, vamos começar executando um script para criar esse aplicativo. 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 implantar o aplicativo 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 do aplicativo e executa o script de configuração por meio do GitHub. Em seguida, faz alterações no 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 nome sugere, o script gera duas máquinas virtuais em um único conjunto de disponibilidade. Leva cerca de dois minutos para ser executado.
bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
Quando o script for concluído, no menu portal do Azure ou na Página Inicial, selecione Grupos de recursos e, em seguida, selecione o grupo de recursos
[nome do grupo de recursos da área restrita] . Revise 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 Home page, em Serviços do Azure, selecione Criar um recurso. O painel Criar um recurso será exibido.
Na caixa de pesquisa Pesquisar serviços e marketplace, insira Balanceador de Carga e pressione Enter.
Na lista resultante, selecione Balanceador de Carga – Microsoft e, em seguida, Criar.
Na guia Básico, insira os seguintes valores para cada configuração:
Configuração Valor Detalhes do projeto Subscription Sua assinatura Grupo de recursos Selecione [nome do grupo de recursos de área restrita] Detalhes da instância Nome Insira um nome exclusivo. Por exemplo, Pub-LB-PatientsPortal. Region Selecione o local em que as máquinas virtuais foram criadas. SKU Standard Tipo Público Camada Regional
Adicionar uma configuração de IP de front-end
Selecione Próximo: Configuração de IP de front-end.
Selecione + Adicionar uma configuração de IP de front-end. O painel Adicionar configuração de IP de front-end é exibido.
Insira os valores a seguir para cada configuração.
Configuração Valor Nome Insira um nome exclusivo para a configuração de IP de front-end. Por exemplo, myFrontendIP Versão do IP Selecione IPv4 Tipo de IP Selecione Endereço IP Endereço IP público Selecione Criar e dê um nome ao endereço IP e selecione Salvar Balanceador de Carga para Gateway Selecione Nenhum Para fechar a caixa de diálogo, selecione Salvar. O painel Criar balanceador de carga é exibido.
Adicionar um pool de back-end
Selecione Próximo: Pools de back-end.
Selecione + Adicionar um pool de back-ends. O painel Adicionar pool de back-end é exibido.
Insira os valores a seguir para cada configuração.
Configuração Valor Name Insira um nome exclusivo para o pool 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 de IP ao pool de back-end é exibido.
Na Máquina virtual, selecione as máquinas virtuais webVM1 e webVM2 e selecione Adicionar.
A tela Adicionar pool de back-end é exibida novamente. Em Configurações de IP, selecione as máquinas virtuais webVM1 e webVM2 e selecione Salvar. A tela Criar balanceador de carga é exibida novamente.
Adicionar uma regra de balanceamento de carga
Por fim, vamos criar uma regra para o balanceador de carga.
Selecione Próximo: 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 valores a seguir para cada configuração.
Configuração Valor Nome Um nome para a regra de balanceamento de carga. Por exemplo, lbrule-http. Versão IP IPv4 Endereço IP de front-end Selecione o endereço IP de front-end que você nomeou anteriormente. Pool de back-end Selecione o pool de back-end que você nomeou anteriormente. Por exemplo, bepool-http. Protocolo TCP Porta Insira 80 (padrão). Porta de back-end Insira 80 (padrão). Investigação de integridade Selecione o link Criar. A caixa de diálogo Adicionar investigação de integridade é exibida. Insira os valores a seguir para cada configuração.
Configuração Valor Nome um nome para a investigação de integridade. Por exemplo, healthprobe-http. Protocolo TCP Porta Insira 80 (padrão). Intervalo Insira 5 (padrão). Esse valor é a quantidade de tempo entre investigações. Selecione Salvar para fechar a caixa de diálogo. O painel Adicionar regra de balanceamento de carga é exibido novamente.
Continue a inserir os valores a seguir para cada configuração.
Configuração Valor Persistência de sessão* Nenhum (padrão) Tempo limite de ociosidade (minutos) Selecione 4 (padrão). Esse valor represente o tempo que uma conexão TCP ou HTTP será mantida aberta sem depender do envio de mensagens keep-alive pelos clientes. IP flutuante Desabilitado (padrão). Selecione Salvar para concluir a configuração de regras do balanceador de carga.
A tela Criar balanceador de carga é exibida novamente. Selecione Examinar + criar.
Quando a validação for aprovada na validação, selecione Criar. Quando a implantação for concluída, selecione Ir para recursos.
Na página Visão geral, copie e salve o Endereço IP público. Talvez você tenha que selecionar Ver mais... para exibir o endereço IP público.
Criar endereços IP
Primeiro, 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 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 usando o cmdlet New-AzLoadBalancerFrontendIpConfig. O seguinte código cria uma configuração de IP de front-end chamada myFrontEnd e anexa o endereço myPublicIP:
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
Criar o balanceador de carga
Ao usar o PowerShell para configurar um balanceador de carga, é necessário criar o pool de endereços de back-end, a investigação de integridade e a regra antes de criar o próprio balanceador.
Crie um pool de endereços de back-end executando o cmdlet New-AzLoadBalancerBackendAddressPoolConfig. Você anexará as máquinas virtuais a esse pool de back-end nas etapas finais. O seguinte exemplo cria um pool de endereços de back-end chamado myBackEndPool:
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
Crie um investigação de integridade para permitir que o balanceador de carga monitore o status do portal de assistência médica. A investigação de integridade adiciona ou remove dinamicamente máquinas virtuais da rotação do balanceador de carga com base na resposta às verificações de integridade.
$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. Definir a configuração de IP de front-end para o tráfego de entrada e o pool de IP de back-end para receber o tráfego, junto com as portas de origem e de destino necessárias. Para verificar se apenas máquinas virtuais íntegras receberão tráfego, defina também a investigação de integridade a ser usada.
$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
Conecte as máquinas virtuais ao pool de back-end atualizando as interfaces de rede que o script criou para usar as informações do pool 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 usar a CLI do Azure para criar o balanceador de carga e os 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 investigação de integridade que permita que o balanceador de carga monitore o status do portal de saúde. A investigação de integridade adiciona ou remove dinamicamente máquinas virtuais da rotação do balanceador de carga com base em sua resposta a 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. Definir a configuração de IP de front-end para o tráfego de entrada e o pool de IP de back-end para receber o tráfego, junto com as portas de origem e de destino necessárias. Para verificar se apenas máquinas virtuais íntegras receberão tráfego, defina também a investigação de integridade a ser usada.
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
Conecte as máquinas virtuais ao pool de back-end atualizando as interfaces de rede que o script criou para usar as informações do pool 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 gerenciar problemas de disponibilidade e integridade dinamicamente.
Em uma nova guia do navegador, navegue até o endereço IP público que você anotou. Uma resposta de uma das máquinas virtuais é exibida no navegador.
Tente executar uma "atualização forçada" 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 na Página Inicial, selecione Todos os recursos. Em seguida, selecione webVM1 e selecione Parar.
Retorne à guia que mostra o site e force uma atualização da página da Web. Todas as solicitações são retornadas de webVM2.