Ćwiczenie — Tworzenie i konfigurowanie usługi Application Gateway

Ukończone

Usługa Application Gateway nasłuchuje w punkcie końcowym dla żądań przychodzących, a następnie przekazuje te żądania do jednego z serwerów internetowych w puli zaplecza. Udostępnisz konfigurację, która opisuje sposób kierowania ruchem przez usługę Application Gateway oraz sposób równoważenia obciążenia żądań między serwerami internetowymi.

W systemie działu pojazdów samochodowych należy skonfigurować usługę Application Gateway w celu równoważenia obciążenia żądań przychodzących na serwerach internetowych hostujących aplikację internetową do rejestracji pojazdów. Należy również skonfigurować usługę Application Gateway, aby wykryć, kiedy jeden z serwerów sieci Web uległ awarii, aby mógł przekierowywać ruch do działającego serwera. Ponadto należy skonfigurować routing oparty na ścieżkach, aby wysyłać żądania dotyczące witryn do rejestrowania pojazdów i odnawiania praw jazdy do odpowiednich usług internetowych zaplecza.

W tym ćwiczeniu utworzysz wystąpienie usługi Application Gateway z pulą zaplecza w postaci serwerów internetowych. Zweryfikujesz, czy usługa Application Gateway jest skonfigurowana za pomocą poprawnego odbiornika służącego do obsługi przychodzących żądań HTTP i kieruje te żądania do działającego serwera internetowego.

Diagram przedstawiający zasoby, które zostaną wdrożone.

Konfigurowanie sieci na potrzeby usługi Application Gateway

  1. Aby utworzyć podsieć prywatną wymaganą przez usługę Application Gateway, uruchom następujące polecenie. Podsieć ma nazwę appGatewaySubnet i znajduje się w sieci wirtualnej vehicleAppVnet utworzonej w poprzednim ćwiczeniu.

    az network vnet subnet create \
      --resource-group $RG \
      --vnet-name vehicleAppVnet  \
      --name appGatewaySubnet \
      --address-prefixes 10.0.0.0/24
    
  2. Aby utworzyć publiczny adres IP i etykietę DNS dla usługi Application Gateway, uruchom następujące polecenie. Etykieta DNS musi być unikatowa w skali globalnej. Aby wygenerować etykietę, w poniższym kodzie użyto funkcji $RANDOM.

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

Tworzenie bramy aplikacji

  1. Najpierw użyj następującego polecenia, aby utworzyć zasady zapory aplikacji internetowej:

    az network application-gateway waf-policy create \
      --name waf-pol \
      --resource-group $RG \
      --type OWASP \
      --version 3.2
    
  2. Użyj następującego polecenia, aby utworzyć bramę aplikacji o nazwie vehicleAppGateway z następującą konfiguracją:

    • Pula zaplecza zawierająca adresy IP maszyn wirtualnych serwera internetowego.
    • Zapora blokująca złośliwe żądania, takie jak żądania wstrzykujące kod SQL i przeprowadzające ataki z użyciem skryptów między witrynami.
    • Tymczasowy odbiornik, który nasłuchuje portu 8080. Ten odbiornik zostanie zastąpiony w późniejszym kroku, ale jest wymagany do utworzenia usługi Application Gateway.
    • Reguła kierująca te żądania do serwerów internetowych w puli zaplecza (i równoważąca ich obciążenie).
    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
    

    Uwaga

    Wykonanie tego polecenia może potrwać kilka minut.

  3. Aby znaleźć prywatne adresy webServer1 IP i webServer2, uruchom następujące polecenia:

    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. Następnie dodamy pule zaplecza dla każdej witryny internetowej. Najpierw utwórz pulę zaplecza dla witryny rejestracji pojazdów działającej na maszynach wirtualnych. Upewnij się, że adresy IP w poniższym poleceniu są zgodne z adresami IP, które zostały wyświetlone jako dane wyjściowe z poprzednich poleceń.

    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. Aby utworzyć pulę zaplecza dla witryny odnawiania licencji uruchomionej w usłudze App Service, uruchom następujące polecenie:

    az network application-gateway address-pool create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name appServicePool \
        --servers $APPSERVICE.azurewebsites.net
    
  6. W przypadku portu 80 utwórz port frontonu:

    az network application-gateway frontend-port create \
        --resource-group $RG \
        --gateway-name vehicleAppGateway \
        --name port80 \
        --port 80
    
  7. Aby obsłużyć żądania na porcie 80, utwórz odbiornik:

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

Dodawanie sondy kondycji

  1. Utwórz sondę kondycji testującą dostępność serwera internetowego. Sonda kondycji jest uruchamiana co 15 sekund (--interval 15) i wysyła żądanie HTTP GET do ścieżki poziomu głównego aplikacji internetowej. Jeśli aplikacja internetowa nie odpowiada w ciągu 10 sekund (--timeout 10), limit czasu sondy. Serwer internetowy jest oznaczony jako w złej kondycji, jeśli sonda zakończy się niepowodzeniem trzy razy z rzędu (--threshold 3).

    Ponieważ używasz usługi App Service jako jednego z zaplecza, ustawisz nagłówek hosta na nazwę usługi App Service. Bez tego ustawienia usługa App Service nie odpowie i nie będzie wyświetlana jako dobra.

    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. Następnie, aby użyć utworzonej sondy kondycji, utwórz ustawienia PROTOKOŁU HTTP dla bramy:

    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
    

Konfigurowanie routingu opartego na ścieżkach

Teraz konieczne jest skonfigurowanie routingu opartego na ścieżkach dla usługi Application Gateway. Skierujemy żądania dla ścieżki /VehicleRegistration/ do puli vmPool, a żądania do ścieżki /LicenseRenewal/ do puli appServicePool. Wszystkie żądania bez żadnego kontekstu URL będą kierowane do puli vmPool jako domyśne.

  1. Aby utworzyć mapę ścieżki dla puli vmPool, uruchom następujące polecenie:

    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. Aby utworzyć regułę mapy ścieżki dla puli appServicePool, uruchom następujące polecenie:

    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. Teraz utwórz nową regułę routingu przy użyciu utworzonej mapy ścieżek:

    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. Ostatni element konfiguracji polega na usunięciu reguły utworzonej podczas początkowego wdrażania usługi Application Gateway. Nie jest już ona potrzebna, ponieważ została ustawiona reguła niestandardowa.

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

Wszystko jest już skonfigurowane, więc nadszedł czas na testowanie.