練習 - 使用優先順序路由傳送啟用自動容錯移轉

已完成

讓我們假設您的音樂串流應用程式在美國西部和西歐皆擁有相等數量的使用者。 您希望在其中一個區域擁有該應用程式的容錯移轉版本。

我們將在此練習中使用的範例應用程式,會顯示其執行所在區域。 這兩個執行個體的其中一個擁有較高優先順序,因而為主要端點。 另外一個執行個體擁有較低的優先順序,因而為容錯移轉端點。 將主要端點離線,會自動將所有流量路由傳送到容錯移轉端點。

在此練習中,您將會設定流量管理員,使用美國端點作為主要端點,並在發生任何錯誤時容錯移轉至歐洲端點。

建立新的流量管理員設定檔

  1. 在 Cloud Shell 中執行下列命令來建立新的流量管理員設定檔:

    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
    

    您要在命令中使用這些參數:

    • --routing-method Priority:使用優先順序路由方法來建立流量管理員設定檔。
    • --unique-dns-name:建立全域唯一的網域名稱 <unique-dns-name>.trafficmanager.net。 我們會使用 $RANDOM Bash 函式來傳回隨機整數,確保名稱是唯一的。

部署 Web 應用程式

  1. 執行下列命令來部署 Resource Manager 範本。 該範本會建立兩部伺服器,一部位於西歐區域,另一部位於美國西部 2 區域。 請耐心等候,因為部署需要幾分鐘的時間。

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

將端點新增到流量管理員

  1. Web 應用程式現在已在虛擬機器上執行。 執行下列命令,以端點形式來將虛擬機器的公用 IP 位址資源新增到流量管理員設定檔:

    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
    

    程式碼會從這兩部虛擬機器中取得資源識別碼。 接著,程式碼會使用識別碼,以端點形式來將它們新增到流量管理員設定檔。 程式碼使用 --priority 旗標,將美國西部應用程式設為最高優先順序。

  2. 讓我們快速查看已設定的端點。 執行以下命令:

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

測試應用程式

  1. 讓我們查看 DNS 為 Web 應用程式及我們的流量管理員設定檔顯示的內容。 執行下列命令,以顯示我們所建立之每個資源的 IP 位址。

  2. 擷取美國西部 2 Web 應用程式的位址:

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westus2-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  3. 擷取西歐 Web 應用程式的位址:

    nslookup $(az network public-ip show \
            --resource-group "<rgn>[Sandbox resource group]</rgn>" \
            --name westeurope-vm-nic-pip \
            --query dnsSettings.fqdn \
            --output tsv)
    
  4. 擷取流量管理員設定檔的位址:

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

    流量管理員設定檔的位址應該符合指派給 westus2-vm 虛擬機器的 westus2-vm-nic-pip 公用 IP 的 IP 位址。

  5. 執行下列命令,以移至流量管理員設定檔的完整網域名稱 (FQDN)。 您的要求會路由傳送到以最高優先順序回應的端點。

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

    程式碼會在 Cloud Shell 中列印出 FQDN。 選取該 FQDN,來開啟新的瀏覽器視窗或索引標籤。

  6. 驗證應用程式可正常運作,且顯示於頁面底部的位置是「美國西部 2」:

    Screenshot of the running West US web app.

  7. 執行下列命令以停用主要端點:

    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. 讓我們再次查看 DNS 為 Web 應用程式及我們流量管理員設定檔顯示的內容。

  9. 擷取美國西部 2 Web 應用程式的位址:

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westus2-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  10. 擷取西歐 Web 應用程式的位址:

    nslookup $(az network public-ip show \
                --resource-group "<rgn>[Sandbox resource group]</rgn>" \
                --name westeurope-vm-nic-pip \
                --query dnsSettings.fqdn \
                --output tsv)
    
  11. 擷取流量管理員設定檔的位址:

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

    流量管理員設定檔的位址現在應該符合西歐 Web 應用程式。

  12. 重新整理網頁,在瀏覽器中再次測試應用程式。 流量管理員應該會自動將流量重新導向西歐端點。 視您的瀏覽器而定,本機快取的位址可能需要幾分鐘才會過期。 在無痕視窗中開啟網站應該可以略過快取,讓您立即看到變更。

    Screenshot of the running West Europe web app.