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

Concluído

É 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:

  1. Crie um novo grupo de recursos. Na etapa 3, substitua [nome do grupo de recursos da área restrita] 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 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
    
  3. 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>
    
  4. 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.

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

  2. Na caixa de pesquisa Pesquisar serviços e marketplace, insira Balanceador de Carga e pressione Enter.

  3. Na lista resultante, selecione Balanceador de Carga – Microsoft. Em seguida, selecione Criar.

    Create a Load Balancer instance in the Azure portal.

  4. 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 o grupo de recursos. Por exemplo, learn-ts-loadbalancer-rg
    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

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

Adicionar uma configuração de IP de front-end

  1. Selecione Próximo: Configuração de IP de front-end.

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

  3. 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
    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 pool de back-end

  1. Selecione Próximo: Pools de back-end.

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

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

  5. Na 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 é 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.

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

Adicionar uma regra de balanceamento de carga

Por fim, vamos criar uma regra para o balanceador de carga.

  1. Selecione Próximo: 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 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.
  4. 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.
  5. Selecione Salvar para fechar a caixa de diálogo. O painel Adicionar regra de balanceamento de carga é exibido novamente.

  6. 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). Este valor representa 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).

    Add a new load balancing rule.

  7. Selecione Salvar para concluir a configuração de regras do balanceador de carga.

  8. A tela Criar balanceador de carga é exibida novamente. Selecione Examinar + criar.

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

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

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

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

  1. 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"
    
  2. 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 "/"
    
  3. 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
    
  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. 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
    
  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 usar a CLI do Azure para criar o balanceador de carga e os 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 investigação de integridade. 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  
    
  4. 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
    
  5. Conecte as máquinas virtuais ao pool de back-end atualizando as interfaces de rede que você criou no script com 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
    
  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 ele pode gerenciar problemas de disponibilidade e integridade dinamicamente.

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

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

  3. No menu do portal do Azure ou na Página Inicial, selecione Todos os recursos. Em seguida, selecione webVM1 e selecione Parar.

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