Øvelse – Opret og konfigurer en programgateway

Fuldført

Application Gateway lytter på et slutpunkt for indgående anmodninger og videresender derefter disse anmodninger til en af webserverne i back end-gruppen. Du skal angive den konfiguration, der beskriver, hvordan Application Gateway dirigerer trafik, og hvordan anmodninger om belastningsjustering på tværs af webservere dirigeres.

I afdelingssystemet for motorkøretøjer skal du konfigurere Application Gateway til belastningsjustering af indgående anmodninger på tværs af webservere, der er vært for webappen til registrering af køretøjer. Du skal også konfigurere Application Gateway til at registrere, hvornår en af webserverne mislykkedes, så den kan omdirigere trafik til en arbejdsserver. Derudover skal du konfigurere stibaseret routing for at sende anmodninger om registrerings- og licensfornyelseswebsteder til de korrekte back end-webtjenester.

I denne øvelse skal du oprette en forekomst af Application Gateway med en back end-pulje af webservere. Du skal kontrollere, at Application Gateway er konfigureret med den korrekte lyttefunktion til at håndtere indgående HTTP-anmodninger og dirigerer disse anmodninger til en fungerende webserver.

diagram, der viser de ressourcer, der skal installeres.

Konfigurer netværket for Application Gateway

  1. Kør følgende kommando for at oprette det private undernet, der kræves af Application Gateway. Undernettet hedder appGatewaySubnetpå det vehicleAppVnet virtuelle netværk, du oprettede i den forrige øvelse.

    az network vnet subnet create \
      --resource-group $RG \
      --vnet-name vehicleAppVnet  \
      --name appGatewaySubnet \
      --address-prefixes 10.0.0.0/24
    
  2. Kør følgende kommando for at oprette en offentlig IP-adresse og et DNS-navn til Application Gateway. DNS-mærkaten skal være globalt entydig. Følgende kode bruger funktionen $RANDOM til at generere en etiket.

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

Opret en programgateway

  1. Brug først følgende kommando til at oprette en WAF-politik:

    az network application-gateway waf-policy create \
      --name waf-pol \
      --resource-group $RG \
      --type OWASP \
      --version 3.2
    
  2. Brug følgende kommando til at oprette en programgateway med navnet vehicleAppGateway med følgende konfiguration:

    • En back end-gruppe, der indeholder IP-adresserne på de virtuelle maskiner på webserveren.
    • En firewall, der blokerer skadelige anmodninger, f.eks. dem, der bruges af SQL Injection- og Cross-Site Scripting-angreb.
    • En midlertidig lytter, der lytter til port 8080. Denne lyttefunktion erstattes i et senere trin, men er påkrævet for oprettelse af programgateway.
    • En regel, der dirigerer (og belastningsjusteringer) disse anmodninger til webserverne i back end-gruppen.
    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
    

    Seddel

    Denne kommando kan tage flere minutter at fuldføre.

  3. Hvis du vil finde de private IP-adresser for webServer1 og webServer2, skal du køre følgende kommandoer:

    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. Derefter tilføjer vi back end-puljerne for hvert websted. Først skal du oprette back end-puljen for det køretøjsregistreringswebsted, der kører på virtuelle maskiner. Sørg for, at IP-adresserne i kommandoen nedenfor stemmer overens med de IP-adresser, der blev outputtet fra de forrige kommandoer.

    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. Hvis du vil oprette en back end-gruppe for det websted til licensfornyelse, der kører på App Service, skal du køre følgende kommando:

    az network application-gateway address-pool create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServicePool \
        --servers $APPSERVICE.azurewebsites.net
    
  6. Opret en frontendport for port 80:

    az network application-gateway frontend-port create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name port80 \
        --port 80
    
  7. Hvis du vil håndtere anmodninger på port 80, skal du oprette lyttefunktionen:

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

Tilføj en tilstandssonde

  1. Opret en tilstandssonde, der tester tilgængeligheden af en webserver. Tilstandssonden kører hvert 15. sekund (--interval 15) og sender en HTTP GET-anmodning til webappens rodsti. Hvis webappen ikke svarer inden for 10 sekunder (--timeout 10), får sonden timeout. Webserveren er markeret som usund, hvis sonden mislykkes tre gange efter hinanden (--threshold 3).

    Da du bruger App Service som en af dine back-ends, skal du angive værtsheaderen til navnet på App Service. Uden denne indstilling reagerer App Service ikke og vises ikke så sundt.

    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. Hvis du derefter vil bruge den tilstandstest, du har oprettet, skal du oprette HTTP-indstillingerne for 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
    

Konfigurer stibaseret routing

Nu skal vi konfigurere stibaseret routing for vores programgateway. Vi dirigerer anmodninger til /VehicleRegistration/ til vmPool- og anmodninger om at /LicenseRenewal/ til appServicePool-. Alle anmodninger uden nogen URL-kontekst dirigeres som standard til vmPool-.

  1. Kør følgende kommando for at oprette stioversigten for 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ølgende kommando for at oprette stitilknytningsreglen for 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. Opret nu en ny distributionsregel ved hjælp af den stioversigt, du har oprettet:

    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 sidste del af konfigurationen er at slette den regel, vi oprettede, da vi oprindeligt udrullede programgatewayen. Når din brugerdefinerede regel er på plads, har du ikke længere brug for den.

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

Når alt er konfigureret, er det tid til at teste det.