Come aggiornare un servizio cloud di Azure (versione classica)

Importante

Servizi cloud (versione classica) è ora deprecato per i nuovi clienti e verrà ritirato il 31 agosto 2024 per tutti i clienti. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager Azure Servizi cloud (supporto esteso).

Il processo di aggiornamento di un servizio cloud, inclusi i ruoli e il sistema operativo guest, richiede tre passaggi. Prima devono essere caricati i file binari e di configurazione per la nuova versione del nuovo servizio cloud o del sistema operativo. Quindi Azure riserva le risorse di calcolo e di rete per il servizio cloud in base ai requisiti della nuova versione del servizio cloud. Infine Azure esegue un aggiornamento in sequenza per aggiornare in modo incrementale il tenant alla nuova versione o al nuovo sistema operativo guest, mantenendo nello stesso tempo la disponibilità. Questo articolo illustra i dettagli dell'ultimo passaggio, l'aggiornamento in sequenza.

Aggiornare un servizio di Azure

Azure organizza le istanze del ruolo in raggruppamenti logici chiamati domini di aggiornamento. I domini di aggiornamento sono set logici di istanze del ruolo aggiornate come gruppo. Azure aggiorna un servizio cloud un dominio di aggiornamento alla volta, per consentire alle istanze negli altri domini di aggiornamento di continuare a gestire il traffico.

Il numero predefinito di domini di aggiornamento è 5. È possibile specificare un numero diverso di domini di aggiornamento includendo l'attributo upgradeDomainCount nel file di definizione del servizio (.csdef). Per altre informazioni sull'attributo upgradeDomainCount, vedere Schema di definizione di Servizi cloud di Azure (file con estensione csdef).

Quando si esegue un aggiornamento sul posto di uno o più ruoli nel servizio, Azure aggiorna i set di istanze del ruolo in base al dominio di aggiornamento a cui appartengono. Azure aggiorna tutte le istanze in un determinato dominio di aggiornamento (arrestandole, aggiornandole, riportandole online), quindi passa al dominio successivo. Arrestando solo le istanze in esecuzione nel dominio di aggiornamento corrente, Azure fa in modo che un aggiornamento venga eseguito con il minor impatto possibile sul servizio in esecuzione. Per altre informazioni, vedere Come avviene un aggiornamento .

Nota

Anche se i termini inglesi update e upgrade hanno un significato leggermente diverso nel contesto di Azure, sono stati entrambi tradotti con il termine italiano "aggiornamento" in relazione ai processi e alle descrizioni delle funzionalità di questo documento.

Il servizio deve definire almeno due istanze di un ruolo per aggiornarlo sul posto senza tempi di inattività. Se il servizio è costituito da una sola istanza di un ruolo, non è disponibile fino al termine dell'aggiornamento sul posto.

Questo articolo contiene le informazioni seguenti sugli aggiornamenti di Azure:

Modifiche consentite al servizio durante un aggiornamento

La tabella seguente mostra le modifiche consentite a un servizio durante un aggiornamento:

Modifiche consentite a hosting, servizi e ruoli Aggiornamento sul posto Gestione temporanea (scambio indirizzi VIP) Aggiornare e ridistribuire
Versione del sistema operativo
Livello di attendibilità .NET
Dimensioni macchina virtuale1 2
Impostazioni di archiviazione locali Solo aumento2
Aggiungere o rimuovere ruoli in un servizio
Numero di istanze di un particolare ruolo
Numero o tipo di endpoint per un servizio 2 No
Nomi e i valori delle impostazioni di configurazione
Valori (ma non nomi) delle impostazioni di configurazione
Aggiungere nuovi certificati
Modificare i certificati esistenti
Distribuire nuovo codice

1 Modifica delle dimensioni limitata al sottoinsieme di dimensioni disponibili per il servizio cloud.

2 Richiede Azure SDK 1.5 o versioni successive.

Avviso

La modifica della dimensione di una macchina virtuale eliminerà i dati locali.

Durante un aggiornamento, gli elementi seguenti non sono supportati:

  • Modifica del nome di un ruolo. Rimuovere e quindi aggiungere il ruolo con il nuovo nome.
  • Modifica del conteggio dei domini di aggiornamento.
  • Riduzione della dimensione delle risorse locali.

Se si apportano altri aggiornamenti alla definizione del servizio, ad esempio per diminuire la dimensione della risorsa locale, è necessario eseguire un aggiornamento dello scambio di indirizzi VIP. Per altre informazioni, vedere Scambiare la distribuzione.

Come avviene un aggiornamento

È possibile decidere se aggiornare tutti i ruoli del servizio oppure uno solo. In entrambi i casi, tutte le istanze di ogni ruolo che verrà aggiornato e appartiene al primo dominio di aggiornamento verranno arrestate, aggiornate e riportate online. Quando sono tornate online, le istanze del secondo dominio di aggiornamento vengono arrestate, aggiornate e riportate online. Un servizio cloud non può avere più di un aggiornamento attivo per volta. L'aggiornamento viene sempre eseguito usando la versione più recente del servizio cloud.

Il diagramma seguente illustra come avviene l'aggiornamento se si aggiornano tutti i ruoli nel servizio:

Aggiornare il servizio

Il diagramma successivo illustra come avviene l'aggiornamento se si aggiorna un solo ruolo:

Aggiornare il ruolo

Durante un aggiornamento automatico, il controller di infrastruttura di Azure valuta periodicamente l'integrità del servizio cloud per determinare quando è sicuro passare al dominio di aggiornamento successivo. Questa valutazione dell'integrità viene eseguita per ogni singolo ruolo e considera solo le istanze nella versione più recente (ad esempio, le istanze dei domini di aggiornamento già analizzati). In tal modo si verifica che, per ogni ruolo, un numero minimo di istanze del ruolo abbia raggiunto uno stato terminale soddisfacente.

Timeout dell'avvio dell’istanza del ruolo

Il controller dell’infrastruttura attende 30 minuti affinché ogni istanza del ruolo raggiunga uno stato avviato. Se la durata del timeout scade, il controller di infrastruttura prosegue all'istanza del ruolo successivo.

Impatto sui dati delle unità durante gli aggiornamenti dei servizi cloud

Quando si aggiorna un servizio da un'istanza singola a più istanze, Azure arresta i servizi mentre viene eseguito l'aggiornamento. Il contratto di servizio che garantisce la disponibilità del servizio si applica solo ai servizi distribuiti con più di una istanza. L'elenco seguente descrive come ogni scenario di aggiornamento di un servizio di Azure influisce sui dati di ogni unità:

Scenario Unità C Unità D Unità E
Riavvio macchina virtuale (VM) Mantenuta Mantenuta Mantenuta
Riavvio del portale Mantenuta Mantenuta Eliminata
Ricreazione dell'immagine del portale Mantenuta Eliminata Eliminata
Aggiornamento sul posto Mantenuta Mantenuta Eliminata
Migrazione di un nodo Eliminata Eliminata Eliminata

Nell'elenco precedente, l'unità E: rappresenta l'unità radice del ruolo e non dovrebbe essere hardcoded. Per rappresentare l'unità, usare invece la variabile di ambiente %RoleRoot%.

Per ridurre al minimo il tempo di inattività durante l'aggiornamento di un servizio a istanza singola, distribuire un nuovo servizio a più istanze nel server di staging ed eseguire uno scambio di indirizzi VIP.

Ripristino dello stato precedente di un aggiornamento

Azure offre flessibilità nella gestione dei servizi durante un aggiornamento perché consente di avviare più operazioni su un servizio, dopo che il controller dell’infrastruttura di Azure ha accettato la richiesta di aggiornamento iniziale. Un ripristino dello stato precedente può essere eseguito solo quando una modifica della configurazione o un aggiornamento è nello stato in corso durante la distribuzione. Un aggiornamento viene considerato in corso finché esiste almeno un'istanza del servizio non aggiornata alla nuova versione. Per testare se è consentito un ripristino dello stato precedente, controllare che il valore del flag RollbackAllowed sia impostato su true. Le operazioni Get Deployment e Get Cloud Service Properties restituiscono il flag RollbackAllowed come riferimento.

Nota

Chiamare ripristino dello stato precedente è utile solo per un aggiornamento sul posto perché gli aggiornamenti con scambio di indirizzo VIP comportano la sostituzione di un'intera istanza in esecuzione del servizio con un'altra.

Il ripristino dello stato precedente di un aggiornamento in corso ha gli effetti seguenti sulla distribuzione:

  • Le istanze del ruolo non aggiornate o che non sono passate alla nuova versione rimangono inalterate, poiché tali istanze stanno già eseguendo la versione di destinazione del servizio.
  • Per le istanze del ruolo già aggiornate o che sono passate alla nuova versione di file del pacchetto di servizio (*.cspkg) o del file di configurazione del servizio (*.cscfg), oppure di entrambi i file, viene ripristinata la versione precedente all'aggiornamento di tali file.

Le funzioni seguenti offrono questa funzionalità:

  • Operazione Rollback Update Or Upgrade, che può essere chiamata per un aggiornamento della configurazione (attivato chiamando Change Deployment Configuration) o per il passaggio a un livello superiore (attivato chiamando Upgrade Deployment) purché sia presente almeno un'istanza nel servizio non ancora aggiornata alla nuova versione.

  • Elemento Locked ed elemento RollbackAllowed, restituiti come parte del corpo della risposta delle operazioni Get Deployment e Get Cloud Service Properties:

    1. L'elemento Locked consente di rilevare quando un'operazione di mutazione può essere richiamata in una determinata distribuzione.
    2. L'elemento RollbackAllowed consente di rilevare quando l'operazione Rollback Update Or Upgrade può essere chiamata in una determinata distribuzione.

    Per eseguire un ripristino dello stato precedente, non è necessario controllare entrambi gli elementi Locked e RollbackAllowed. È sufficiente verificare che RollbackAllowed sia impostato su true. Questi elementi vengono restituiti solo se questi metodi vengono richiamati usando l'intestazione della richiesta impostata su "x-ms-version: 2011-10-01" o versione successiva. Per altre informazioni sulle intestazioni del controllo delle versioni, vedere Controllo delle versioni del modello di distribuzione classico.

In alcune situazioni il ripristino dello stato precedente o il passaggio a un livello superiore non è supportato, come nei casi seguenti:

  • Riduzione nelle risorse locali: se l'aggiornamento aumenta le risorse locali per un ruolo, la piattaforma Azure non consente il ripristino dello stato precedente.
  • Limitazioni della quota: se l'aggiornamento ha comportato un'operazione di riduzione, è possibile che la quota di calcolo non sia più sufficiente per completare l'operazione di ripristino dello stato precedente. A ogni sottoscrizione di Azure è associata una quota. La quota specifica il numero massimo di core che tutti i servizi ospitati appartenenti a tale sottoscrizione possono utilizzare. Se l'esecuzione di un ripristino dello stato precedente di un determinato aggiornamento comporta il superamento della quota prevista per la sottoscrizione, tale ripristino non verrà abilitato.
  • Race condition: se l'aggiornamento iniziale viene completato, non è possibile eseguire il ripristino dello stato precedente.

Il ripristino dello stato precedente di un aggiornamento può essere utile, ad esempio, se si usa l'operazione Upgrade Deployment in modalità manuale per controllare la frequenza con cui un aggiornamento sul posto principale viene distribuito al servizio ospitato di Azure.

Durante la distribuzione dell'aggiornamento, chiamare Upgrade Deployment in modalità manuale e iniziare ad analizzare i domini di aggiornamento. Se a un certo punto, durante il monitoraggio dell'aggiornamento, si nota che alcune istanze del ruolo nei domini del primo aggiornamento non rispondono, è possibile richiamare l'operazione Rollback Update Or Upgrade nella distribuzione. Questa operazione lascia invariate le istanze che rimangono non aggiornate ed esegue il ripristino dello stato precedente delle istanze aggiornate al pacchetto e alla configurazione del servizio precedente.

Avvio di più operazioni di mutazione durante una distribuzione

In alcuni casi, potrebbe essere necessario avviare più operazioni di mutazione simultanee in una distribuzione in corso. Ad esempio, è possibile eseguire un aggiornamento del servizio e, mentre l'aggiornamento viene implementato, si vuole apportare alcune modifiche, ad esempio il ripristino dello stato precedente dell’aggiornamento, l'applicazione di un aggiornamento diverso o anche l'eliminazione della distribuzione. Un caso in cui questo scenario potrebbe verificarsi potrebbe essere quello in cui un aggiornamento del servizio contiene un codice con errori che fa arrestare più volte in modo anomalo un'istanza del ruolo aggiornata. In questo caso, il controller dell’infrastruttura di Azure non è in grado di far proseguire l'applicazione di tale aggiornamento perché il numero di istanze integre nel dominio aggiornato non è sufficiente. Questa condizione viene chiamata distribuzione bloccata. Per sbloccare la distribuzione, ripristinare lo stato precedente dell'aggiornamento o applicare un nuovo aggiornamento sopra quello non riuscito.

Dopo che il controller dell’infrastruttura di Azure ha ricevuto la richiesta iniziale di aggiornare il servizio o passarlo a un livello superiore, è possibile avviare le operazioni di mutazione successive. Questo significa che non è necessario attendere il completamento dell'operazione iniziale per poter avviare un'altra operazione di mutazione.

L'avvio di una seconda operazione di aggiornamento mentre il primo aggiornamento è in corso si svolge in modo simile all'operazione di ripristino dello stato precedente. Se il secondo aggiornamento è in modalità automatica, il primo dominio di aggiornamento viene aggiornato immediatamente e le istanze di più domini di aggiornamento potrebbero passare offline nello stesso momento.

Le operazioni di mutazione sono le seguenti: Change Deployment Configuration, Upgrade Deployment, Update Deployment Status, Delete Deployment e Rollback Update Or Upgrade.

Le due operazioni Get Deployment e Get Cloud Service Propertiesrestituiscono il flag Bloccato. È possibile esaminare il flag Bloccato per determinare se è possibile richiamare un'operazione di mutazione in una determinata distribuzione.

Per chiamare la versione di questi metodi che restituisce il flag Bloccato, è necessario impostare l'intestazione della richiesta su "x-ms-version: 2011-10-01" o versione successiva. Per altre informazioni sulle intestazioni del controllo delle versioni, vedere Controllo delle versioni del modello di distribuzione classico.

Distribuzione di ruoli nei domini di aggiornamento

Azure distribuisce in tutti i domini di aggiornamento lo stesso numero di istanze di un ruolo, che è possibile configurare come parte del file di definizione del servizio (.csdef). Il numero massimo di domini di aggiornamento è 20 e quello predefinito è 5. Per altre informazioni su come modificare il file csdef, vedere Schema di definizione del servizio di Azure (file .csdef).

Se, ad esempio, il ruolo dispone di 10 istanze, per impostazione predefinita, ogni dominio di aggiornamento contiene due istanze. Se il ruolo ha 14 istanze, quattro domini di aggiornamento contengono tre istanze e un quinto dominio ne contiene due.

I domini di aggiornamento vengono identificati con un indice in base zero: il primo dominio di aggiornamento ha ID 0, il secondo dominio di aggiornamento ha ID 1 e così via.

II diagramma seguente illustra come vengono distribuiti i ruoli in un servizio contenente due ruoli quando il servizio definisce due domini di aggiornamento. Il servizio esegue otto istanze del ruolo Web e nove istanze del ruolo di lavoro.

Distribuzione di domini di aggiornamento

Nota

Si noti che Azure controlla come le istanze vengono allocate nei domini di aggiornamento. Non è possibile specificare quali istanze vengono allocate in ogni dominio.

Passaggi successivi

Come gestire i servizi cloud
Come monitorare i servizi cloud
Come configurare i servizi cloud