Installare e aggiornare applicazioni in set di scalabilità di macchine virtuali

Completato

Quando si distribuisce un'applicazione in un set di scalabilità, è necessario adottare un meccanismo per aggiornare l'applicazione in modo coerente, in tutte le istanze del set di scalabilità. Per ottenere questo risultato, è possibile usare un'estensione per script personalizzati.

Nello scenario della società di spedizioni è necessario un modo rapido per implementare gli aggiornamenti nell'applicazione, riducendo al minimo i disservizi per gli utenti finali. Un'estensione per script personalizzati è una soluzione ideale.

In questa unità verrà illustrato come usare un'estensione per script personalizzati per aggiornare un'applicazione in esecuzione in un set di scalabilità.

Che cos'è un'estensione per script personalizzati di Azure?

Un'estensione per script personalizzati di Azure scarica ed esegue uno script su una macchina virtuale di Azure. Può automatizzare le stesse attività in tutte le macchine virtuali in un set di scalabilità.

Archiviare gli script personalizzati in Archiviazione di Azure o in GitHub. Per aggiungerne uno a una macchina virtuale, è possibile usare il portale di Azure. Per eseguire script personalizzati come parte di una distribuzione basata su modelli, combinare un'estensione per script personalizzati con i modelli di Azure Resource Manager.

Installare un'applicazione in un set di scalabilità usando un'estensione per script personalizzati

Per usare un'estensione per script personalizzati con l'interfaccia della riga di comando di Azure, si crea un file di configurazione che definisce i file da ottenere e i comandi da eseguire. Il file è in formato JSON.

L'esempio seguente illustra una configurazione di script personalizzato che scarica un'applicazione da un repository in GitHub e la installa in un'istanza dell'host eseguendo uno script denominato custom_application_v1.sh:

# yourConfigV1.json 
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v1.sh"],
  "commandToExecute": "./custom_application_v1.sh"
}

Per distribuire questa configurazione nel set di scalabilità, è possibile usare un'estensione per script personalizzati. Il codice seguente illustra come creare un'estensione per script personalizzati per un set di scalabilità di macchine virtuali usando l'interfaccia della riga di comando di Azure. Questo comando installa la nuova app nelle macchine virtuali del set di scalabilità:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name yourScaleSet \
  --settings @yourConfigV1.json

Aggiornare un'applicazione in un set di scalabilità usando un'estensione per script personalizzati

È possibile usare un'estensione per script personalizzati per aggiornare un'app esistente in un set di scalabilità di macchine virtuali. Si definisce un riferimento a uno script di distribuzione aggiornato, quindi si riapplica l'estensione al set di scalabilità. Il frammento di codice JSON seguente, ad esempio, mostra una configurazione che recupera una nuova versione di un'applicazione e la installa:

# yourConfigV2.json
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v2.sh"],
  "commandToExecute": "./custom_application_v2.sh"
}

È quindi possibile usare lo stesso comando az vmss extension set illustrato in precedenza per distribuire l'app aggiornata, ma questa volta si farà riferimento al nuovo file di configurazione:

az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group yourResourceGroup \
    --vmss-name yourScaleSet \
    --settings @yourConfigV2.json

Le macchine virtuali vengono aggiornate in base ai criteri di aggiornamento per il set di scalabilità. Questi criteri vengono specificati al momento della creazione del set di scalabilità. I criteri di aggiornamento possono essere applicati in una delle tre modalità seguenti:

  • Automatica: il set di scalabilità non definisce quando le macchine virtuali vengono aggiornate. Potrebbero essere tutte aggiornate contemporaneamente, causando un'interruzione del servizio.
  • In sequenza: il set di scalabilità distribuisce l'aggiornamento in batch tra le macchine virtuali nel set di scalabilità. Una pausa facoltativa può ridurre al minimo o evitare interruzioni del servizio. In questa modalità, le macchine del set di scalabilità potrebbero eseguire versioni diverse dell'app per un breve periodo di tempo. Per questa modalità è necessario aggiungere un probe di integrità o applicare l'estensione per l'integrità delle applicazioni al set di scalabilità.
  • Manuale: le macchine virtuali esistenti nel set di scalabilità non vengono aggiornate. Tutte le modifiche devono essere eseguite manualmente. Questa modalità è quella predefinita.

Per specificare la modalità dei criteri di aggiornamento durante il provisioning di un set di scalabilità di macchine virtuali, usare l'opzione upgrade-policy-mode. L'esempio di codice seguente usa l'interfaccia della riga di comando di Azure:

az vmss create \
  --resource-group MyResourceGroup \
  --name MyScaleSet \
  --image Ubuntu2204 \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys