Tutorial: Crea un registro enlazado con el gestor de tráfico usando CLI de Azure

En este tutorial, creas un Traffic Manager Linked Record en Azure DNS usando la CLI de Azure. Un Registro Enlazado de Traffic Manager conecta un conjunto de registros DNS directamente a un perfil de Azure Traffic Manager, devolviendo direcciones IP a clientes sin una resolución CNAME intermedia.

Para una guía basada en portal, consulte Crear un registro enlazado del Gestor de Tráfico usando el portal de Azure. Para una visión conceptual, véase Visión general de Registros Enlazados de Traffic Manager.

En este tutorial, obtendrá información sobre cómo:

  • Crear la infraestructura de redes y de máquinas virtuales.
  • Crea un perfil de Traffic Manager con endpoints.
  • Crea un registro vinculado del gestor de tráfico usando CLI de Azure.
  • Prueba el registro vinculado de Traffic Manager.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Prerequisites

  • Una cuenta de Azure con una suscripción activa.

  • Tenga instalada localmente CLI de Azure versión 2.60 o posterior, o utilice Azure Cloud Shell. Ejecute az --version para comprobar la versión. Para la instalación o la actualización, consulte Instalación de la CLI de Azure.

  • Un nombre de dominio hospedado en Azure DNS. Si no tienes una zona de Azure DNS, crea una y delega tu dominio a Azure DNS.

    Nota:

    En este tutorial, contoso.com se usa como nombre de dominio de ejemplo. Reemplace contoso.com por su propio nombre de dominio.

Establecimiento de variables de entorno

Establece variables para los nombres de recursos y ubicaciones usados a lo largo de este tutorial para evitar repetirlos en cada comando.

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

Creación del grupo de recursos

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

Crear la red 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

Creación de máquinas virtuales de servidor web

Crea dos máquinas virtuales de Ubuntu con direcciones IP públicas para usarlas como puntos finales del Gestor de Tráfico.

Crear las direcciones IP públicas

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

Creación del grupo de seguridad de red

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

Crear las NIC de las máquinas virtuales

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

Creación de las máquinas virtuales

Nota:

Sustituye <your-ssh-public-key> por el contenido de tu archivo de clave pública SSH, o usa --generate-ssh-keys para crear un nuevo par de claves.

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

El último comando espera a que se cree vm-2. Ambas máquinas virtuales están listas cuando el comando finaliza.

Instala NGINX en ambas máquinas virtuales

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 las direcciones IP públicas

Fíjate en las direcciones IP de ambas máquinas virtuales. Los necesitarás al añadir puntos de conexión de 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"

Crear el perfil de Traffic Manager

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

Añadir endpoints al perfil del 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

Obtén el ID completo del recurso del perfil del Traffic Manager. Lo necesitas al crear el registro enlazado.

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"

Crear el Registro Vinculado de Traffic Manager

Utiliza az network dns record-set a create con el parámetro --traffic-management-profile para crear el registro vinculado de Traffic Manager. El siguiente comando crea un registro A en el ápice de la zona (@).

Nota:

El --traffic-management-profile parámetro está disponible en CLI de Azure versión 2.60 y posterior, y requiere una versión de API que soporte registros enlazados con Traffic Manager (2024-06-01-previewo 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

Nota:

Sustituye <dns-zone-resource-group> por el grupo de recursos que contiene tu zona Azure DNS. Esto puede diferir del grupo de recursos que contiene el perfil de Traffic Manager.

Para crear un Registro Enlazado del Gestor de Tráfico para un subdominio en lugar del ápice de la zona, sustituya "@" por el nombre del subdominio, por ejemplo "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

Verifica el registro vinculado

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

La salida incluye una trafficManagementProfile propiedad con el ID de recurso del perfil del Gestor de Tráfico, confirmando que el enlace está establecido:

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

Nota:

El valor TTL mostrado en la salida se hereda de la configuración DNS del perfil del Gestor de Tráfico. Se ignora cualquier valor TTL especificado durante la creación del registro.

Prueba el registro enlazado de Traffic Manager

Para probar la resolución de nombres, consulta directamente uno de los servidores de nombres de Azure DNS para tu zona. Primero, enumera los servidores de nombres de tu 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

Utiliza el servidor de nombres devuelto con nslookup para probar la resolución:

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

La respuesta contiene la dirección IP del endpoint saludable de mayor prioridad del Gestor de Tráfico, sin ningún registro CNAME en la respuesta. Esto confirma que los Registros Enlazados del Gestor de Tráfico devuelven direcciones IP directamente.

Conmutación por error de prueba

  1. Navega por tu dominio. Deberías ver la página NGINX de VM-1.

  2. Detener la VM vm-1:

    az vm stop --resource-group $RESOURCE_GROUP --name vm-1
    
  3. Espera unos minutos a que Traffic Manager detecte el endpoint como poco saludable.

  4. Vacía tu caché DNS local (ipconfig /flushdns en Windows, sudo dscacheutil -flushcache en macOS) y vuelve a acceder a tu dominio. Ahora deberías ver la página de VM-2.

  5. Reinicia VM-1 para restaurar la configuración original:

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

Limpieza de recursos

Cuando ya no necesites los recursos creados en este tutorial, elimina el grupo de recursos y el registro 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

Pasos siguientes

En este tutorial, creaste un Registro Enlazado del Gestor de Tráfico usando CLI de Azure. El registro vincula el ápice de tu zona DNS con un perfil de Traffic Manager, devolviendo direcciones IP directamente a los clientes.