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.
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 create
o . 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
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:
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.
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