Маршрутизация трафика для обеспечения высокого уровня доступности приложений — Azure CLI
Этот скрипт создает группу ресурсов, два плана службы приложений, два веб-приложения, профиль и две конечные точки диспетчера трафика. Диспетчер трафика направляет трафик в приложение в основном регионе. Если оно недоступно, трафик направляется в дополнительный регион. Перед выполнением этого скрипта необходимо задать уникальные в Azure значения MyWebApp, MyWebAppL1 и MyWebAppL2. После выполнения вы сможете подключиться к приложению в основном регионе, используя URL-адрес mywebapp.trafficmanager.net.
Чтобы выполнить этот пример, установите последнюю версию Azure CLI. Перед началом выполните команду az login
, чтобы создать подключение к Azure.
Примеры для Azure CLI написаны для оболочки bash
. Чтобы запустить этот пример в Windows PowerShell или командной строке, может потребоваться изменить элементы скрипта.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Пример скрипта
#!/bin/bash
# Passed validation in Cloud Shell on 2/28/2022
# <FullScript>
# Route traffic for high availability of applications
# Variables for Traffic Manager resources
let "randomIdentifier=$RANDOM*$RANDOM"
location1="East US"
location2="West Europe"
resourceGroup1="msdocs-tm-rg1-$randomIdentifier"
resourceGroup2="msdocs-tm-rg2-$randomIdentifier"
tag="direct-traffic-for-increased-application-availability"
webApp="msdocs-webapp-tm-$randomIdentifier"
webAppL1="msdocs-tm-webapp-L1-$randomIdentifier"
webAppL2="msdocs-tm-webapp-L2-$randomIdentifier"
trafficManagerProfile="msdocs-traffic-manager-profile-$randomIdentifier"
# Create a resource group in location one
echo "Creating $resourceGroup1 in $location1..."
az group create --name $resourceGroup1 --location "$location1" --tags $tag
# Create a resource group in location two
echo "Creating $resourceGroup2 in $location2..."
az group create --name $resourceGroup2 --location "$location2" --tags $tag
# Create a website deployed from GitHub in both regions (replace with your own GitHub URL).
gitrepo="https://github.com/Azure-Samples/app-service-web-dotnet-get-started.git"
# Create a hosting plan and website and deploy it in location one (requires Standard 1 minimum SKU).
echo "Creating $webAppL1 app service plan"
az appservice plan create \
--name $webAppL1 \
--resource-group $resourceGroup1 \
--sku S1
echo "Creating $webAppL1 web app"
az webapp create \
--name $webAppL1 \
--resource-group $resourceGroup1 \
--plan $webAppL1
echo "Deploying $gitrepo to $webAppL1"
az webapp deployment source config \
--name $webAppL1 \
--resource-group $resourceGroup1 \
--repo-url $gitrepo \
--branch master \
--manual-integration
# Create a hosting plan and website and deploy it in westus (requires Standard 1 minimum SKU).
echo "Creating $webAppL2 app service plan"
az appservice plan create \
--name $webAppL2 \
--resource-group $resourceGroup2 \
--sku S1
echo "Creating $webAppL2 web app"
az webapp create \
--name $webAppL2 \
--resource-group $resourceGroup2 \
--plan $webAppL2
echo "Deploying $gitrepo to $webAppL2"
az webapp deployment source config \
--name $webAppL2 \
--resource-group $resourceGroup2 \
--repo-url $gitrepo \
--branch master --manual-integration
# Create a Traffic Manager profile.
echo "Creating $trafficManagerProfile for $webApp"
az network traffic-manager profile create \
--name $trafficManagerProfile \
--resource-group $resourceGroup1 \
--routing-method Priority \
--unique-dns-name $webApp
# Create a traffic manager endpoint for the location one website deployment and set it as the priority target.
echo "Create traffic manager endpoint for $webAppL1"
l1Id=$(az webapp show \
--resource-group $resourceGroup1 \
--name $webAppL1 \
--query id \
--out tsv)
az network traffic-manager endpoint create \
--name endPoint1 \
--profile-name $trafficManagerProfile \
--resource-group $resourceGroup1 \
--type azureEndpoints \
--priority 1 \
--target-resource-id $l1Id
# Create a traffic manager endpoint for the location two website deployment and set it as the secondary target.
echo "Create traffic manager endpoint for $webAppL1"
l2Id=$(az webapp show \
--resource-group $resourceGroup2 \
--name $webAppL2 \
--query id --out tsv)
az network traffic-manager endpoint create \
--name endPoint2 \
--profile-name $trafficManagerProfile \
--resource-group $resourceGroup1 \
--type azureEndpoints \
--priority 2 \
--target-resource-id $l2Id
# </FullScript>
# echo "Deleting all resources"
# az group delete --name $resourceGroup1 -y
# az group delete --name $resourceGroup2 -y
Очистка развертывания
Выполнив пример сценария, вы можете удалить группу ресурсов, приложение Службы приложений и все связанные ресурсы с помощью следующей команды.
az group delete --name myResourceGroup1 --yes
az group delete --name myResourceGroup2 --yes
Описание скрипта
Для создания группы ресурсов, веб-приложения, профиля диспетчера трафика и всех связанных ресурсов этот скрипт использует следующие команды. Для каждой команды в таблице приведены ссылки на соответствующую документацию.
Команда | Примечания. |
---|---|
az group create | Создает группу ресурсов, в которой хранятся все ресурсы. |
az appservice plan create | Создает план службы приложений. Это как ферма сервера для веб-приложения Azure. |
az webapp create | Создает веб-приложение Azure в плане службы приложений. |
az network traffic-manager profile create | Создает профиль диспетчера трафика Azure. |
az network traffic-manager endpoint create | Добавление конечной точки в профиль диспетчера трафика Azure. |
Следующие шаги
Дополнительные сведения об Azure CLI см. в документации по Azure CLI.
Дополнительные примеры скриптов Azure CLI для службы приложений см. в документации по сетям Azure.