Creare un gateway applicazione che ospita più siti Web usando l'interfaccia della riga di comando di Azure
È possibile usare l'interfaccia della riga di comando di Azure per configurare l'hosting di più siti Web quando si crea un gateway applicazione. In questo articolo vengono definiti pool di indirizzi back-end con set di scalabilità di macchine virtuali. e quindi si configurano i listener e le regole in base ai domini di cui si è proprietari per assicurarsi che il traffico Web raggiunga i server appropriati nei pool. Questo articolo presuppone che l'utente sia proprietario di più domini e che usi esempi di www.contoso.com e www.fabrikam.com.
In questo articolo vengono illustrate le operazioni seguenti:
- Configurare la rete
- Creare un gateway applicazione
- Creare i listener back-end
- Creare regole di gestione
- Creare set di scalabilità di macchine virtuali con i pool back-end
- Creare un record CNAME nel dominio
Se si preferisce, è possibile completare questa procedura usando Azure PowerShell.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- Per questa esercitazione è necessaria la versione 2.0.4 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Creare un gruppo di risorse
Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure. Creare un gruppo di risorse usando az group create.
L'esempio seguente crea un gruppo di risorse denominato myResourceGroupAG nella località eastus.
az group create --name myResourceGroupAG --location eastus
Creare risorse di rete
Creare la rete virtuale e la subnet denominata myVNet usando az network vnet create. È quindi possibile aggiungere la subnet necessaria per i server back-end usando az network vnet subnet create. Creare l'indirizzo IP pubblico denominato myAGPublicIPAddress tramite az network public-ip create.
az network vnet create \
--name myVNet \
--resource-group myResourceGroupAG \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.0.1.0/24
az network vnet subnet create \
--name myBackendSubnet \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--address-prefix 10.0.2.0/24
az network public-ip create \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
Creare il gateway applicazione
È possibile usare az network application-gateway create per creare il gateway applicazione. Quando si crea un gateway applicazione usando l'interfaccia della riga di comando di Azure, specificare le informazioni di configurazione, ad esempio le impostazioni relative a capacità, SKU e HTTP. Il gateway applicazione viene assegnato alla subnet myAGSubnet e all'indirizzo IP pubblico myAGPublicIPAddress creati in precedenza.
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--subnet myAGsubnet \
--capacity 2 \
--sku Standard_v2 \
--http-settings-cookie-based-affinity Disabled \
--frontend-port 80 \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address myAGPublicIPAddress \
--priority 10
Il processo di creazione del gateway applicazione può richiedere alcuni minuti. Dopo aver creato il gateway applicazione, saranno disponibili le nuove funzionalità seguenti:
- appGatewayBackendPool: un gateway applicazione deve avere almeno un pool di indirizzi back-end.
- appGatewayBackendHttpSettings: specifica che per le comunicazioni vengono usati la porta 80 e il protocollo HTTP.
- appGatewayHttpListener: il listener predefinito associato ad appGatewayBackendPool.
- appGatewayFrontendIP: assegna myAGPublicIPAddress ad appGatewayHttpListener.
- rule1: regola di routing predefinita associata ad appGatewayHttpListener.
Aggiungere i pool back-end
Aggiungere i pool back-end necessari in cui includere i server back-end usando az network application-gateway address-pool create
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name contosoPool
az network application-gateway address-pool create \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name fabrikamPool
Aggiungere i listener
Aggiungere i listener necessari per instradare il traffico usando az network application-gateway http-listener create.
Nota
Con il gateway applicazione o lo SKU WAF v2, è anche possibile configurare fino a 5 nomi host per listener ed è possibile usare caratteri jolly nel nome host. Per altre informazioni, vedere Nomi host con caratteri jolly nel listener .
Per usare più nomi host e caratteri jolly in un listener usando l'interfaccia della riga di comando di Azure, è necessario usare --host-names
anziché --host-name
. Con i nomi host, è possibile menzionare fino a cinque nomi host come valori separati da spazi. Ad esempio, --host-names "*.contoso.com *.fabrikam.com"
az network application-gateway http-listener create \
--name contosoListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port appGatewayFrontendPort \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway \
--host-name www.contoso.com
az network application-gateway http-listener create \
--name fabrikamListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port appGatewayFrontendPort \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway \
--host-name www.fabrikam.com
Aggiungere le regole di routing
Le regole vengono elaborate nell'ordine in cui sono elencate se il campo di priorità della regola non viene usato. Il traffico viene indirizzato usando la prima regola corrispondente indipendentemente dalla specificità. Se ad esempio si dispone di due regole, una che usa un listener di base e una che usa un listener multisito, entrambe sulla stessa porta, la regola con il listener multisito deve essere elencata prima della regola con il listener di base per funzionare come previsto.
In questo esempio si creano due nuove regole e si elimina la regola predefinita creata al momento della distribuzione del gateway applicazione. È possibile aggiungere la regola usando az network application-gateway rule create.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name contosoRule \
--resource-group myResourceGroupAG \
--http-listener contosoListener \
--rule-type Basic \
--address-pool contosoPool \
--priority 200
az network application-gateway rule create \
--gateway-name myAppGateway \
--name fabrikamRule \
--resource-group myResourceGroupAG \
--http-listener fabrikamListener \
--rule-type Basic \
--address-pool fabrikamPool \
--priority 100
az network application-gateway rule delete \
--gateway-name myAppGateway \
--name rule1 \
--resource-group myResourceGroupAG
Aggiungere la priorità alle regole di routing
Per assicurarsi che le regole più specifiche vengano elaborate per prime, usare il campo di priorità della regola per assicurarsi che abbiano priorità più alta. Il campo priorità regola deve essere impostato per tutte le regole di routing delle richieste esistenti e qualsiasi nuova regola creata in un secondo momento deve avere anche un valore di priorità della regola.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name contosoRule \
--resource-group myResourceGroupAG \
--http-listener contosoListener \
--rule-type Basic \
--priority 200 \
--address-pool contosoPool
az network application-gateway rule create \
--gateway-name myAppGateway \
--name fabrikamRule \
--resource-group myResourceGroupAG \
--http-listener fabrikamListener \
--rule-type Basic \
--priority 100 \
--address-pool fabrikamPool
Creare set di scalabilità di macchine virtuali
In questo esempio si creano tre set di scalabilità di macchine virtuali che supportano i tre pool back-end nel gateway applicazione. I set di scalabilità creati sono denominati myvmss1, myvmss2 e myvmss3. Ogni set di scalabilità contiene due istanze di macchina virtuale in cui si installa IIS.
for i in `seq 1 2`; do
if [ $i -eq 1 ]
then
poolName="contosoPool"
fi
if [ $i -eq 2 ]
then
poolName="fabrikamPool"
fi
az vmss create \
--name myvmss$i \
--resource-group myResourceGroupAG \
--image Ubuntu2204 \
--admin-username azureuser \
--admin-password Azure123456! \
--instance-count 2 \
--vnet-name myVNet \
--subnet myBackendSubnet \
--vm-sku Standard_D1_v2 \
--upgrade-policy-mode Automatic \
--app-gateway myAppGateway \
--backend-pool-name $poolName
done
Installare NGINX
for i in `seq 1 2`; do
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroupAG \
--vmss-name myvmss$i \
--settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"],
"commandToExecute": "./install_nginx.sh" }'
done
Creare un record CNAME nel dominio
Dopo aver creato il gateway applicazione con l'indirizzo IP pubblico, è possibile ottenere l'indirizzo DNS e usarlo per creare un record CNAME nel dominio. Per ottenere l'indirizzo DNS del gateway applicazione è possibile usare az network public-ip show. Copiare il valore fqdn di DNSSettings e usarlo come valore del record CNAME creato.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [dnsSettings.fqdn] \
--output tsv
Non è consigliabile usare record A perché l'indirizzo VIP può cambiare al riavvio del gateway applicazione.
Testare il gateway applicazione
Immettere il nome di dominio nella barra degli indirizzi del browser. Ad esempio, http://www.contoso.com.
Sostituire l'indirizzo con l'altro dominio come nell'esempio seguente:
Pulire le risorse
Quando non sono più necessari, rimuovere il gruppo di risorse, il gateway applicazione e tutte le risorse correlate.
az group delete --name myResourceGroupAG
Passaggi successivi
Creare un gateway applicazione con regole di routing basate su percorsi URL