Exercício - Habilite o failover automático usando o roteamento prioritário

Concluído

Vamos supor que seu aplicativo de streaming de música tenha uma distribuição igual de usuários no oeste dos Estados Unidos e na Europa Ocidental. Gostaria de ter uma versão de contingência da aplicação numa só região.

O aplicativo de exemplo que usamos para este exercício exibe a região em que ele está sendo executado. Uma das duas instâncias tem prioridade mais alta e é o ponto de extremidade primário. A outra instância tem uma prioridade mais baixa e é o ponto de extremidade de failover. Desativar o ponto de extremidade principal automaticamente encaminha todo o tráfego de rede para o ponto de extremidade alternativo.

Neste exercício, vais configurar o Gerenciador de Tráfego para usar o endpoint dos Estados Unidos como o principal, comutando para o endpoint europeu se ocorrerem erros.

Criar um novo perfil do Traffic Manager

  1. Execute o seguinte comando no Cloud Shell para criar um novo perfil do Traffic Manager:

    az network traffic-manager profile create \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --name TM-MusicStream-Priority \
        --routing-method Priority \
        --unique-dns-name TM-MusicStream-Priority-$RANDOM
    

    Você está usando estes parâmetros no comando:

    • --routing-method Priority: Cria o perfil do Gestor de Tráfego usando o método de roteamento prioritário.
    • --unique-dns-name: Cria o nome de domínio globalmente exclusivo <unique-dns-name>.trafficmanager.net. Usamos a função $RANDOM Bash para retornar um número inteiro aleatório para garantir que o nome seja exclusivo.

Implantar os aplicativos Web

  1. Execute o seguinte comando para implantar um modelo do Gerenciador de Recursos. O modelo cria dois servidores, um na região Europa Ocidental e outro na região Oeste dos EUA 2. Seja paciente, porque a implantação pode levar alguns minutos.

    az deployment group create \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --template-uri  https://raw.githubusercontent.com/MicrosoftDocs/mslearn-distribute-load-with-traffic-manager/master/azuredeploy.json \
        --parameters password="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)"
    

Adicione os pontos de extremidade ao Traffic Manager

  1. Os aplicativos Web agora estão sendo executados em máquinas virtuais. Execute os seguintes comandos para adicionar os recursos de endereços IP públicos das máquinas virtuais como pontos de extremidade ao perfil do Traffic Manager:

    WestId=$(az network public-ip show \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --name westus2-vm-nic-pip \
        --query id \
        --output tsv)
    
    az network traffic-manager endpoint create \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --profile-name TM-MusicStream-Priority \
        --name "Primary-WestUS" \
        --type azureEndpoints \
        --priority 1 \
        --target-resource-id $WestId
    
    WestId=$(az network public-ip show \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --name westeurope-vm-nic-pip \
        --query id \
        --output tsv)
    
    az network traffic-manager endpoint create \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --profile-name TM-MusicStream-Priority \
        --name "Failover-WestEurope" \
        --type azureEndpoints \
        --priority 2 \
        --target-resource-id $WestId
    

    O código obtém as IDs de recurso de ambas as máquinas virtuais. Em seguida, o código utiliza os identificadores para os adicionar como endpoints ao perfil do Gerenciador de Tráfego. O código usa o sinalizador --priority para definir o aplicativo West US para a prioridade mais alta.

  2. Vamos dar uma olhada rápida nos pontos de extremidade que configuramos. Execute o seguinte comando:

    az network traffic-manager endpoint list \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --profile-name TM-MusicStream-Priority \
        --output table
    

Testar a aplicação

  1. Vamos dar uma olhada no que o DNS mostra para os aplicativos Web e para o nosso perfil do Gerenciador de Tráfego. Execute os seguintes comandos para exibir os endereços IP de cada um dos recursos que criamos.

  2. Recupere o endereço do aplicativo Web West US 2:

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westus2-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  3. Recupere o endereço da aplicação Web da Europa Ocidental:

    nslookup $(az network public-ip show \
            --resource-group "<rgn>[Sandbox resource group]</rgn>" \
            --name westeurope-vm-nic-pip \
            --query dnsSettings.fqdn \
            --output tsv)
    
  4. Recupere o endereço do perfil do Gerenciador de Tráfego:

    # Retrieve the address for the Traffic Manager profile
    nslookup $(az network traffic-manager profile show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name TM-MusicStream-Priority \
                --query dnsConfig.fqdn \
                --output tsv)
    

    O endereço do perfil do Traffic Manager deve coincidir com o endereço IP público do westus2-vm-nic-pip atribuído à máquina virtual westus2-vm.

  5. Execute o seguinte comando para ir para o FQDN (nome de domínio totalmente qualificado) do perfil do Gerenciador de Tráfego. A sua solicitação é encaminhada para o destino final que responde com a prioridade mais alta.

    echo http://$(az network traffic-manager profile show \
        --resource-group "<rgn>[Sandbox resource group]</rgn>" \
        --name TM-MusicStream-Priority \
        --query dnsConfig.fqdn \
        --output tsv)
    

    O código imprime o FQDN no Cloud Shell. Selecione o FQDN para abrir uma nova janela ou guia do navegador.

  6. Verifique se o aplicativo está funcionando e o local mostrado na parte inferior da página é West US 2:

    Captura de ecrã da aplicação Web em execução no Oeste dos Estados Unidos.

  7. Execute o seguinte comando para desativar o ponto de extremidade principal:

    az network traffic-manager endpoint update \
        --resource-group "<rgn>[Sandbox resource group]</rgn>"  \
        --name "Primary-WestUS" \
        --profile-name TM-MusicStream-Priority \
        --type azureEndpoints \
        --endpoint-status Disabled
    
  8. Vamos examinar novamente o que o DNS mostra para os aplicativos Web e para o nosso perfil do Gerenciador de Tráfego.

  9. Recupere o endereço do aplicativo Web West US 2:

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westus2-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  10. Recupere o endereço do aplicativo Web da Europa Ocidental.:

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westeurope-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  11. Recupere o endereço do perfil do Gerenciador de Tráfego:

    nslookup $(az network traffic-manager profile show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name TM-MusicStream-Priority \
                --query dnsConfig.fqdn \
                --output tsv)
    

    O endereço do perfil do Gestor de Tráfego deve agora corresponder à aplicação Web da Europa Ocidental.

  12. Teste o aplicativo novamente a partir do seu navegador atualizando a página da Web. O Gestor de Tráfego deve redirecionar automaticamente o tráfego para o ponto final da Europa Ocidental. Dependendo do seu navegador, pode levar alguns minutos para que o endereço armazenado em cache localmente expire. Abrir o site em uma janela privada deve ignorar o cache, para que você possa ver a alteração imediatamente.

    Captura de ecrã da aplicação Web da Europa Ocidental em execução.