Partilhar via


Tutorial:Criar um gateway de aplicação com o redirecionamento com base no caminho do URL, com a CLI do Azure

Pode utilizar a CLI do Azure para configurar regras de encaminhamento com base no caminho do URL quando cria um gateway de aplicação. Neste tutorial, irá criar grupos de back-end através de conjuntos de dimensionamento de máquinas virtuais. Em seguida, vai criar regras de encaminhamento de URL que asseguram que o tráfego da Web é redirecionado para o conjunto de back-end adequado.

Neste tutorial, irá aprender a:

  • Configurar a rede
  • Criar um gateway de aplicação
  • Adicionar ouvintes e regras de roteamento
  • Criar conjuntos de dimensionamento de máquinas virtuais para grupos de back-end.

O exemplo seguinte mostra o tráfego do site proveniente das portas 8080 e 8081 e que está a ser direcionado para os mesmos conjuntos de back-end:

Diagrama do exemplo de roteamento de URL do gateway de aplicativo.

Se preferir, pode executar este tutorial com o Azure PowerShell.

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. Crie 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 utilizando az network vnet create. Em seguida, pode adicionar a sub-rede denominada myBackendSubnet que é necessária pelos servidores de back-end, usando az network vnet subnet create. Crie o endereço IP público denominado 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 um gateway de aplicação

Utilize az network application-gateway create para criar o gateway de aplicação denominado 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 myPublicIPAddress que você criou anteriormente.

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:

  • appGatewayBackendPool - Um gateway de aplicação deve ter, pelo menos, um pool de endereços de back-end.
  • appGatewayBackendHttpSettings - especifica que a porta 80 e um protocolo HTTP são utilizados para a comunicação.
  • appGatewayHttpListener - o serviço de escuta predefinido associado a appGatewayBackendPool.
  • appGatewayFrontendIP - atribui o myAGPublicIPAddress ao appGatewayHttpListener.
  • rule1 - a regra de encaminhamento predefinida associada a appGatewayHttpListener.

Adicionar pools de back-end e portas

Pode adicionar conjuntos de endereços de back-end denominados imagesBackendPool e videoBackendPool ao gateway de aplicação, usando az network application-gateway address-pool create. Adicione as portas frontais 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 bport

az network application-gateway frontend-port create \
  --port 8081 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name rport

Adicionar ouvintes e regras

Adicionar ouvintes

Adicione os ouvintes de backend denominados backendListener e redirectedListener que são necessários 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 bport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

az network application-gateway http-listener create \
  --name redirectedListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port rport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

Adicionar o mapa de caminho de URL predefinido

Os mapas de caminhos de URL garantem que URLs específicas sejam roteadas para pools de back-end específicos. Pode criar mapas de caminho de URL denominados 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 urlpathmap \
  --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 urlpathmap \
  --paths /video/* \
  --address-pool videoBackendPool

Adicionar configuração de redirecionamento

Pode configurar o redirecionamento para o escutador usando az network application-gateway redirect-config create.

az network application-gateway redirect-config create \
  --gateway-name myAppGateway \
  --name redirectConfig \
  --resource-group myResourceGroupAG \
  --type Found \
  --include-path true \
  --include-query-string true \
  --target-listener backendListener

Adicionar o mapa do caminho do URL de redirecionamento

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name redirectpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --redirect-config redirectConfig \
  --rule-name redirectPathRule

Adicionar regras de encaminhamento

As regras de encaminhamento associam os mapas de caminho de URL aos escutadores que criou. Pode adicionar as regras denominadas defaultRule e redirectedRule com az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name defaultRule \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map urlpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name redirectedRule \
  --resource-group myResourceGroupAG \
  --http-listener redirectedListener \
  --rule-type PathBasedRouting \
  --url-path-map redirectpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

Criar conjuntos de dimensionamento de máquinas virtuais

Neste exemplo, irá criar três grupos de dimensionamento de máquinas virtuais que suportam os três pools de back-end que criou. Os conjuntos de dimensionamento que criar são denominados myvmss1, myvmss2 e myvmss3. Cada conjunto de dimensionamento contém duas instâncias de máquina virtual onde vai instalar o NGINX.

Substitua <azure-user> e <password> por um nome de usuário e senha de sua escolha.

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 <azure-user> \
    --admin-password <password> \
    --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 portal de aplicações

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, http://40.121.222.19:8080/video/test.htm ou http://40.121.222.19:8081/images/test.htm.

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

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

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

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

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

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

Agora, altere o URL para http://<ip-address>:8081/images/test.htm, substituindo o seu endereço IP por <ip-address>, e deverá ver o tráfego redirecionado de volta para o pool de back-end de imagens em http://<ip-address>:8080/images.

Limpar recursos

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

az group delete --name myResourceGroupAG

Próximos passos