Avvio rapido: Indirizzare il traffico Web con un gateway applicazione Azure - 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 motivi di semplicità, questo articolo usa una semplice configurazione con un indirizzo IP front-end pubblico, un listener di base per ospitare un singolo sito nel gateway applicazione, una regola di routing di richiesta di base e due macchine virtuali nel pool back-end.

risorse del gateway applicazione

È anche possibile completare questa guida di avvio rapido usando Azure PowerShell oppure il portale di Azure.

Se non si dispone di una sottoscrizione di Azure, creare un account gratuito di Azure prima di iniziare.

Prerequisiti

  • 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.

Creare un 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.

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ò avere 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 multi-tenant come Servizio app di Azure. In questo esempio vengono create due macchine virtuali da usare come server back-end per il gateway applicazione. È anche possibile installare 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 UbuntuLTS \
    --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 e HTTP. Azure aggiunge quindi gli indirizzi IP privati delle interfacce di rete come server nel pool back-end del gateway applicazione.

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 pagina Regole. 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. ​
Testare il gateway applicazione

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

Passaggi successivi