Avvio rapido: Indirizzare il traffico Web con un gateway applicazione di Azure dall'interfaccia della riga di comando di Azure
In questa guida di avvio rapido si userà l'interfaccia della riga di comando di Azure per creare un gateway applicazione. Successivamente, verrà testato il gateway per verificare che funzioni correttamente.
Il gateway applicazione indirizza il traffico Web dell'applicazione a risorse specifiche in un pool back-end. Verranno assegnati i listener alle porte, verranno create le regole e verranno aggiunte le risorse a un pool back-end. Per semplicità, questo articolo utilizza una configurazione semplice con un indirizzo IP front-end pubblico, un listener di base per ospitare un singolo sito nel gateway applicazione, una regola di gestione per l'instradamento delle richieste e due macchine virtuali nel pool back-end.
È anche possibile completare questa guida di avvio rapido usando Azure PowerShell oppure il portale di Azure.
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.
- Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.0.4 o successiva. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Nota
Il front-end del gateway applicazione supporta ora indirizzi IP dual stack (anteprima). È ora possibile creare fino a quattro indirizzi IP front-end: due indirizzi IPv4 (pubblici e privati) e due indirizzi IPv6 (pubblici e privati).
Crea gruppo di risorse
In Azure, si allocano le risorse correlate a un gruppo di risorse. Per creare un gruppo di risorse, usare il comando 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
Per le comunicazioni tra le risorse create in Azure è necessaria una rete virtuale. La subnet del gateway applicazione può contenere solo i gateway applicazione. Non sono consentite altre risorse. È possibile creare una nuova subnet per il gateway applicazione o usarne una esistente. In questo esempio vengono create due subnet: una per il gateway applicazione e l'altra per i server back-end. L'IP front-end del gateway applicazione può essere configurato come pubblico o privato a seconda del caso d'uso. In questo esempio si sceglierà un indirizzo IP front-end pubblico.
Nota
Il front-end del gateway applicazione supporta ora indirizzi IP dual stack (anteprima pubblica). È ora possibile creare fino a quattro indirizzi IP front-end: due indirizzi IPv4 (pubblici e privati) e due indirizzi IPv6 (pubblici e privati).
Per creare la rete virtuale e la subnet, usare il comando az network vnet create
. Eseguire az network public-ip create
per creare l'indirizzo IP pubblico.
az network vnet create \
--name myVNet \
--resource-group myResourceGroupAG \
--location eastus \
--address-prefix 10.21.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.21.0.0/24
az network vnet subnet create \
--name myBackendSubnet \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--address-prefix 10.21.1.0/24
az network public-ip create \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
Creare i server back-end
Un back-end può disporre di schede di interfaccia di rete, set di scalabilità di macchine virtuali, indirizzi IP pubblici, indirizzi IP interni, nomi di dominio completi (FQDN) e back-end multitenant come Servizio app di Azure. In questo esempio vengono create due macchine virtuali da usare come server back-end per il gateway applicazione. Si installa inoltre NGINX nelle macchine virtuali per testare il gateway applicazione.
Creare due macchine virtuali
Installare il server Web NGINX nelle macchine virtuali per verificare l'avvenuta creazione del gateway applicazione. È possibile usare un file di configurazione cloud-init per installare NGINX ed eseguire un'app Node.js "Hello World" in una macchina virtuale Linux. Per altre informazioni su cloud-init, vedere gli Supporto di cloud-init per macchine virtuali in Azure.
In Azure Cloud Shell, copiare e incollare la configurazione seguente in un file denominato cloud-init.txt. Immettere editor cloud-init.txt per creare il file.
#cloud-config
package_upgrade: true
packages:
- nginx
- nodejs
- npm
write_files:
- owner: www-data:www-data
- path: /etc/nginx/sites-available/default
content: |
server {
listen 80;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
- owner: azureuser:azureuser
- path: /home/azureuser/myapp/index.js
content: |
var express = require('express')
var app = express()
var os = require('os');
app.get('/', function (req, res) {
res.send('Hello World from host ' + os.hostname() + '!')
})
app.listen(3000, function () {
console.log('Hello world app listening on port 3000!')
})
runcmd:
- service nginx restart
- cd "/home/azureuser/myapp"
- npm init
- npm install express -y
- nodejs index.js
Creare le interfacce di rete usando il comando az network nic create
. Per creare le macchine virtuali, usare il comando az vm create
.
for i in `seq 1 2`; do
az network nic create \
--resource-group myResourceGroupAG \
--name myNic$i \
--vnet-name myVNet \
--subnet myBackendSubnet
az vm create \
--resource-group myResourceGroupAG \
--name myVM$i \
--nics myNic$i \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data cloud-init.txt
done
Creare il gateway applicazione
Creare un gateway applicazione usando il comando az network application-gateway create
. Quando si crea un gateway applicazione con l'interfaccia della riga di comando di Azure, specificare le informazioni di configurazione, ad esempio le impostazioni relative a capacità, SKU (ad esempio, Basic
) e HTTP. Azure aggiunge quindi gli indirizzi IP privati delle interfacce di rete come server nel pool back-end del gateway applicazione.
In questo esempio, viene usato lo SKU Standard v2.
address1=$(az network nic show --name myNic1 --resource-group myResourceGroupAG | grep "\"privateIPAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
address2=$(az network nic show --name myNic2 --resource-group myResourceGroupAG | grep "\"privateIPAddress\":" | grep -oE '[^ ]+$' | tr -d '",')
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroupAG \
--capacity 2 \
--sku Standard_v2 \
--public-ip-address myAGPublicIPAddress \
--vnet-name myVNet \
--subnet myAGSubnet \
--servers "$address1" "$address2" \
--priority 100
Il processo di creazione del gateway applicazione in Azure può richiedere fino a 30 minuti. Dopo averlo creato, è possibile visualizzare le impostazioni seguenti nella sezione Impostazioni della pagina Gateway applicazione:
- appGatewayBackendPool: disponibile nella pagina Pool back-end. Specifica il pool back-end richiesto.
- appGatewayBackendHttpSettings: disponibile nella pagina Impostazioni HTTP. Specifica che il gateway applicazione usa la porta 80 e il protocollo HTTP per la comunicazione.
- appGatewayHttpListener: disponibile nella pagina Listener. Specifica il listener predefinito associato ad appGatewayBackendPool.
- appGatewayFrontendIP: disponibile nella pagina Configurazioni IP front-end. Assegna myAGPublicIPAddress ad appGatewayHttpListener.
- rule1: disponibile nella pagine Rules. Specifica la regola di gestione predefinita associata ad appGatewayHttpListener.
Testare il gateway applicazione
Nonostante l'installazione di un server Web NGINX non sia necessaria per creare il gateway applicazione, è stata eseguita in questa guida introduttiva per verificare se il gateway applicazione è stato creato correttamente in Azure. Usare il comando az network public-ip show
per ottenere l'indirizzo IP pubblico del nuovo gateway applicazione.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
Copiare e incollare l'indirizzo IP pubblico nella barra degli indirizzi del browser.
Quando si aggiorna il browser, dovrebbe apparire il nome della seconda macchina virtuale. Tale nome indica che il gateway applicazione è stato creato correttamente e può connettersi al back-end.
Pulire le risorse
Quando le risorse create con il gateway applicazione non sono più necessarie, usare il comando az group delete
per eliminare il gruppo di risorse. L'eliminazione del gruppo di risorse comporta anche l'eliminazione del gateway applicazione e di tutte le risorse correlate.
az group delete --name myResourceGroupAG