Övning – Skapa och konfigurera en Application Gateway

Slutförd

Application Gateway lyssnar på en slutpunkt för inkommande begäranden och vidarebefordrar sedan dessa begäranden till en av webbservrarna i serverdelspoolen. Du anger den konfiguration som beskriver hur Application Gateway dirigerar trafik och hur du belastningsbelastar begäranden mellan webbservrar.

I motorfordonsavdelningens system måste du konfigurera Application Gateway för att belastningsutjämning av inkommande begäranden mellan webbservrarna som är värd för webbappen för fordonsregistrering. Du måste också konfigurera Application Gateway för att identifiera när någon av webbservrarna har misslyckats så att den kan omdirigera trafik till en fungerande server. Dessutom behöver du konfigurera sökvägsbaserad dirigering för att skicka begäranden för webbplatserna för fordonsregistrering och licensförnyelse till korrekt serverdelswebbtjänster.

I den här övningen skapar du en instans av Application Gateway med en serverdelspool med webbservrar. Du kontrollerar att Application Gateway har konfigurerats med rätt lyssnare för att hantera inkommande HTTP-begäranden och dirigera dessa begäranden till en fungerande webbserver.

Diagram som visar de resurser som ska distribueras.

Konfigurera nätverket för Application Gateway

  1. Skapa det privata undernät som krävs av Application Gateway genom att köra följande kommando. Undernätet heter appGatewaySubnet i det virtuella nätverket vehicleAppVnet som du skapade i föregående övning.

    az network vnet subnet create \
      --resource-group $RG \
      --vnet-name vehicleAppVnet  \
      --name appGatewaySubnet \
      --address-prefixes 10.0.0.0/24
    
  2. Skapa en offentlig IP-adress och en DNS-etikett för Application Gateway genom att köra följande kommando. DNS-etiketten måste vara globalt unikt. Följande kod använder funktionen $RANDOM för att generera en etikett.

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

Skapa en programgateway

  1. Använd först följande kommando för att skapa en WAF-princip:

    az network application-gateway waf-policy create \
      --name waf-pol \
      --resource-group $RG \
      --type OWASP \
      --version 3.2
    
  2. Använd följande kommando för att skapa en programgateway med namnet vehicleAppGateway med följande konfiguration:

    • En serverdelspool som innehåller IP-adresserna för de virtuella webbserverdatorerna.
    • En brandvägg som blockerar skadliga begäranden, till exempel dem som används av attacker via SQL-inmatning och skriptkörning över flera webbplatser.
    • En tillfällig lyssnare som lyssnar på port 8080. Den här lyssnaren ersätts i ett senare steg, men krävs för att Skapa Application Gateway.
    • En regel som dirigerar (och belastningsutjämnar) dessa begäranden till webbservrarna i serverdelspoolen.
    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
    

    Kommentar

    Det här kommandot kan ta flera minuter att slutföra.

  3. Kör följande kommandon för att hitta de privata IP-adresserna webServer1 för och webServer2:

    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. Därefter lägger vi till serverdelspoolerna för varje webbplats. Skapa först serverdelspoolen för den fordonsregistreringsplats som körs på virtuella datorer. Kontrollera att IP-adresserna i kommandot nedan matchar de IP-adresser som har skickats från föregående kommandon.

    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. Kör följande kommando för att skapa en serverdelspool för webbplatsen för licensförnyelse som körs på App Service:

    az network application-gateway address-pool create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServicePool \
        --servers $APPSERVICE.azurewebsites.net
    
  6. För port 80 skapar du en klientdelsport:

    az network application-gateway frontend-port create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name port80 \
        --port 80
    
  7. Om du vill hantera begäranden på port 80 skapar du lyssnaren:

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

Lägga till en hälsoavsökning

  1. Skapa en hälsoavsökning som testar tillgängligheten för en webbserver. Hälsoavsökningen körs var 15:e sekund (--interval 15) och skickar en HTTP GET-begäran till webbappens rotsökväg. Om webbappen inte svarar inom 10 sekunder (--timeout 10) överskrider avsökningen tidsgränsen. Webbservern markeras som felaktig om avsökningen misslyckas tre gånger i följd (--threshold 3).

    Eftersom du använder App Service som en av dina serverdelar anger du värdhuvudet till namnet på App Service. Utan den här inställningen svarar inte App Service och visas inte som felfri.

    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. Om du sedan vill använda hälsoavsökningen som du skapade skapar du HTTP-inställningarna för gatewayen:

    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
    

Konfigurera sökvägsbaserad dirigering

Nu behöver vi konfigurera sökvägsbaserad dirigering för Application Gateway. Vi dirigerar begäranden till /VehicleRegistration/ till vmPool och begäranden till /LicenseRenewal/ till appServicePool. Begäranden utan URL-kontext dirigeras till vmPool som standard.

  1. Kör följande kommando för att skapa sökvägskartan för vmPool:

    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. Kör följande kommando för att skapa sökvägsmappningsregeln för appServicePool:

    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. Skapa nu en ny routningsregel med hjälp av sökvägskartan som du skapade:

    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. Den sista konfigurationen är att ta bort regeln som vi skapade när vi först distribuerade Application Gateway. Nu när den anpassade regeln finns på plats behöver du den inte längre.

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

Allt har konfigurerats, så nu är det dags att testa.