Partilhar via


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

Como administrador de TI gerenciando 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.

Exemplo de encaminhamento de URL

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 pool, para que este possa dimensionar automaticamente.
  • Execute um teste para verificar se 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 conta do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • 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 create. 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
endereço IP do Frontend do Portal da Aplicação Atribui myAGPublicIPAddress para appGatewayHttpListener.
regra 1 A regra de encaminhamento predefinida associada a appGatewayHttpListener.

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

Adicione conjuntos de back-end denominados imagesBackendPool e videoBackendPool ao gateway de aplicação, utilizando az network application-gateway address-pool create. Adicionas a porta de frontend aos grupos 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 ouvinte de backend

Adicione o ouvinte de back-end denominado backendListener que é necessário para encaminhar 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 do URL

Os mapas de caminho de URL garantem que URLs específicas são encaminhadas para pools de backend 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 a porta de entrada de aplicações

Para obter o endereço IP público do gateway de aplicação, utilize o comando 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

Testar o URL base no gateway de aplicação

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

Testar o URL de imagens no gateway de aplicação

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.

Testar o URL de vídeo no gateway de aplicação

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 redirecionamento baseado no caminho do URL