Utilizzando una combinazione di famiglie di immagini personalizzate e aggiornamenti in sequenza, puoi attivare gli upgrade delle immagini del sistema operativo con un solo clic sul tuo gruppo di istanze gestite (MIG).
L'utilizzo dell'upgrade dell'immagine del sistema operativo con un solo clic offre una serie di vantaggi, tra cui:
- Funziona con tutti i tipi di macchine VM e tutte le dimensioni dei gruppi di istanze.
- Supporta immagini e container sia Windows che Linux.
- Le istanze vengono ricreate in base al modello di istanza corrente o, facoltativamente, in base a un nuovo modello, in modo da poter conservare gli script di avvio e i metadati personalizzati.
- Funziona con i gruppi di istanze gestite stateful, quindi se vuoi puoi conservare i dati sui dischi non di avvio.
- L'implementazione di un aggiornamento alla nuova versione del sistema operativo avviene automaticamente, senza bisogno di ulteriori input utente'utente dopo la richiesta iniziale.
- Supporta gli aggiornamenti batch con un controllo di integrità facoltativo.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Come funziona l'upgrade dell'immagine del sistema operativo con un solo clic?
Quando richiedi un aggiornamento, il gruppo di istanze gestite sostituisce i dischi di avvio di tutte le VM del gruppo con la versione più recente dell'immagine del sistema operativo disponibile della tua famiglia di immagini personalizzate. Il gruppo di istanze gestite conserva i metadati e gli script di avvio che hai configurato nel modello di istanza per ogni VM del gruppo. I dischi non di avvio vengono ricreati in base alle loro specifiche nel modello di istanza. Per informazioni sulla conservazione dei dati, consulta la pagina Configurare i dischi con stato nei gruppi di istanze gestite.
Per limitare l'interruzione delle applicazioni, puoi eseguire gli aggiornamenti in batch, mantenendo in esecuzione una percentuale specifica di VM durante l'aggiornamento. Per aumentare l'affidabilità, puoi configurare un controllo di integrità basato su applicazione per il tuo gruppo di istanze gestite: il gruppo attende una risposta corretta da un'applicazione sulle VM aggiornate prima di procedere con ulteriori aggiornamenti ad altre VM.
Prima di iniziare
Installa o esegui l'aggiornamento alla versione più recente di Google Cloud CLI.
Assicurati di aver creato un modello di istanza che rimandi a una famiglia di immagini. Google consiglia di utilizzare famiglie di immagini personalizzate per ridurre il rischio di implementare una versione dell'immagine incompatibile con la tua applicazione. Puoi assicurarti che vengano implementate solo le versioni delle immagini compatibili aggiungendo le immagini alla tua famiglia di immagini personalizzate solo dopo aver eseguito i test di compatibilità con la tua applicazione.
Quando il modello di istanza fa riferimento a una famiglia di immagini, il gruppo di istanze gestite crea sempre istanze dall'immagine più recente della famiglia, ad esempio:
- Quando il gruppo di istanze gestite aggiunge nuove istanze perché tu o il gestore della scalabilità automatica del gruppo di istanze gestite avete aumentato le dimensioni del gruppo di istanze gestite.
- Quando il gruppo di istanze gestite ricrea un'istanza, attivata manualmente o tramite la riparazione automatica.
Testa la nuova immagine con la tua app prima di aggiungerla alla tua famiglia di immagini e di implementarla.
Se vuoi, crea un controllo di integrità basato su applicazione per il tuo gruppo di istanze gestite. Un controllo di integrità basato sull'applicazione verifica che l'applicazione risponda come previsto su ogni VM del gruppo di istanze gestite. Puoi configurare l'aggiornamento in modo da non consentire più di una VM non disponibile. Se un'applicazione non risponde come previsto, il gruppo di istanze gestite contrassegna la VM come non disponibile e l'implementazione non procede.
Esecuzione di upgrade di immagini del sistema operativo con un solo clic per i MIG
Per aggiornare tutte le VM di un gruppo di istanze gestite all'immagine più recente di una famiglia di immagini personalizzate, completa i seguenti passaggi:
Avvia una sostituzione graduale con il seguente comando.
gcloud compute instance-groups managed rolling-action replace instance-group-name \ [--max-surge=max-surge ] [--max-unavailable=max-unavailable]
Sostituisci quanto segue:
instance-group-name
: il nome del gruppo di istanze gestite su cui eseguire operazioni.max-surge
: il numero massimo di VM aggiuntive che possono essere create temporaneamente durante la procedura di aggiornamento. Può essere un numero fisso (ad esempio5
) o una percentuale della dimensione del MIG (ad esempio10%
).max-unavailable
: il numero massimo di VM che possono non essere disponibili durante il processo di aggiornamento. Può essere un numero fisso (5
) o una percentuale delle dimensioni del gruppo di istanze gestite (10%
).
Puoi combinare i controlli di integrità utilizzando le opzioni
--max-unavailable
e--max-surge
per interrompere ulteriori aggiornamenti se causano la mancata disponibilità delle VM.Monitora l'aggiornamento utilizzando il subcomando
wait-until
per verificare che il campostatus.versionTarget.isReached
del MIG sia impostato sutrue
.gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached
Sostituisci quanto segue:
instance-group-name
: il nome del gruppo di istanze gestite su cui eseguire operazioni.
Il comando viene restituito quando il gruppo viene aggiornato.
Puoi anche elencare le istanze per visualizzare lo stato di ciascuna istanza.
gcloud compute instance-groups managed list-instances instance-group-name
Il comando restituisce un elenco di istanze e relativi dettagli, tra cui stato, stato di salute, e azioni correnti per ogni VM. Quando tutte le VM sono
RUNNING
e non hanno azioni in corso, il MIG è aggiornato e stabile.Se devi eseguire il rollback a un'immagine del sistema operativo precedente, devi creare un modello di istanza e specificare l'immagine che vuoi utilizzare. Poi, avvia un aggiornamento in sequenza per aggiornare tutte le istanze gestite in modo che utilizzino il modello. Per ulteriori informazioni, consulta la sezione Eseguire il rollback di un aggiornamento.
Esempio
Questo esempio illustra le seguenti attività:
- Crea un modello di istanza per aggiornare facilmente le immagini del sistema operativo:
- Specifica una famiglia di immagini personalizzata nel modello di istanza.
- Crea un gruppo di istanze gestite basato sul modello.
- Configura un controllo di integrità per limitare l'interruzione causata da un aggiornamento dell'immagine.
- Aggiungi una nuova immagine a una famiglia di immagini.
- Esegui un aggiornamento del sistema operativo con un solo comando.
- Monitora l'aggiornamento.
Per attivare ed eseguire gli upgrade del sistema operativo con un solo clic in un gruppo di istanze gestite:
Crea un modello di istanza che specifichi una famiglia di immagini personalizzate. La famiglia di immagini deve contenere immagini testate e attendibili. Ogni VM creata dal MIG dal modello utilizza l'immagine più recente disponibile di questa famiglia.
gcloud compute instance-templates create example-template \ --machine-type n1-standard-4 \ --image-family my-image-family \ --image-project my-project \ --tags=http-server
Crea un gruppo di istanze gestite basato sul modello di istanza. Questo esempio avvia il MIG con tre istanze basate su
example-template
. Poiché il modello di istanza specifica una famiglia di immagini, il MIG crea ogni VM con l'immagine più recente della famiglia.gcloud compute instance-groups managed create example-group \ --base-instance-name example \ --size 3 \ --zone us-east1-b \ --template example-template
(Facoltativo) Configura e abilita un controllo di integrità basato sull'applicazione. Se la tua app non risponde dopo un aggiornamento dell'immagine, puoi utilizzare lo stato del controllo di integrità combinato con l'impostazione maxUnavailable per interrompere ulteriori implementazioni del MIG.
Crea un controllo di integrità che cerca una risposta HTTP
200
nel percorso della richiesta/health
. L'app GitHub presente su ogni istanza serve questo percorso.gcloud compute health-checks create http example-autohealer-check \ --check-interval 10 \ --timeout 5 \ --healthy-threshold 2 \ --unhealthy-threshold 3 \ --request-path "/health"
Crea una regola firewall per consentire ai probe del controllo di integrità di accedere alle istanze. I probe del controllo di integrità provengono da indirizzi inclusi negli intervalli:
130.211.0.0/22
e35.191.0.0/16
gcloud compute firewall-rules create default-allow-http-health-check \ --network default \ --allow tcp:80 \ --source-ranges 130.211.0.0/22,35.191.0.0/16
Aggiungi il controllo di integrità al gruppo di istanze gestite.
gcloud compute instance-groups managed update example-group \ --zone us-east1-b --health-check example-autohealer-check
Quando un aggiornamento è disponibile, testato e considerato compatibile con la tua app, crea una nuova immagine e utilizza il flag
--family
per includerla nella famiglia di immagini personalizzate.gcloud compute images my-image-v2 \ --source-disk boot-disk-1 \ --source-disk-zone us-central1-f \ --family my-image-family
In questo esempio, l'immagine più recente in
my-image-family
è oramy-image-v2
, basata sul disco di origineboot-disk-1
.Esegui una sostituzione graduale per sostituire tutte le VM nel gruppo di istanze gestite. Il gruppo di istanze gestite sostituisce ogni VM in base al modello di istanza del gruppo. Il modello di istanza specifica
my-image-family
, quindi ogni VM riceve l'immagine più recente della famiglia (my-image-v2
).Puoi configurare il livello di interruzione causato dall'aggiornamento. In questo esempio, il gruppo di istanze mig crea un'altra VM oltre le dimensioni target del gruppo e non rimuove le VM esistenti finché questa VM non è attiva e funzionante.
gcloud compute instance-groups managed rolling-action replace example-group \ --max-surge 1 --max-unavailable 0
Se vuoi monitorare lo stato degli aggiornamenti, utilizza il comando
wait-until
con il flag--version-target-reached
. Il comando viene restituito quando il gruppo viene aggiornato.gcloud compute instance-groups managed wait-until --version-target-reached example-group \ --zone us-east1- Waiting for group to reach version target ... Version target is reached
Puoi anche utilizzare il comando
list-instances
per visualizzare il stato, stato di salute, azioni correnti, modello di istanza e versione per ogni VM.gcloud compute instance-groups managed list-instances example-group \ --zone us-east1-b NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR test-211p us-east1-b RUNNING HEALTHY NONE example-template 0/2020-01-30 13:34:28.843377+00:00 test-t5qb us-east1-b RUNNING UNKNOWN VERIFYING example-template 0/2020-01-30 13:34:28.843377+00:00 test-x331 us-east1-b RUNNING HEALTHY NONE example-template 0/2020-01-20 20:39:51.819399+00:00
Se devi eseguire il rollback a un'immagine precedente:
- Crea un nuovo modello di istanza che specifichi l'immagine che ti interessa.
- Avvia un aggiornamento in sequenza per applicare il modello di istanza.
Passaggi successivi
- Scopri di più sulle best practice per le famiglie di immagini.
- Scopri di più sui gruppi di istanze.
- Scopri di più sui modelli di istanza.
- Scopri di più sugli aggiornamenti in sequenza nei gruppi di istanze gestite.