Ćwiczenie — Tworzenie i konfigurowanie usługi Application Gateway
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.
Konfigurowanie sieci na potrzeby usługi Application Gateway
Aby utworzyć podsieć prywatną wymaganą przez usługę Application Gateway, uruchom następujące polecenie. Podsieć ma nazwę
appGatewaySubnet
i znajduje się w sieci wirtualnejvehicleAppVnet
utworzonej w poprzednim ćwiczeniu.az network vnet subnet create \ --resource-group $RG \ --vnet-name vehicleAppVnet \ --name appGatewaySubnet \ --address-prefixes 10.0.0.0/24
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
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
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.
Aby znaleźć prywatne adresy
webServer1
IP iwebServer2
, 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
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
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
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
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
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
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.
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
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
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
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.