Esercizio - Creare e configurare un gateway applicazione
Il gateway applicazione è in ascolto delle richieste in ingresso su un endpoint, quindi inoltra queste richieste a uno dei server Web nel pool back-end. Si fornirà la configurazione che descrive in che modo il gateway applicazione indirizza il traffico e come bilanciare il carico delle richieste tra server Web.
Nel sistema del reparto automobili è necessario configurare gateway applicazione per bilanciare il carico delle richieste in ingresso tra i server Web che ospitano l'app Web di registrazione del veicolo. È anche necessario configurare il gateway applicazione per rilevare l'eventuale malfunzionamento di uno dei server Web in modo da poter reindirizzare il traffico a un server funzionante. Inoltre, è necessario configurare il routing basato sul percorso per inviare richieste per i siti di registrazione dei veicoli e rinnovo delle patenti ai servizi Web back-end appropriati.
In questo esercizio si creerà un'istanza del gateway applicazione con un pool back-end di server Web. Si verificherà che il gateway applicazione sia configurato con il listener corretto per gestire le richieste HTTP in ingresso e che indirizzi tali richieste a un server Web funzionante.
Configurare la rete per il gateway applicazione
Per creare la subnet privata richiesta dal gateway applicazione, eseguire il comando seguente. La subnet è denominata
appGatewaySubnet
, nella rete virtualevehicleAppVnet
creata nell'esercizio precedente.az network vnet subnet create \ --resource-group $RG \ --vnet-name vehicleAppVnet \ --name appGatewaySubnet \ --address-prefixes 10.0.0.0/24
Per creare un indirizzo IP pubblico e un'etichetta DNS per il gateway applicazione, eseguire il comando seguente. L'etichetta DNS deve essere univoca a livello globale. Per generare un'etichetta, il codice seguente usa la funzione
$RANDOM
.az network public-ip create \ --resource-group $RG \ --name appGatewayPublicIp \ --sku Standard \ --dns-name vehicleapp${RANDOM}
Creare un gateway applicazione
Per prima cosa, usare il comando seguente per creare un criterio WAF:
az network application-gateway waf-policy create \ --name waf-pol \ --resource-group $RG \ --type OWASP \ --version 3.2
Usare il comando seguente per creare un gateway applicazione denominato
vehicleAppGateway
con la configurazione seguente:- Pool back-end contenente gli indirizzi IP delle macchine virtuali del server Web.
- Un firewall che blocca le richieste dannose, come quelle usate dagli attacchi di tipo SQL injection e scripting intersito.
- Listener temporaneo in ascolto della porta 8080. Questo listener verrà sostituito in un passaggio successivo, ma è necessario per la creazione del gateway applicazione.
- Una regola che indirizza le richieste ai server Web nel pool back-end ed esegue il bilanciamento del carico.
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
Nota
Il completamento di questo comando può richiedere alcuni minuti.
Per trovare gli indirizzi IP privati di
webServer1
ewebServer2
, eseguire i comandi seguenti: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
Aggiungere quindi i pool back-end per ogni sito Web. Creare prima di tutto il pool back-end per il sito di registrazione dei veicoli in esecuzione nelle macchine virtuali. Verificare che gli indirizzi IP nel comando riportato di seguito corrispondano agli indirizzi IP restituiti dai comandi precedenti.
az network application-gateway address-pool create \ --gateway-name vehicleAppGateway \ --resource-group $RG \ --name vmPool \ --servers 10.0.1.4 10.0.1.5
Per creare un pool back-end per il sito di rinnovo delle licenze in esecuzione in servizio app, eseguire il comando seguente:
az network application-gateway address-pool create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name appServicePool \ --servers $APPSERVICE.azurewebsites.net
Per la porta 80 creare una porta front-end:
az network application-gateway frontend-port create \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name port80 \ --port 80
Per gestire le richieste sulla porta 80, creare il listener:
az network application-gateway http-listener create \ --resource-group $RG \ --name vehicleListener \ --frontend-port port80 \ --frontend-ip appGatewayFrontendIP \ --gateway-name vehicleAppGateway
Aggiungere un probe di integrità
Creare un probe di integrità che consente di testare la disponibilità di un server Web. Il probe di integrità viene eseguito ogni 15 secondi (
--interval 15
) e invia una richiesta HTTP GET al percorso radice dell'app Web. Se l'app Web non risponde entro 10 secondi (--timeout 10
), si verifica il timeout del probe. Il server Web è contrassegnato come non integro se il probe ha esito negativo tre volte in successione (--threshold 3
).Poiché si sta usando il servizio app come uno dei back-end, l'intestazione host verrà impostata sul nome del servizio app. Senza questa impostazione, il servizio app non risponderà e non verrà mostrato come integro.
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
Per usare il probe di integrità creato, creare quindi le impostazioni HTTP per il 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
Configurare il routing basato sul percorso
È ora necessario configurare il routing basato sul percorso per il gateway applicazione. Le richieste per /VehicleRegistration/ verranno indirizzate a vmPool e quelle per /LicenseRenewal/ verranno indirizzate a appServicePool. Tutte le richieste senza contesto URL verranno indirizzate a vmPool per impostazione predefinita.
Per creare la mappa percorso per vmPool, eseguire il comando seguente:
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
Per creare la regola della mappa percorso per appServicePool, eseguire il comando seguente:
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
A questo punto, creare una nuova regola di gestione usando la mappa percorso creata:
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
L'ultimo passaggio di configurazione consiste nell'eliminare la regola creata quando il gateway applicazione è distribuito inizialmente. perché non è più necessaria dopo che è stata sostituita dalla regola personalizzata.
az network application-gateway rule delete \ --resource-group $RG \ --gateway-name vehicleAppGateway \ --name rule1
Al termine della configurazione, è possibile eseguire il test.