Exercício – configurar um balanceador de carga público

Concluído

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:

  1. Criar um novo grupo de recursos. Na etapa 3, substitua [sandbox resource group name] pelo seu próprio nome de grupo de recursos.

  2. 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
    
  3. 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>
    
  4. 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.

  1. 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.

  2. Na caixa de pesquisa Serviços de pesquisa e marketplace , digite Balanceador de Carga e pressione Enter.

  3. Na lista seguinte, selecione Load Balancer - Microsoft. Em seguida, selecione Criar.

    Create a Load Balancer instance in the Azure portal.

  4. 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

    Screenshot that shows the Basics tab of the Create a Load Balancer screen in the Azure portal.

Adicionar uma configuração de IP front-end

  1. Selecione Next : Frontend IP configuration.

  2. Selecione + Adicionar uma configuração de IP frontend. O painel de configuração Adicionar IP frontend é exibido.

  3. 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

    Screenshot that shows the completed settings for the Add frontend IP configuration.

  4. Para fechar a caixa de diálogo, selecione Adicionar. O painel Criar balanceador de carga é exibido.

Adicionar um conjunto back-end

  1. Selecione Avançar : Pools de back-end.

  2. Selecione + Adicionar um pool de back-end. O painel Adicionar pool de back-end é exibido.

  3. 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.
  4. Em Configurações de IP, selecione Adicionar. O painel Adicionar configurações IP ao pool de back-end é exibido.

  5. Em Máquina virtual, selecione as máquinas virtuais webVM1 e webVM2 e selecione Adicionar.

    Screenshot that shows the settings on the Add IP configurations to backend pool pane.

  6. 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.

    Screenshot that shows the settings completed on the Add backend pool screen.

Adicionar uma regra de balanceamento de carga

Finalmente, vamos criar uma regra para o balanceador de carga.

  1. Selecione Avançar : Regras de entrada.

  2. 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.

  3. 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.
  4. 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.
  5. Selecione Salvar para fechar a caixa de diálogo. O painel Adicionar regra de balanceamento de carga reaparece.

  6. 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).

    Add a new load balancing rule.

  7. Selecione Salvar para concluir a configuração da regra de balanceamento de carga.

  8. A tela Criar balanceador de carga reaparece. Selecione Rever + criar.

  9. Quando a validação for aprovada, selecione Criar. Quando a implantação for concluída, selecione Ir para o recurso.

  10. 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.

  1. No Cloud Shell, inicie o PowerShell executando este comando:

    pwsh
    
  2. 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"
    
  3. 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.

  1. 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"
    
  2. 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 "/"
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  1. 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
    
  2. 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
    
  3. 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  
    
  4. 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
    
  5. 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
    
  6. 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.

  1. 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.

  2. Tente forçar a atualização pressionando Ctrl+F5 algumas vezes para ver se a resposta é retornada aleatoriamente de ambas as máquinas virtuais.

  3. No menu do portal do Azure ou a partir da Home page, selecione Todos os recursos. Em seguida, selecione webVM1 e selecione Parar.

  4. 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.