Tutorial: Erstellen Sie einen Traffic Manager Linked Record mit Azure CLI

In diesem Tutorial erstellen Sie einen Traffic Manager Linked Record in Azure DNS mit der Azure CLI. Ein Traffic Manager Linked Record verbindet einen DNS-Datensatzsatz direkt mit einem Azure Traffic Manager-Profil und gibt IP-Adressen an Clients zurück, ohne eine Zwischenlösung von CNAME.

Wichtig

Traffic Manager Linked Records befindet sich derzeit in der VORSCHAU. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Für einen portalbasierten Walkthrough siehe Create a Traffic Manager Linked Record mit dem Azure-Portal. Für einen konzeptionellen Überblick siehe Traffic Manager Linked Records Übersicht.

In diesem Tutorial erfahren Sie, wie:

  • Erstellen Sie die Netzwerk- und virtuelle Maschineninfrastruktur.
  • Erstelle ein Traffic Manager-Profil mit Endpunkten.
  • Erstellen Sie einen Traffic Manager Linked Record mit Azure CLI.
  • Teste den vom Verkehrsmanager verknüpften Datensatz.

Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement.

  • Azure CLI Version 2.60 oder später lokal installiert oder Azure Cloud Shell verwenden. Führen Sie az --version aus, um Ihre Version zu überprüfen. Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI.

  • Ein in Azure DNS gehosteter Domänenname. Wenn du keine Azure DNS-Zone hast, erstelle eine und delegiere deine Domain an Azure DNS.

    Hinweis

    In diesem Tutorial wird contoso.com als Beispieldomänenname verwendet. Ersetzen Sie contoso.com durch Ihren eigenen Domänennamen.

Festlegen von Umgebungsvariablen

Setze Variablen für die Ressourcennamen und -standorte, die in diesem Tutorial verwendet werden, um zu vermeiden, dass sie in jedem Befehl wiederholt werden.

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

Ressourcengruppe erstellen

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

Erstellen des virtuellen Netzwerks

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

Erstellen eines virtuellen Webservercomputers

Erstellen Sie zwei Ubuntu-virtuelle Maschinen mit öffentlichen IP-Adressen, die als Traffic Manager-Endpunkte verwendet werden.

Erstellen Sie die öffentlichen IP-Adressen

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

Erstellen der Netzwerksicherheitsgruppe

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

Erstellen Sie die virtuellen Maschinen-NICs

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

Erstellen der virtuellen Computer

Hinweis

Ersetzen Sie <your-ssh-public-key> sie durch den Inhalt Ihrer SSH-Public-Key-Datei oder verwenden --generate-ssh-keys Sie, um ein neues Schlüsselpaar zu erstellen.

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

Der letzte Befehl wartet darauf, dass VM-2 erstellt wird. Beide VMs sind bereit, wenn der Befehl zurückkehrt.

Installiere NGINX auf beiden 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"

Abfrage der öffentlichen IP-Adressen

Beachten Sie die IP-Adressen beider VMs. Sie brauchen sie, wenn Sie Traffic Manager-Endpunkte hinzufügen.

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"

Erstellen Sie das Traffic Manager-Profil

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

Fügen Sie Endpunkte zum Traffic Manager-Profil hinzu

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

Holen Sie sich die vollständige Ressourcen-ID des Traffic Manager-Profils. Du brauchst es beim Erstellen des verknüpften Datensatzes.

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"

Erstellen Sie den verknüpften Datensatz des Verkehrsmanagers

Verwenden az network dns record-set a create Sie mit dem Parameter, --traffic-management-profile um den Traffic Manager Linked Record zu erstellen. Der folgende Befehl erstellt einen A-Datensatz am Zonenapex (@).

Hinweis

Der Parameter --traffic-management-profile ist in Azure CLI Version 2.60 und später verfügbar und erfordert die Traffic Manager Linked Records Vorschau-API (2024-06-01-previewoder später).

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

Hinweis

Ersetzen Sie <dns-zone-resource-group> sie durch die Ressourcengruppe, die Ihre Azure DNS-Zone enthält. Dies kann sich von der Ressourcengruppe unterscheiden, die das Traffic Manager-Profil enthält.

Um einen Traffic Manager Linked Record für eine Subdomain statt des Zonen-Apex zu erstellen, ersetzen "@" Sie zum Beispiel "www"durch den Unterdomainnamen:

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

Überprüfen Sie den verknüpften Datensatz

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

Die Ausgabe enthält eine trafficManagementProfile Eigenschaft mit der Traffic-Manager-Profil-Ressourcen-ID, die bestätigt, dass die Verbindung hergestellt ist:

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

Hinweis

Der in der Ausgabe angezeigte TTL-Wert wird aus der DNS-Konfiguration des Traffic Manager-Profils übernommen. Jeder TTL-Wert, der während der Datensatzerstellung angegeben wurde, wird ignoriert.

Testen Sie den verkehrsmanager-verknüpften Datensatz

Um die Namensauflösung zu testen, fragen Sie direkt einen der Azure DNS-Nameserver für Ihre Zone ab. Listen Sie zunächst die Nameserver Ihrer Zone auf:

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

Verwenden Sie den zurückgegebenen Nameserver mit nslookup , um die Auflösung zu testen:

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

Die Antwort enthält die IP-Adresse des gesunden Traffic Manager-Endpunkts mit der höchsten Priorität – ohne CNAME-Einträge in der Antwort. Dies bestätigt, dass Traffic Manager Linked Records IP-Adressen direkt zurückgibt.

Test des Failovers

  1. Besuchen Sie Ihre Domain. Du solltest die NGINX-Seite für VM-1 sehen.

  2. Stoppe die VM-1 :

    az vm stop --resource-group $RESOURCE_GROUP --name vm-1
    
  3. Warte ein paar Minuten, bis Traffic Manager den Endpunkt als ungesund erkennt.

  4. Löschen Sie Ihren lokalen DNS-Cache (ipconfig /flushdnsunter Windows, sudo dscacheutil -flushcache unter macOS) und besuchen Sie erneut Ihre Domain. Du solltest jetzt die Seite für VM-2 sehen.

  5. VM-1 neu starten, um die ursprüngliche Konfiguration wiederherzustellen:

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

Bereinigen von Ressourcen

Wenn Sie die in diesem Tutorial erstellten Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe und den DNS-Datensatz:

# 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

Nächste Schritte

In diesem Tutorial hast du einen Traffic Manager Linked Record mit Azure CLI erstellt. Der Datensatz verknüpft deinen DNS-Zonen-Apex mit einem Traffic Manager-Profil und gibt IP-Adressen direkt an die Clients zurück.