Rotear tráfego para alta disponibilidade de aplicativos - CLI do Azure
Esse script cria um grupo de recursos, dois planos de serviço de aplicativo, dois aplicativos Web, um perfil de gerenciador de tráfego e dois pontos de extremidade do gerenciador de tráfego. O Gerenciador de Tráfego direciona o tráfego para o aplicativo em uma região como a região primária e para a região secundária quando o aplicativo na região primária não está disponível. Antes de executar o script, você deve alterar os valores MyWebApp, MyWebAppL1 e MyWebAppL2 para valores exclusivos no Azure. Depois de executar o script, você pode acessar o aplicativo na região primária com a URL mywebapp.trafficmanager.net.
Para executar este exemplo, instale a versão mais recente da CLI do Azure. Para começar, execute az login
para criar uma ligação ao Azure.
Exemplos para a CLI do Azure são escritos para o bash
shell. Para executar este exemplo no Windows PowerShell ou no Prompt de Comando, talvez seja necessário alterar elementos do script.
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Script de exemplo
#!/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
Limpar a implementação
Depois que o exemplo de script for executado, o comando a seguir poderá ser usado para remover o grupo de recursos, o aplicativo do Serviço de Aplicativo e todos os recursos relacionados.
az group delete --name myResourceGroup1 --yes
az group delete --name myResourceGroup2 --yes
Explicação do script
Este script utiliza os seguintes comandos para criar um grupo de recursos, uma aplicação Web, um perfil do gestor de tráfego e todos os recursos relacionados. Cada comando na tabela liga à documentação específica do comando.
Command | Notas |
---|---|
az group create | Cria um grupo de recursos no qual todos os recursos são armazenados. |
az appservice plan create | Cria um plano do Serviço de Aplicações. Isso é como um farm de servidores para seu aplicativo Web do Azure. |
az webapp create | Cria um aplicativo Web do Azure dentro do plano do Serviço de Aplicativo. |
az network traffic-manager perfil criar | Cria um perfil do Gestor de Tráfego do Azure. |
AZ Network Traffic-Manager Endpoint Criar | Adiciona um ponto final a um Perfil do Gestor de Tráfego do Azure. |
Próximos passos
Para obter mais informações sobre a CLI do Azure, veja Documentação da CLI do Azure.
Exemplos adicionais de script da CLI do Serviço de Aplicativo podem ser encontrados na documentação da Rede do Azure.