Esercizio - Abilitare il failover automatico usando il routing prioritario

Completato

Si supponga che l'applicazione di streaming di contenuti musicali abbia una distribuzione di utenti simile negli Stati Uniti occidentali e in Europa occidentale. Si vuole definire una versione di failover dell'app in un'area.

L'applicazione di esempio usata per questo esercizio visualizza l'area in cui è in esecuzione. Una delle due istanze ha priorità più alta ed è l'endpoint primario. L'altra istanza ha priorità più bassa ed è l'endpoint di failover. Se l'endpoint primario viene portato offline, tutto il traffico viene automaticamente instradato all'endpoint di failover.

In questo esercizio si configurerà Gestione traffico in modo da usare l'endpoint degli Stati Uniti come primario, con il failover all'endpoint europeo se si verificano errori.

Creare un nuovo profilo di Gestione traffico

  1. Eseguire questo comando in Cloud Shell per creare un nuovo profilo di Gestione traffico:

    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
    

    Nel comando si useranno questi parametri:

    • --routing-method Priority: crea il profilo di Gestione traffico usando il metodo di routing prioritario.
    • --unique-dns-name: crea il nome di dominio univoco a livello globale <unique-dns-name>.trafficmanager.net. Verrà usata la funzione Bash $RANDOM per restituire un numero intero casuale, in modo da garantire che il nome sia univoco.

Distribuire le applicazioni Web

  1. Eseguire questo comando per distribuire un modello di Resource Manager. Il modello crea due server, uno nell'area Europa occidentale e uno nell'area Stati Uniti occidentali 2. Tenere presente che la distribuzione potrebbe richiedere alcuni minuti.

    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)"
    

Aggiungere gli endpoint a Gestione traffico

  1. Le applicazioni Web sono ora in esecuzione nelle macchine virtuali. Eseguire i comandi seguenti per aggiungere le risorse degli indirizzi IP pubblici delle macchine virtuali come endpoint al profilo di Gestione traffico:

    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
    

    Il codice ottiene gli ID risorsa da entrambe le macchine virtuali, quindi usa gli ID per aggiungerle come endpoint al profilo di Gestione traffico. Il codice usa il flag --priority per impostare la priorità più alta per l'app dell'area Stati Uniti occidentali.

  2. Osservare ora gli endpoint configurati. Esegui questo comando:

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

Testare l'app

  1. Di seguito è possibile osservare il DNS visualizzato per le app Web e per il profilo di Gestione traffico. Eseguire i comandi seguenti per visualizzare gli indirizzi IP per ognuna delle risorse create.

  2. Recuperare l'indirizzo per l'app Web Stati Uniti occidentali 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. Recuperare l'indirizzo per l'app Web Europa occidentale:

    nslookup $(az network public-ip show \
            --resource-group "<rgn>[Sandbox resource group]</rgn>" \
            --name westeurope-vm-nic-pip \
            --query dnsSettings.fqdn \
            --output tsv)
    
  4. Recuperare l'indirizzo per il profilo di Gestione traffico:

    # 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)
    

    L'indirizzo per il profilo di Gestione traffico deve corrispondere all'indirizzo IP per l'IP pubblico westus2-vm-nic-pip assegnato alla macchina virtuale westus2-vm.

  5. Eseguire il comando seguente per passare al nome di dominio completo (FQDN, Fully Qualified Domain Name) del profilo di Gestione traffico. La richiesta viene indirizzata all'endpoint che risponde con la priorità più 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)
    

    Il codice visualizza l'FQDN in Cloud Shell. Selezionare l'FQDN per aprire una nuova finestra o una nuova scheda del browser.

  6. Verificare che l'applicazione funzioni e che la località indicata nella parte inferiore della pagina sia Stati Uniti occidentali 2:

    Screenshot of the running West US web app.

  7. Eseguire il comando seguente per disabilitare l'endpoint primario:

    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. Di seguito è possibile osservare di nuovo il DNS visualizzato per le app Web e per il profilo di Gestione traffico.

  9. Recuperare l'indirizzo per l'app Web Stati Uniti occidentali 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. Recuperare l'indirizzo per l'app Web Europa occidentale:

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westeurope-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  11. Recuperare l'indirizzo per il profilo di Gestione traffico:

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

    L'indirizzo per il profilo di Gestione traffico deve corrispondere all'app Web dell'area Europa occidentale.

  12. Testare di nuovo l'applicazione dal browser aggiornando la pagina Web. Gestione traffico dovrebbe reindirizzare automaticamente il traffico all'endpoint in Europa occidentale. A seconda del browser, l'operazione può richiedere alcuni minuti prima che l'indirizzo memorizzato nella cache in locale scada. L'apertura del sito in una finestra privata consente di ovviare a questa attesa, visualizzando immediatamente la modifica.

    Screenshot of the running West Europe web app.