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:
Criar um novo grupo de recursos. Na etapa 3, substitua [sandbox resource group name] pelo seu próprio nome de grupo de recursos.
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. 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 o seu grupo de recursos. Por exemplo, learn-ts-loadbalancer-rg 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 Valor Nome Insira um nome exclusivo para a configuração de IP front-end. Por exemplo , myFrontendIP Rede Virtual Selecione bePortalVnet Sub-rede Selecione bePortalSubnet Atribuição Selecione Dinâmico Para fechar a caixa de diálogo, selecione Adicionar. 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 Valor 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 Valor 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 Valor 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). Este valor é o tempo durante o qual a ligação TCP ou HTTP deve permanecer aberta sem depender do envio de mensagens keep-alive dos clientes. 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
Para permitir que o balanceador de carga monitore o status do portal de assistência médica, crie uma sonda de integridade. 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 criou no script 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 para mostrar como pode resolver problemas de estado de funcionamento e disponibilidade de forma dinâmica.
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.