Rotear o tráfego da Web baseado na URL usando a CLI do Azure
Como um administrador de TI que gerencia tráfego da Web, você deseja ajudar seus clientes e usuários a obter as informações necessárias o mais rápido possível. Uma maneira de otimizar essa experiência é roteando diferentes tipos de tráfego da Web para recursos de servidor diferentes. Este artigo mostra como usar a CLI do Azure para instalar e configurar o roteamento do Gateway de Aplicativo para vários tipos de tráfego do seu aplicativo. O roteamento, em seguida, direciona o tráfego para pools de servidor diferentes com base na URL.
Neste artigo, você aprenderá como:
- Criar um grupo de recursos para os recursos de rede necessários
- Criar os recursos de rede
- Criar um gateway de aplicativo para o tráfego proveniente de seu aplicativo
- Especificar pools de servidores e regras de roteamento para vários tipos de tráfego
- Criar um conjunto de dimensionamento para cada pool para que o pool possa fazer o dimensionamento automaticamente
- Executar um teste para que você possa verificar se os diferentes tipos de tráfego estão indo para os pools corretos
Se preferir, você pode concluir este procedimento usando o Azure PowerShell ou o portal do Azure.
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Este tutorial requer a versão 2.0.4 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.
Criar um grupo de recursos
Um grupo de recursos é um contêiner lógico nos quais os recursos do Azure são implantados e gerenciados. Crie um grupos de recursos usando az group create
.
O exemplo a seguir cria um grupo de recursos denominado myResourceGroupAG no local eastus.
az group create --name myResourceGroupAG --location eastus
Criar recursos da rede
Criar a rede virtual denominada myVNet e a sub-rede denominada myAGSubnet usando az network vnet create
. Em seguida, adicione uma sub-rede denominada myBackendSubnet, requerida pelos servidores de back-end, usando az network vnet subnet create
. Crie o endereço IP público denominado myAGPublicIPAddress usando az network public-ip create
.
az network vnet create \
--name myVNet \
--resource-group myResourceGroupAG \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.0.1.0/24
az network vnet subnet create \
--name myBackendSubnet \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--address-prefix 10.0.2.0/24
az network public-ip create \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
Criar o gateway de aplicativo com um mapa de URL
Use az network application-gateway create
para criar um gateway de aplicativo denominado myAppGateway. Quando você cria um gateway de aplicativo usando a CLI do Azure, você pode especificar informações de configuração, como configurações de HTTP, sku e capacidade. O gateway de aplicativo é atribuído a myAGSubnet e myAGPublicIPAddress.
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--subnet myAGsubnet \
--capacity 2 \
--sku Standard_v2 \
--http-settings-cookie-based-affinity Disabled \
--frontend-port 80 \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address myAGPublicIPAddress \
--priority 100
Pode levar vários minutos para criar o gateway de aplicativo. Depois de criar o gateway de aplicativo, você pode ver estes novos recursos:
Recurso | Descrição |
---|---|
appGatewayBackendPool | Um gateway de aplicativo deve ter pelo menos um pool de endereços de back-end. |
appGatewayBackendHttpSettings | Especifica que a porta 80 e um protocolo HTTP são usados para comunicação. |
appGatewayHttpListener | O ouvinte padrão associado ao appGatewayBackendPool |
appGatewayFrontendIP | Atribui myAGPublicIPAddress ao appGatewayHttpListener. |
rule1 | A regra padrão de roteamento que está associada ao appGatewayHttpListener. |
Adicionar pools de back-end de imagem e vídeo e uma porta
Adicione os pools de back-end denominados imagesBackendPool e videoBackendPool ao gateway de aplicativo usando az network application-gateway address-pool create
. Você adiciona a porta de front-end para os pools usando az network application-gateway frontend-port create
.
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name imagesBackendPool
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name videoBackendPool
az network application-gateway frontend-port create \
--port 8080 \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name port8080
Adicionar um ouvinte de back-end
Adicione o ouvinte de back-end denominado backendListener, que é necessário para rotear o tráfego usando az network application-gateway http-listener create
.
az network application-gateway http-listener create \
--name backendListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port port8080 \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway
Adicionar um mapa de caminho da URL
Os mapas de caminho de URL certificam que as URLs específicas sejam roteadas para pools de back-end específicos. Crie mapas de caminho da URL chamados imagePathRule e videoPathRule usando az network application-gateway url-path-map create
e az network application-gateway url-path-map rule create
.
az network application-gateway url-path-map create \
--gateway-name myAppGateway \
--name myPathMap \
--paths /images/* \
--resource-group myResourceGroupAG \
--address-pool imagesBackendPool \
--default-address-pool appGatewayBackendPool \
--default-http-settings appGatewayBackendHttpSettings \
--http-settings appGatewayBackendHttpSettings \
--rule-name imagePathRule
az network application-gateway url-path-map rule create \
--gateway-name myAppGateway \
--name videoPathRule \
--resource-group myResourceGroupAG \
--path-map-name myPathMap \
--paths /video/* \
--address-pool videoBackendPool \
--http-settings appGatewayBackendHttpSettings
Adicionar uma regra de roteamento
A regra de roteamento associa o mapa de URL ao listener que você criou. Adicione uma regra denominada rule2 usando az network application-gateway rule create
.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name rule2 \
--resource-group myResourceGroupAG \
--http-listener backendListener \
--rule-type PathBasedRouting \
--url-path-map myPathMap \
--address-pool appGatewayBackendPool \
--priority 200
Criar Conjuntos de Dimensionamento de Máquinas Virtuais
Neste artigo, você cria três Conjuntos de Dimensionamento de Máquinas Virtuais que oferecem suporte a três pools de back-end que você criou. Os conjuntos de dimensionamento que você cria são denominados myvmss1, myvmss2, e myvmss3. Cada conjunto de dimensionamento contém duas instâncias de máquina virtual nas quais você instala o NGINX.
for i in `seq 1 3`; do
if [ $i -eq 1 ]
then
poolName="appGatewayBackendPool"
fi
if [ $i -eq 2 ]
then
poolName="imagesBackendPool"
fi
if [ $i -eq 3 ]
then
poolName="videoBackendPool"
fi
az vmss create \
--name myvmss$i \
--resource-group myResourceGroupAG \
--image Ubuntu2204 \
--admin-username azureuser \
--admin-password Azure123456! \
--instance-count 2 \
--vnet-name myVNet \
--subnet myBackendSubnet \
--vm-sku Standard_DS2 \
--upgrade-policy-mode Automatic \
--app-gateway myAppGateway \
--backend-pool-name $poolName
done
Instalar o NGINX
for i in `seq 1 3`; do
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroupAG \
--vmss-name myvmss$i \
--settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
done
Testar o gateway de aplicativo
Para obter o endereço IP público do gateway de aplicativo, use az network public-ip show. Copie o endereço IP público e cole-o na barra de endereços do seu navegador. Como http://40.121.222.19
, http://40.121.222.19:8080/images/test.htm
ou http://40.121.222.19:8080/video/test.htm
.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
Altere a URL para http://<ip-address>:8080/images/test.html, substituindo o endereço IP por <ip-address> e você deverá ver algo semelhante ao exemplo a seguir:
Altere a URL para http://<ip-address>:8080/video/test.html, substituindo o endereço IP por <ip-address>. Você deverá ver algo semelhante ao seguinte exemplo.
Limpar os recursos
Quando não forem mais necessários, remova o grupo de recursos, o gateway de aplicativo e todos os recursos relacionados.
az group delete --name myResourceGroupAG
Próximas etapas
Criar um gateway de aplicativo com o redirecionamento baseado em caminhos de URL