Exercício – Criar e configurar um Gateway de Aplicação
O Application Gateway escuta em um ponto de extremidade as solicitações de entrada e, em seguida, encaminha essas solicitações para um dos servidores Web em seu pool de back-end. Você fornecerá a configuração que descreve como o Application Gateway direciona o tráfego e como balancear a carga de solicitações entre servidores Web.
No sistema do departamento de veículos motorizados, você precisa configurar o Application Gateway para balancear a carga de solicitações recebidas nos servidores Web que hospedam o aplicativo Web de registro de veículos. Você também precisa configurar o Application Gateway para detetar quando um dos servidores Web falhou para que ele possa redirecionar o tráfego para um servidor em funcionamento. Além disso, terá de configurar o encaminhamento baseado no caminho para enviar pedidos para os sites de registo de veículos e de renovação de cartas de condução para os serviços de back-end Web adequados.
Neste exercício, vai criar uma instância do Gateway de Aplicação com um conjunto de back-end de servidores Web. Vai verificar se o Gateway de Aplicação está configurado com o serviço de escuta correto para processar pedidos de HTTP recebidos e encaminhar estes pedidos para um servidor Web a funcionar.
Configurar a rede para o Gateway de Aplicação
Para criar a sub-rede privada exigida pelo Gateway de Aplicação, execute o seguinte comando. A sub-rede com o nome
appGatewaySubnet
, na rede virtualvehicleAppVnet
que criou no exercício anterior.az network vnet subnet create \ --resource-group $RG \ --vnet-name vehicleAppVnet \ --name appGatewaySubnet \ --address-prefixes 10.0.0.0/24
Para criar um endereço IP público e uma etiqueta DNS para o Gateway de Aplicação, execute o seguinte comando. A etiqueta DNS tem de ser globalmente exclusiva. Para gerar uma etiqueta, o código seguinte utiliza a função
$RANDOM
.az network public-ip create \ --resource-group $RG \ --name appGatewayPublicIp \ --sku Standard \ --dns-name vehicleapp${RANDOM}
Criar um gateway de aplicação
Primeiro, use o seguinte comando para criar uma política WAF:
az network application-gateway waf-policy create \ --name waf-pol \ --resource-group $RG \ --type OWASP \ --version 3.2
Use o seguinte comando para criar um gateway de aplicativo nomeado
vehicleAppGateway
com a seguinte configuração:- Um pool de back-end que contém os endereços IP das máquinas virtuais do servidor Web.
- Uma firewall que bloqueia pedidos maliciosos, como os utilizados por ataques de Injeção de SQL e de Scripting entre sites.
- Um ouvinte temporário que ouve a porta 8080. Esse ouvinte será substituído em uma etapa posterior, mas é necessário para a criação do Application Gateway.
- Uma regra que encaminha (e faz o balanceamento de carga) estes pedidos para os servidores Web no conjunto de back-end.
az network application-gateway create \ --resource-group $RG \ --name vehicleAppGateway \ --sku WAF_v2 \ --capacity 2 \ --vnet-name vehicleAppVnet \ --subnet appGatewaySubnet \ --public-ip-address appGatewayPublicIp \ --http-settings-protocol Http \ --http-settings-port 8080 \ --private-ip-address 10.0.0.4 \ --frontend-port 8080 \ --waf-policy waf-pol \ --priority 100
Nota
Este comando pode demorar vários minutos a concluir.
Para localizar os endereços IP privados de
webServer1
ewebServer2
, execute os seguintes comandos:az vm list-ip-addresses \ --resource-group $RG \ --name webServer1 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsv
az vm list-ip-addresses \ --resource-group $RG \ --name webserver2 \ --query [0].virtualMachine.network.privateIpAddresses[0] \ --output tsv
Em seguida, vamos adicionar os conjuntos de back-end a cada site. Primeiro, crie o pool de back-end para o site de registro de veículos em execução em máquinas virtuais. Verifique se os endereços IP no comando abaixo correspondem aos endereços IP gerados com os comandos anteriores.
az network application-gateway address-pool create \ --gateway-name vehicleAppGateway \ --resource-group $RG \ --name vmPool \ --servers 10.0.1.4 10.0.1.5
Para criar um pool de back-end para o site de renovação de licença em execução no Serviço de Aplicativo, execute o seguinte comando:
az network application-gateway address-pool create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServicePool \ --servers $APPSERVICE.azurewebsites.net
Para a porta 80, crie uma porta front-end:
az network application-gateway frontend-port create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name port80 \ --port 80
Para lidar com solicitações na porta 80, crie o ouvinte:
az network application-gateway http-listener create \ --resource-group $RG \ --name vehicleListener \ --frontend-port port80 \ --frontend-ip appGatewayFrontendIP \ --gateway-name vehicleAppGateway
Adicionar uma sonda de estado de funcionamento
Crie uma sonda de estado de funcionamento que teste a disponibilidade de um servidor Web. A pesquisa de estado de funcionamento é executada a cada 15 segundos (
--interval 15
) e envia um pedido GET de HTTP para o caminho raiz da aplicação Web. Se o aplicativo Web não responder em 10 segundos (--timeout 10
), o tempo limite da sonda expira. O servidor Web é marcado como não íntegro se o teste falhar três vezes consecutivas (--threshold 3
).Como você está usando o Serviço de Aplicativo como um dos seus back-ends, definirá o cabeçalho do host como o nome do Serviço de Aplicativo. Sem essa configuração, o Serviço de Aplicativo não responderá e não será mostrado como íntegro.
az network application-gateway probe create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name customProbe \ --path / \ --interval 15 \ --threshold 3 \ --timeout 10 \ --protocol Http \ --host-name-from-http-settings true
Em seguida, para usar a sonda de integridade que você criou, crie as Configurações HTTP para o gateway:
az network application-gateway http-settings create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appGatewayBackendHttpSettings \ --host-name-from-backend-pool true \ --port 80 \ --probe customProbe
Configurar o encaminhamento baseado no caminho
Agora, precisamos de configurar o encaminhamento baseado no caminho para o nosso Gateway de aplicação. Vamos encaminhar os pedidos para /VehicleRegistration/ para o vmPool e os pedidos para /LicenseRenewal/ para o appServicePool. Os pedidos sem nenhum contexto de URL serão encaminhados para o vmPool como predefinido.
Para criar o mapa de caminho para o vmPool, execute o seguinte comando:
az network application-gateway url-path-map create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name urlPathMap \ --paths /VehicleRegistration/* \ --http-settings appGatewayBackendHttpSettings \ --default-http-settings appGatewayBackendHttpSettings \ --address-pool vmPool \ --default-address-pool vmPool
Para criar a regra de mapa de caminho para o appServicePool, execute o seguinte comando:
az network application-gateway url-path-map rule create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServiceUrlPathMap \ --paths /LicenseRenewal/* \ --http-settings appGatewayBackendHttpSettings \ --address-pool appServicePool \ --path-map-name urlPathMap
Agora, crie uma nova regra de roteamento usando o mapa de caminho que você criou:
az network application-gateway rule create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServiceRule \ --priority 200 \ --http-listener vehicleListener \ --rule-type PathBasedRouting \ --address-pool appServicePool \ --url-path-map urlPathMap
A última parte da configuração é excluir a regra que criamos quando implantamos inicialmente o Application Gateway. Com a sua regra personalizada ativa, já não precisa da outra.
az network application-gateway rule delete \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name rule1
Com tudo configurado, chegou o momento de testar.