Exercício – Criar e configurar um Gateway de Aplicação

Concluído

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.

Diagram showing the resources that will be deployed.

Configurar a rede para o Gateway de Aplicação

  1. 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 virtual vehicleAppVnet 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
    
  2. 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

  1. 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
    
  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.

  3. Para localizar os endereços IP privados de webServer1 e webServer2, 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
    
  4. 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
    
  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
    
  6. 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
    
  7. 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

  1. 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
    
  2. 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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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.