Упражнение. Запуск автоматической отработки отказа с применением приоритетной маршрутизации

Завершено

Предположим, что ваше приложение для потоковой передачи музыки имеет равное распределение пользователей в западной США и западной Европе. В одном регионе вы хотели бы развернуть версию приложения с отработкой отказа.

Пример приложения, используемого для этого упражнения, отображает регион, в котором он выполняется. Один из двух экземпляров имеет более высокий приоритет и является первичной конечной точкой. Другой экземпляр имеет более низкий приоритет и является конечной точкой отработки отказа. Отключение первичной конечной точки от сети автоматически направляет весь трафик на конечную точку отработки отказа.

В этом упражнении вы настроите Диспетчер трафика использовать конечную точку США в качестве основной, отработку отказа в европейскую конечную точку при возникновении ошибок.

Создание нового профиля диспетчера трафика

  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. Чтобы гарантировать уникальность имени, мы используем функцию Bash $RANDOM, которая возвращает случайное целое число.

Развертывание веб-приложений

  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. Теперь веб-приложения работают на виртуальных машинах. Выполните следующие команды, чтобы добавить ресурсы общедоступного 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) для веб-приложений и для нашего профиля диспетчера трафика. Выполните приведенные ниже команды для отображения IP-адресов каждого из созданных нами ресурсов.

  2. Получите адрес веб-приложения "Западная часть США 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. Получите адрес для веб-приложения Западной Европы:

    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)
    

    Адрес профиля диспетчера трафика должен соответствовать IP-адресу для общедоступного IP-адреса westus2-vm-nic-pip, назначенного виртуальной машине westus2-vm.

  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)
    

    Код выводит полное доменное имя (FQDN) в Cloud Shell. Выберите полное доменное имя, чтобы открыть новое окно браузера или вкладку.

  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) для веб-приложений и нашего профиля диспетчера трафика.

  9. Получите адрес веб-приложения "Западная часть США 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. Получите адрес для веб-приложения Западной Европы.

    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)
    

    Адрес профиля Диспетчер трафика теперь должен соответствовать веб-приложению Западной Европы.

  12. Обновите веб-страницу, чтобы еще раз протестировать работу веб-приложения в браузере. Диспетчер трафика должен автоматически перенаправлять трафик в конечную точку Западной Европы. В зависимости от используемого браузера, может потребоваться несколько минут для истечения срока действия адреса, кэшированного локально. Открытие сайта в отдельном окне в конфиденциальном режиме должно обойти кэширование, поэтому вы сможете просмотреть изменения сразу же.

    Screenshot of the running West Europe web app.