Tutorial: Criar um Registo Ligado ao Gestor de Tráfego usando CLI do Azure

Neste tutorial, cria um Registo Ligado do Gestor de Tráfego no DNS do Azure usando a CLI do Azure. Um Registo Ligado do Traffic Manager liga diretamente um conjunto de registos DNS a um perfil do Gestor de Tráfego do Azure, devolvendo endereços IP a clientes sem uma resolução intermédia CNAME.

Important

Os Registos Ligados do Gestor de Tráfego estão atualmente em PRÉ-VISUALIZAÇÃO. Consulte os Termos de Utilização Complementares das Visualizações Prévias do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão em beta, em pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Para um guia baseado em portal, consulte Criar um Registo Ligado do Gestor de Tráfego usando o portal Azure. Para uma visão conceptual, veja a visão geral dos Registos Ligados do Gestor de Tráfego.

Neste tutorial, aprenderás como:

  • Criar a infraestrutura de redes e máquinas virtuais.
  • Crie um perfil de Gestor de Tráfego com endpoints.
  • Crie um registo ligado do gestor de tráfego usando CLI do Azure.
  • Teste o registo ligado ao gestor de tráfego.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa.

  • CLI do Azure versão 2.60 ou posterior instalada localmente, ou use Azure Cloud Shell. Execute az --version para verificar sua versão. Para instalar ou atualizar, consulte Install CLI do Azure.

  • Um nome de domínio hospedado no DNS do Azure. Se não tiveres uma zona DNS do Azure, cria uma e delega o teu domínio ao DNS do Azure.

    Note

    Neste tutorial, contoso.com é usado como um nome de domínio de exemplo. Substitua contoso.com pelo seu próprio nome de domínio.

Definir variáveis de ambiente

Defina variáveis para os nomes dos recursos e locais usados ao longo deste tutorial para evitar repeti-los em cada comando.

RESOURCE_GROUP="test-rg"
LOCATION="eastus"
VNET_NAME="vnet-1"
TM_PROFILE_NAME="tm-profile"
DNS_ZONE="contoso.com"

Criar o grupo de recursos

az group create \
    --name $RESOURCE_GROUP \
    --location $LOCATION

Criar a rede virtual

az network vnet create \
    --resource-group $RESOURCE_GROUP \
    --name $VNET_NAME \
    --address-prefix 10.10.0.0/16 \
    --subnet-name subnet-1 \
    --subnet-prefix 10.10.0.0/24

Criar máquinas virtuais de servidor Web

Crie duas máquinas virtuais Ubuntu com endereços IP públicos para usar como endpoints do Gestor de Tráfego.

Criar os endereços IP públicos

az network public-ip create \
    --resource-group $RESOURCE_GROUP \
    --name public-ip-1 \
    --sku Standard \
    --dns-name vm-1-tmlink

az network public-ip create \
    --resource-group $RESOURCE_GROUP \
    --name public-ip-2 \
    --sku Standard \
    --dns-name vm-2-tmlink

Criar o grupo de segurança de rede

az network nsg create \
    --resource-group $RESOURCE_GROUP \
    --name nsg-1

az network nsg rule create \
    --resource-group $RESOURCE_GROUP \
    --nsg-name nsg-1 \
    --name AllowHTTP \
    --protocol tcp \
    --priority 100 \
    --destination-port-range 80

az network nsg rule create \
    --resource-group $RESOURCE_GROUP \
    --nsg-name nsg-1 \
    --name AllowHTTPS \
    --protocol tcp \
    --priority 110 \
    --destination-port-range 443

Criar as NICs das máquinas virtuais

az network nic create \
    --resource-group $RESOURCE_GROUP \
    --name nic-1 \
    --vnet-name $VNET_NAME \
    --subnet subnet-1 \
    --network-security-group nsg-1 \
    --public-ip-address public-ip-1

az network nic create \
    --resource-group $RESOURCE_GROUP \
    --name nic-2 \
    --vnet-name $VNET_NAME \
    --subnet subnet-1 \
    --network-security-group nsg-1 \
    --public-ip-address public-ip-2

Criar as máquinas virtuais

Note

Substitua <your-ssh-public-key> pelo conteúdo do seu ficheiro de chave pública SSH, ou use --generate-ssh-keys para criar um novo par de chaves.

az vm create \
    --resource-group $RESOURCE_GROUP \
    --name vm-1 \
    --nics nic-1 \
    --image Ubuntu2404 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --no-wait

az vm create \
    --resource-group $RESOURCE_GROUP \
    --name vm-2 \
    --nics nic-2 \
    --image Ubuntu2404 \
    --admin-username azureuser \
    --generate-ssh-keys

O último comando espera que o vm-2 seja criado. Ambas as VMs estão prontas quando o comando regressa.

Instala o NGINX em ambas as VMs

az vm run-command invoke \
    --resource-group $RESOURCE_GROUP \
    --name vm-1 \
    --command-id RunShellScript \
    --scripts "sudo apt-get update && sudo apt-get install -y nginx && echo 'Hello World from vm-1' | sudo tee /var/www/html/index.html"

az vm run-command invoke \
    --resource-group $RESOURCE_GROUP \
    --name vm-2 \
    --command-id RunShellScript \
    --scripts "sudo apt-get update && sudo apt-get install -y nginx && echo 'Hello World from vm-2' | sudo tee /var/www/html/index.html"

Recuperar os endereços IP públicos

Note os endereços IP de ambas as VMs. Precisas deles ao adicionar endpoints do Traffic Manager.

VM1_IP=$(az network public-ip show \
    --resource-group $RESOURCE_GROUP \
    --name public-ip-1 \
    --query ipAddress \
    --output tsv)

VM2_IP=$(az network public-ip show \
    --resource-group $RESOURCE_GROUP \
    --name public-ip-2 \
    --query ipAddress \
    --output tsv)

echo "vm-1 IP: $VM1_IP"
echo "vm-2 IP: $VM2_IP"

Criar o perfil do Gestor de Tráfego

az network traffic-manager profile create \
    --resource-group $RESOURCE_GROUP \
    --name $TM_PROFILE_NAME \
    --routing-method Priority \
    --unique-dns-name tm-profile-$RANDOM

Adicionar endpoints ao perfil do Traffic Manager

az network traffic-manager endpoint create \
    --resource-group $RESOURCE_GROUP \
    --profile-name $TM_PROFILE_NAME \
    --name tmendpoint-1 \
    --type externalEndpoints \
    --target $VM1_IP \
    --priority 1

az network traffic-manager endpoint create \
    --resource-group $RESOURCE_GROUP \
    --profile-name $TM_PROFILE_NAME \
    --name tmendpoint-2 \
    --type externalEndpoints \
    --target $VM2_IP \
    --priority 2

Obtenha o ID completo do recurso do perfil do Traffic Manager. Precisa dele ao criar o registo ligado.

TM_PROFILE_ID=$(az network traffic-manager profile show \
    --resource-group $RESOURCE_GROUP \
    --name $TM_PROFILE_NAME \
    --query id \
    --output tsv)

echo "Traffic Manager profile ID: $TM_PROFILE_ID"

Criar o Registo Ligado do Gestor de Tráfego

Use az network dns record-set a create com o --traffic-management-profile parâmetro para criar o Registo Ligado do Gestor de Tráfego. O comando seguinte cria um registo A no ápice da zona (@).

Note

O --traffic-management-profile parâmetro está disponível na versão 2.60 do CLI do Azure e posteriores, e requer a API de pré-visualização dos Registos Ligados do Gestor de Tráfego (2024-06-01-previewou posterior).

az network dns record-set a create \
    --resource-group <dns-zone-resource-group> \
    --zone-name $DNS_ZONE \
    --name "@" \
    --traffic-management-profile $TM_PROFILE_ID

Note

Substitui <dns-zone-resource-group> pelo grupo de recursos que contém a tua zona DNS do Azure. Isto pode diferir do grupo de recursos que contém o perfil do Gestor de Tráfego.

Para criar um Registo Ligado do Gestor de Tráfego para um subdomínio em vez do ápice da zona, substitua "@" pelo nome do subdomínio, por exemplo "www":

az network dns record-set a create \
    --resource-group <dns-zone-resource-group> \
    --zone-name $DNS_ZONE \
    --name "www" \
    --traffic-management-profile $TM_PROFILE_ID

Verificar o registo associado

az network dns record-set a show \
    --resource-group <dns-zone-resource-group> \
    --zone-name $DNS_ZONE \
    --name "@"

A saída inclui uma trafficManagementProfile propriedade com o ID de recurso do perfil do Gestor de Tráfego, confirmando que a ligação está estabelecida:

{
  "name": "@",
  "properties": {
    "trafficManagementProfile": {
      "id": "/subscriptions/.../resourceGroups/test-rg/providers/Microsoft.Network/trafficManagerProfiles/tm-profile"
    },
    "TTL": 30,
    ...
  }
}

Note

O valor TTL mostrado na saída é herdado da configuração DNS do perfil do Traffic Manager. Qualquer valor TTL especificado durante a criação do registo é ignorado.

Teste o Registo Ligado do Gestor de Tráfego

Para testar a resolução de nomes, consulta diretamente um dos servidores de nomes do DNS do Azure para a tua zona. Primeiro, liste os servidores de nomes da sua zona:

az network dns record-set ns show \
    --resource-group <dns-zone-resource-group> \
    --zone-name $DNS_ZONE \
    --name "@" \
    --query "nsRecords[0].nsdname" \
    --output tsv

Use o servidor de nomes devolvido para nslookup testar a resolução:

nslookup contoso.com <name-server-from-above>

A resposta contém o endereço IP do endpoint saudável do Gestor de Tráfego de maior prioridade — sem quaisquer registos CNAME na resposta. Isto confirma que os Registos Ligados do Gestor de Tráfego devolvem endereços IP diretamente.

Ativação pós-falha de teste

  1. Navegue até ao seu domínio. Deves ver a página NGINX do VM-1.

  2. Parar a VM VM-1 :

    az vm stop --resource-group $RESOURCE_GROUP --name vm-1
    
  3. Espere alguns minutos até o Traffic Manager detetar o endpoint como pouco saudável.

  4. Esvazie a cache DNS local (ipconfig /flushdnsno Windows, sudo dscacheutil -flushcache no macOS) e navegue novamente até ao seu domínio. Agora deves ver a página do vm-2.

  5. Reiniciar o VM-1 para restaurar a configuração original:

    az vm start --resource-group $RESOURCE_GROUP --name vm-1
    

Limpeza de recursos

Quando já não precisares dos recursos criados neste tutorial, elimina o grupo de recursos e o registo DNS:

# Delete the resource group and all resources within it
az group delete --name $RESOURCE_GROUP --yes --no-wait

# Delete the Traffic Manager Linked Record from the DNS zone
az network dns record-set a delete \
    --resource-group <dns-zone-resource-group> \
    --zone-name $DNS_ZONE \
    --name "@" \
    --yes

Passos seguintes

Neste tutorial, criou um Registo Ligado do Gestor de Tráfego usando CLI do Azure. O registo liga o ápice da sua zona DNS a um perfil do Gestor de Tráfego, devolvendo endereços IP diretamente aos clientes.