Oefening: Een toepassingsgateway maken en configureren

Voltooid

Application Gateway luistert op een eindpunt voor binnenkomende aanvragen en stuurt deze aanvragen vervolgens door naar een van de webservers in de back-endpool. U geeft de configuratie op die beschrijft hoe Application Gateway verkeer omleidt en hoe aanvragen over webservers worden verdeeld.

In het afdelingssysteem voor motorvoertuigen moet u Application Gateway configureren om binnenkomende aanvragen te verdelen over de webservers die als host fungeren voor de web-app voor voertuigregistratie. U moet Application Gateway ook configureren om te detecteren wanneer een van de webservers is mislukt, zodat verkeer naar een werkende server kan worden omgeleid. Daarnaast moet u padgebaseerde routering configureren om aanvragen voor de voertuigregistratie en sites voor het verlengen van licenties te verzenden naar de juiste back-endwebservices.

In deze oefening maakt u een instantie van App Gateway met een back-endpool met webservers. U gaat controleren of de toepassingsgateway is geconfigureerd met de juiste listener voor het verwerken van binnenkomende HTTP-aanvragen, en of deze aanvragen worden gerouteerd naar een werkende webserver.

Diagram showing the resources that will be deployed.

Het netwerk configureren voor Application Gateway

  1. Voer de volgende opdracht uit om een privésubnet te maken dat is vereist voor Application Gateway. Het subnet heet appGatewaySubnet en bevindt zich in het virtueel netwerk vehicleAppVnet dat u hebt gemaakt in een eerdere oefening.

    az network vnet subnet create \
      --resource-group $RG \
      --vnet-name vehicleAppVnet  \
      --name appGatewaySubnet \
      --address-prefixes 10.0.0.0/24
    
  2. Voer de volgende opdracht uit om een openbaar IP-adres en DNS-label te maken voor Application Gateway. De DNS-label moet wereldwijd uniek zijn. Voor het genereren van een label wordt de functie $RANDOM door de volgende code gebruikt.

    az network public-ip create \
      --resource-group $RG \
      --name appGatewayPublicIp \
      --sku Standard \
      --dns-name vehicleapp${RANDOM}
    

Een toepassingsgateway maken

  1. Gebruik eerst de volgende opdracht om een WAF-beleid te maken:

    az network application-gateway waf-policy create \
      --name waf-pol \
      --resource-group $RG \
      --type OWASP \
      --version 3.2
    
  2. Gebruik de volgende opdracht om een toepassingsgateway vehicleAppGateway met de volgende configuratie te maken:

    • Een back-endpool met de IP-adressen van de virtuele webservermachines.
    • Een firewall die schadelijke aanvragen blokkeert, zoals aanvragen die worden gebruikt door SQL-injectie en aanvallen door Cross-Site Scripting.
    • Een tijdelijke listener die luistert naar poort 8080. Deze listener wordt in een latere stap vervangen, maar is vereist voor het maken van Application Gateway.
    • Een regel op basis waarvan deze aanvragen worden gerouteerd (en verdeeld) naar de webservers in de back-endpool.
    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
    

    Notitie

    Het uitvoeren van deze opdracht kan enkele minuten in beslag nemen.

  3. Voer de volgende opdrachten uit om de privé-IP-adressen van webServer1 en webServer2te vinden:

    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. Vervolgens voegen we back-endpools voor elke website toe. Maak eerst de back-endpool voor de site voor voertuigregistratie die wordt uitgevoerd op virtuele machines. Zorg ervoor dat de IP-adressen in de opdracht hieronder overeenkomen met de IP-adressen die zijn uitgevoerd in de vorige opdrachten.

    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. Als u een back-endpool wilt maken voor de site voor licentievernieuwing die wordt uitgevoerd in App Service, voert u de volgende opdracht uit:

    az network application-gateway address-pool create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServicePool \
        --servers $APPSERVICE.azurewebsites.net
    
  6. Maak voor poort 80 een front-endpoort:

    az network application-gateway frontend-port create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name port80 \
        --port 80
    
  7. Als u aanvragen op poort 80 wilt verwerken, maakt u de listener:

    az network application-gateway http-listener create \
        --resource-group $RG \
        --name vehicleListener \
        --frontend-port port80 \
        --frontend-ip appGatewayFrontendIP \
        --gateway-name vehicleAppGateway
    

Een statuscontrole toevoegen

  1. Maak een statuscontrole waarmee de beschikbaarheid van een webserver wordt getest. De statuscontrole wordt elke 15 seconden (--interval 15) uitgevoerd en er wordt een HTTP GET-aanvraag verzonden naar het pad voor de hoofdmap van de web-app. Als de web-app niet binnen 10 seconden (--timeout 10) reageert, treedt er een time-out op voor de test. De webserver wordt gemarkeerd als beschadigd als de test drie keer achter elkaar mislukt (--threshold 3).

    Omdat u App Service als een van uw back-ends gebruikt, stelt u de hostheader in op de naam van de App Service. Zonder deze instelling reageert App Service niet en wordt deze niet weergegeven als in orde.

    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. Als u vervolgens de statustest wilt gebruiken die u hebt gemaakt, maakt u de HTTP-Instellingen voor de 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
    

Padgebaseerde routering configureren

Nu moeten we padgebaseerde routering configureren voor de toepassingsgateway. Aanvragen naar /VehicleRegistration/ worden naar de vmPool gerouteerd, en aanvragen naar /LicenseRenewal/ naar de appServicePool. Alle aanvragen zonder URL-context worden standaard gerouteerd naar de vmPool.

  1. Voer de volgende opdracht uit om de padtoewijzing voor de vmPool te maken:

    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. Voer de volgende opdracht uit om de padtoewijzingsregel voor de appServicePool te maken:

    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. Maak nu een nieuwe routeringsregel met behulp van de padtoewijzing die u hebt gemaakt:

    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. Het laatste deel van de configuratie is het verwijderen van de regel die we hebben gemaakt toen we de Application Gateway in eerste instantie hebben geïmplementeerd. Nu de aangepaste regel is ingevoerd, hebt u deze niet meer nodig.

    az network application-gateway rule delete \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name rule1
    

Nu alles is ingesteld, is het tijd om de werking ervan te testen.