Share via


Rotear tráfego da Web com base na URL usando a CLI do Azure

Como administrador de TI que gerencia o tráfego da Web, você deseja ajudar seus clientes e usuários a obter as informações de que precisam o mais rápido possível. Uma forma de o fazer é otimizar a sua experiência ao encaminhar diferentes tipos de tráfego da Web para recursos de servidor diferente. Este artigo mostra como usar a CLI do Azure para configurar o roteamento do Gateway de Aplicativo para diferentes tipos de tráfego do seu aplicativo. O encaminhamento, em seguida, direciona o tráfego para agrupamentos de servidores diferentes com base no URL.

URL routing example

Neste artigo, vai aprender a:

  • Crie um grupo de recursos para os recursos de rede de que você precisa
  • Criar recursos de rede
  • Criar um gateway de aplicação para o tráfego proveniente da sua aplicação
  • Especificar agrupamentos de servidores e regras de encaminhamento para os diferentes tipos de tráfego
  • Criar um conjunto de dimensionamento para cada conjunto, para que o conjunto possa dimensionar automaticamente
  • Executar um teste para que possa verificar que os diferentes tipos de tráfego vão para o conjunto correto

Se preferir, você pode concluir este procedimento usando o Azure PowerShell ou o portal do Azure.

Se não tiver uma subscrição 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, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este tutorial requer a versão 2.0.4 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Criar um grupo de recursos

Um grupo de recursos é um contentor lógico no qual os recursos do Azure são implementados e geridos. Criar um grupo de recursos com az group create.

O exemplo seguinte cria um grupo de recursos com o nome myResourceGroupAG na localização eastus.

az group create --name myResourceGroupAG --location eastus

Criar recursos de rede

Crie a rede virtual denominada myVNet e a sub-rede denominada myAGSubnet com az network vnet create. Em seguida, adicione uma sub-rede chamada myBackendSubnet necessária para os servidores back-end usando az network vnet subnet createo . Crie o endereço IP público com o nome myAGPublicIPAddress com 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 aplicação com um mapa de URL

Utilize az network application-gateway create para criar um gateway de aplicação com o nome myAppGateway. Quando cria um gateway de aplicação com a CLI do Azure, especifica informações de configuração, tais como a capacidade, sku e definições de HTTP. 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

A criação do gateway de aplicação pode demorar vários minutos. Depois de criado o gateway de aplicação, pode ver estas novas funcionalidades:

Funcionalidade Descrição
appGatewayBackendPool Um gateway de aplicação tem de ter, pelo menos, um conjunto de endereços de back-end.
appGatewayBackendHttpSettings Especifica que a porta 80 e um protocolo HTTP são usados para comunicação.
appGatewayHttpListener O serviço de escuta predefinido associado a appGatewayBackendPool
appGatewayFrontendIP Aribui myAGPublicIPAddress a appGatewayHttpListener.
rule1 A regra de encaminhamento predefinida associada a appGatewayHttpListener.

Adicionar conjuntos e uma porta de back-end de imagens e vídeos

Adicione conjuntos de back-end denominados imagesBackendPool e videoBackendPool ao gateway de aplicação, com az network application-gateway address-pool create. Adicionar a porta de front-end aos conjuntos com 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 serviço de escuta de back-end

Utilize para adicionar o serviço de escuta do back-end denominado backendListeneraz network application-gateway http-listener create que é preciso para encaminhar o tráfego.

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 do URL

Os mapas de caminho de URL asseguram que são encaminhados URLs específicos para conjuntos de back-end específicos. Crie os mapa de caminho de URL com o nome imagePathRule e videoPathRule com 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 encaminhamento

A regra de encaminhamento associa os mapas do URL ao serviço de escuta que criou. Adicione uma regra com o nome rule2 com 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áquina virtual

Neste artigo, você cria três conjuntos de escala de máquina virtual que suportam os três pools de back-end criados. Vai criar conjuntos de dimensionamento denominados myvmss1, myvmss2 e myvmss3. Cada conjunto de dimensionamento contém duas instâncias de máquina virtual onde vai instalar 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 aplicação

Para obter o endereço IP público do gateway de aplicação, utilize az network public-ip show. Copie o endereço IP público e cole-o na barra de endereço do browser. Como, por exemplo, 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

Test base URL in application gateway

Altere o URL para http://< endereço-ip:8080/images/test.html, substituindo seu endereço IP por <endereço>> IP, e você verá algo como o exemplo a seguir:

Test images URL in application gateway

Altere o URL para http://< ip-address:8080/video/test.html, substituindo seu endereço IP por <endereço> ip>, e você verá algo como o exemplo a seguir.

Test video URL in application gateway

Clean up resources (Limpar recursos)

Quando já não forem precisos, remova o grupo de recursos, o gateway de aplicação e todos os recursos relacionados.

az group delete --name myResourceGroupAG

Próximos passos

Criar um gateway de aplicação com o redirecionamento com base no caminho do URL