练习 - 使用优先级路由启用自动故障转移

已完成

假设你的音乐流媒体应用程序在美国西部和西欧拥有相同的用户分布。 你希望在某个区域中拥有该应用的故障转移版本。

我们用于此练习的示例应用程序显示它运行时所在的区域。 其中一个实例具有更高的优先级,并将成为主终结点。 另一个实例的优先级较低,将成为故障转移终结点。 主终结点离线将自动将所有流量路由到故障转移终结点。

在本练习中,将设置流量管理器来将美国终结点作为主终结点,如果发生任何错误,会故障转移到欧洲终结点。

创建新的流量管理器配置文件

  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. 运行以下命令以部署资源管理器模板。 此模板会创建两个服务器,一个位于西欧区域,一个位于美国西部 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
    

    此代码会从这两个虚拟机中获取资源 ID。 然后,此代码使用这些 ID 将应用作为终结点添加到流量管理器配置文件中。 此代码使用 --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. 检索西欧 2 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. 检索西欧 2 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.