Best practice per l'upgrade del sistema operativo

Questo documento descrive le best practice e le strategie per l'upgrade dei sistemi operativi sulle istanze Compute Engine. Scopri come eseguire l'upgrade delle versioni principali del sistema operativo utilizzando l'infrastruttura immutabile, la ricreazione delle istanze o i flussi di lavoro in loco e come automatizzare l'applicazione di patch di sicurezza di routine.

Quando una versione del sistema operativo si avvicina alla fine del supporto (EOS) o alla fine del ciclo di vita (EOL), devi eseguire l'upgrade a una versione del sistema operativo supportata per mantenere gli aggiornamenti della sicurezza, la compatibilità del software e l'integrazione della piattaforma Cloud de Confiance by S3NS . Per saperne di più sulle fasi di assistenza, consulta Ciclo di vita dei sistemi operativi.

Rischi degli upgrade delle versioni principali del sistema operativo in loco

Se esegui un upgrade in loco principale del sistema operativo, ad esempio l'upgrade di Debian 12 a 13, RHEL 9 a 10 o Ubuntu 24.04 a 26.04 su un'istanza di computing in esecuzione, introduci rischi operativi significativi negli ambienti cloud. A differenza dei server fisici on-premise, le istanze di calcolo dipendono da pacchetti specializzati per l'ambiente guest per comunicare con l'hypervisor e il server di metadati di Compute Engine.

Quando esegui l'upgrade di un sistema operativo sul posto, rischi le seguenti modalità di errore:

  • Perdita della connettività SSH e RDP: i formati di configurazione per servizi di rete, regole firewall a livello di guest, come ufw o firewalld, o impostazioni del daemon SSH possono cambiare tra le versioni del sistema operativo, interrompendo l'accesso amministrativo remoto.
  • Interruzione dell'ambiente guest:i pacchetti google-guest-agent e google-oslogin gestiscono le chiavi SSH, gli account utente, le interfacce di rete e la sincronizzazione con i metadati. Se i repository o le dipendenze dei pacchetti si interrompono durante un upgrade della distribuzione, l'agente guest potrebbe smettere di essere eseguito, impedendo ulteriori accessi o configurazioni di rete.
  • Incompatibilità con i driver di archiviazione e del kernel:le modifiche al kernel, initramfs o ai driver per i controller del disco (ad esempio virtio-scsi o NVMe) possono causare errori di avvio o impedire all'istanza di computing di riconoscere i volumi Persistent Disk collegati.
  • Configurazioni incoerenti per i repository: i fornitori di sistemi operativi spesso ritirano o sostituiscono i repository di pacchetti legacy e le chiavi di firma, il che può causare l'interruzione dei gestori di pacchetti durante l'upgrade e lasciare il sistema operativo in uno stato non recuperabile e installato a metà.

Per evitare questi rischi, utilizza un modello di infrastruttura immutabile anziché eseguire l'upgrade in loco delle versioni principali del sistema operativo sulle istanze di calcolo di produzione.

Scegliere la strategia di upgrade giusta

A seconda che i tuoi carichi di lavoro siano stateless o stateful, scegli una delle seguenti strategie:

Strategia Consigliato per Rischio di inattività Meccanismo di rollback
Infrastruttura immutabile Workload stateless, gruppi di istanze gestite (MIG), microservizi, host di container Nessun tempo di inattività con sostituzione in sequenza Ripristina un'immagine precedente del template di istanza
Ricrea le istanze di Compute con Persistent Disk Istanze di computing autonome stateful, database con archiviazione secondaria collegata, host di applicazioni legacy Minimo con un periodo di manutenzione pianificato Ricollega i dischi all'istanza di computing originale o ripristina gli snapshot
Upgrade in loco del sistema operativo Istanze di calcolo autonome in cui non è possibile automatizzare o estrarre le configurazioni locali Alto, che richiede tempi di inattività e pianificazione del ripristino manuale Ripristina da uno snapshot di Persistent Disk

Infrastruttura immutabile

Il modo più sicuro e affidabile per eseguire l'upgrade dei sistemi operativi è utilizzare il modello di infrastruttura immutabile. Anziché modificare le istanze di computing in esecuzione, crea nuove istanze di computing da immagini del sistema operativo pubbliche o personalizzate aggiornate e sostituisci le istanze legacy.

Se i tuoi workload vengono eseguiti in gruppi di istanze gestite (MIG), puoi automatizzare l'implementazione senza tempi di inattività del servizio.

Creare un'immagine aggiornata

  1. Seleziona l'immagine sistema operativo pubblica più recente dall'elenco dei Dettagli del sistema operativo supportati o crea un'immagine di base personalizzata utilizzando Image Builder o strumenti automatizzati come Packer o Ansible.
  2. Verifica che l'applicazione e le dipendenze vengano installate ed eseguite correttamente nella nuova versione del sistema operativo in un ambiente di test non di produzione.
  3. Crea un'immagine sistema operativo personalizzata o fai riferimento alla nuova famiglia di immagini pubbliche. Per maggiori informazioni, consulta Best practice per le famiglie di immagini.

Crea un template di istanza aggiornato

Crea un nuovo template di istanza che faccia riferimento all'immagine del sistema operativo aggiornata:

gcloud compute instance-templates create NEW_TEMPLATE_NAME \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --machine-type=MACHINE_TYPE \
    --region=REGION

Sostituisci quanto segue:

  • NEW_TEMPLATE_NAME: il nome del nuovo template di istanza.
  • IMAGE_FAMILY: la famiglia di immagini del sistema operativo di destinazione, ad esempio debian-12 o ubuntu-2404-lts.
  • IMAGE_PROJECT: il progetto che ospita l'immagine, ad esempio debian-cloud o ubuntu-os-cloud.
  • MACHINE_TYPE: il tipo di macchina per le istanze.
  • REGION: la regione Compute Engine in cui crei il modello.

Esegui una sostituzione in sequenza nel MIG

Applica il modello aggiornato al gruppo di istanze gestite e avvia una sostituzione in sequenza:

gcloud compute instance-groups managed rolling-action replace MIG_NAME \
    --max-surge=20% \
    --max-unavailable=0 \
    --region=REGION

Sostituisci quanto segue:

  • MIG_NAME: il nome del gruppo di istanze gestite.
  • REGION: la regione in cui si trova il MIG. Per i MIG a livello di zona, sostituisci --region=REGION con --zone=ZONE.

Ricrea le istanze di calcolo con Persistent Disk

Se esegui istanze di computing autonome stateful in cui le applicazioni archiviano la configurazione e i dati sui volumi Persistent Disk, puoi eseguire l'upgrade del sistema operativo ricreando l'istanza di computing con un nuovo disco di avvio e conservando i dischi di dati.

Esegui il backup di tutti i dischi

Prima di modificare l'infrastruttura, crea snapshot standard o regionali del disco di avvio e di tutti i volumi Persistent Disk collegati:

gcloud compute disks snapshot BOOT_DISK_NAME \
    --snapshot-names=SNAPSHOT_NAME \
    --zone=ZONE

Sostituisci quanto segue:

  • BOOT_DISK_NAME: il nome del disco di avvio di cui eseguire il backup.
  • SNAPSHOT_NAME: il nome del nuovo snapshot del Persistent Disk.
  • ZONE: la zona in cui si trova il disco.

Per saperne di più, consulta la pagina Creare e gestire snapshot.

Separare i dati dell'applicazione dal disco di avvio

Assicurati che i dati delle applicazioni, i file di database e i log delle transazioni si trovino su volumi Persistent Disk secondari o servizi esterni, come Cloud Storage o Cloud SQL, anziché sul disco di avvio.

Crea l'istanza di computing sostitutiva

  1. Arresta l'istanza di computing legacy per garantire la coerenza dei dati:

    gcloud compute instances stop LEGACY_INSTANCE_NAME --zone=ZONE
    
  2. Scollega i dischi di dati secondari dall'istanza di computing legacy:

    gcloud compute instances detach-disk LEGACY_INSTANCE_NAME \
        --disk=DATA_DISK_NAME \
        --zone=ZONE
    
  3. Crea una nuova istanza di computing con la versione del sistema operativo di destinazione:

    gcloud compute instances create NEW_INSTANCE_NAME \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE
    
  4. Collega i dischi di dati secondari esistenti alla nuova istanza di computing:

    gcloud compute instances attach-disk NEW_INSTANCE_NAME \
        --disk=DATA_DISK_NAME \
        --zone=ZONE
    
  5. Connettiti alla nuova istanza di Compute, monta i file system sui dischi di dati e avvia i servizi dell'applicazione.

  6. Se necessario, riassegna tutti gli indirizzi IP esterni statici o i record DNS in modo che puntino alla nuova istanza di Compute.

Sostituisci quanto segue:

  • LEGACY_INSTANCE_NAME: il nome dell'istanza di computing esistente che stai eseguendo l'upgrade.
  • DATA_DISK_NAME: il nome del volume del Persistent Disk secondario da scollegare e ricollegare.
  • NEW_INSTANCE_NAME: il nome della nuova istanza di computing sostitutiva.
  • IMAGE_FAMILY: la famiglia di immagini per la versione del sistema operativo di destinazione, ad esempio debian-13 o ubuntu-2604-lts.
  • IMAGE_PROJECT: il progetto che fornisce l'immagine, ad esempio debian-cloud o ubuntu-os-cloud.
  • MACHINE_TYPE: il tipo di macchina per la nuova istanza di computing.
  • ZONE: la zona in cui si trovano le istanze di computing.

Upgrade del sistema operativo in loco

Se non riesci a ricreare l'istanza di computing a causa di configurazioni manuali complesse e devi eseguire un upgrade in loco, completa questi controlli pre-upgrade e segui attentamente le istruzioni specifiche della distribuzione.

Elenco di controllo pre-upgrade

Completa ogni passaggio di questo elenco di controllo prima di iniziare un upgrade in loco:

  1. Crea uno snapshot del disco di avvio prima di eseguire qualsiasi comando di upgrade. Questo è il tuo meccanismo di recupero principale in caso di errore dell'upgrade.
  2. Aggiorna tutti i pacchetti attuali e l'ambiente guest per Cloud de Confiance alle versioni più recenti disponibili per la release del sistema operativo corrente:

    • Per Debian e Ubuntu: sudo apt update && sudo apt dist-upgrade -y
    • Per RHEL, CentOS e Rocky Linux: sudo dnf upgrade -y
    • Per SLES: sudo zypper update

    Assicurati che i pacchetti google-guest-agent e google-oslogin siano attivi:

    sudo systemctl status google-guest-agent
    
  3. Attiva la console seriale interattiva sull'istanza di Compute in modo da poter risolvere i problemi e accedere se SSH o la rete smettono di funzionare durante l'upgrade:

    gcloud compute instances add-metadata INSTANCE_NAME \
        --metadata=serial-port-enable=TRUE \
        --zone=ZONE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza di computing.
    • ZONE: la zona in cui si trova l'istanza di computing.

    Per saperne di più, consulta Interazione con la console seriale.

  4. Se utilizzi OS Login o chiavi SSH gestite dall'agente guest, imposta una password per un account utente locale con privilegi amministrativi, ad esempio con sudo passwd USERNAME, in modo da poter accedere tramite la console seriale se OS Login non è temporaneamente disponibile durante l'upgrade. Sostituisci USERNAME con il nome del tuo account utente locale.

  5. Assicurati che la partizione root / e la partizione di avvio /boot abbiano spazio libero sufficiente, con almeno 5 GB consigliati, per scaricare ed estrarre i nuovi pacchetti:

    df -h / /boot
    
  6. Verifica che gli agenti di terze parti per la sicurezza, il backup o il monitoraggio (incluso Google Cloud Ops Agent) supportino la versione di destinazione del sistema operativo.

Procedure di upgrade in loco

Le sezioni seguenti forniscono flussi di lavoro di alto livello per i sistemi operativi più comuni. Prima di eseguire l'upgrade, consulta sempre la documentazione ufficiale relativa al tuo sistema operativo.

Debian

Puoi eseguire l'upgrade di Debian tra le versioni principali consecutive. Non saltare le versioni principali. Ad esempio, esegui prima l'upgrade di Debian 11 a 12, poi esegui l'upgrade di Debian 12 a 13.

  1. Aggiorna i repository dei pacchetti Debian esistenti:

    sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y
    
  2. Aggiorna le origini dei pacchetti in /etc/apt/sources.list e /etc/apt/sources.list.d/ sostituendo il nome in codice della release corrente, ad esempio bullseye, con il nome in codice della release di destinazione, ad esempio bookworm. Assicurati che gli Cloud de Confiance URL del repository dei pacchetti corrispondano alla nuova release.

  3. Esegui un upgrade minimo per aggiornare gli strumenti di packaging principali:

    sudo apt update
    sudo apt upgrade --without-new-pkgs -y
    
  4. Esegui l'upgrade della distribuzione completa:

    sudo apt full-upgrade -y
    
  5. Verifica che google-guest-agent sia attivo e abilitato:

    sudo systemctl enable --now google-guest-agent
    
  6. Riavvia l'istanza di computing:

    sudo systemctl reboot
    

Ubuntu

Per gestire gli upgrade da LTS a LTS su Ubuntu, utilizza lo strumento do-release-upgrade.

  1. Aggiorna tutti i pacchetti attuali:

    sudo apt update && sudo apt dist-upgrade -y
    
  2. Installa il pacchetto principale per il gestore degli aggiornamenti:

    sudo apt install update-manager-core -y
    
  3. Avvia lo strumento per gli upgrade delle release:

    sudo do-release-upgrade
    
  4. Segui le istruzioni interattive per confermare gli aggiornamenti del repository e le sostituzioni dei pacchetti. Se ti viene chiesto dei file di configurazione modificati, esamina attentamente le differenze prima di sovrascriverli.

  5. Riavvia l'istanza di computing quando richiesto.

RHEL

Per eseguire l'upgrade tra le versioni principali di RHEL, utilizza l'utilità Red Hat leapp supportata.

  1. Verifica lo stato dell'abbonamento Red Hat e assicurati che l'istanza di calcolo si connetta a RHUI (Red Hat Update Infrastructure) di Compute Engine.
  2. Installa l'utilità Leapp e i pacchetti che contengono i dati di migrazione.
  3. Esegui la valutazione preliminare dell'upgrade:

    sudo leapp preupgrade
    
  4. Esamina il report in /var/log/leapp/leapp-report.txt e risolvi tutti i problemi di blocco identificati da Leapp.

  5. Esegui l'upgrade:

    sudo leapp upgrade
    
  6. Riavvia l'istanza per consentire a Leapp di eseguire l'upgrade del sistema operativo in un ambiente isolato:

    sudo reboot
    

SLES

Per eseguire le migrazioni del service pack della versione principale e gli upgrade della distribuzione su SLES, utilizza zypper:

  1. Aggiorna il sistema esistente:

    sudo zypper patch
    
  2. Esegui zypper migration per eseguire una migrazione online o segui il flusso di lavoro di upgrade della distribuzione utilizzando zypper dup, specificato nella documentazione sull'upgrade di SLES.

Windows

Per le istanze di calcolo Windows Server, puoi utilizzare supporti di installazione con licenze a volume Compute Engine e script PowerShell per automatizzare gli upgrade senza intervento manuale.

Per eseguire un upgrade in loco su Windows Server, segui il tutorial per eseguire un upgrade in loco di Windows Server.

Automatizzare la gestione delle patch per gli aggiornamenti secondari

Distinguere gli upgrade della versione principale del sistema operativo dagli aggiornamenti secondari di routine e dalle patch di sicurezza. Per la manutenzione regolare di software, aggiornamenti dei pacchetti e applicazione di patch per le CVE, utilizza VM Manager Patch per automatizzare il deployment delle patch nella tua flotta di istanze di calcolo.

Segui queste best practice per gestire automaticamente le patch:

  • Organizza le istanze con le etichette:assegna etichette con metadati, ad esempio env:dev, env:prod e tier:frontend, per scegliere come target gruppi specifici di istanze di Compute per le patch.
  • Esegui il deployment zona per zona:distribuisci i job di applicazione patch in zone e regioni. Non applicare mai job di applicazione patch a tutte le zone contemporaneamente negli ambienti di produzione.
  • Utilizza script pre-applicazione e post-applicazione delle patch: configura gli script pre-applicazione delle patch per interrompere in modo sicuro le connessioni o mettere in pausa i servizi e configura gli script post-applicazione delle patch per eseguire controlli di integrità prima di ripristinare il servizio delle istanze.
  • Monitora la conformità delle patch:utilizza il dashboard di VM Manager nella consoleCloud de Confiance per monitorare la conformità alle patch e lo stato delle vulnerabilità nel tuo parco risorse di istanze di calcolo.

Per saperne di più, vedi Creare job di applicazione patch.

Verifica e risoluzione dei problemi post-upgrade

Dopo aver completato un upgrade, esegui i seguenti passaggi di verifica:

  1. Verifica che la connessione SSH o RDP funzioni normalmente.
  2. Assicurati che l'agente guest e il servizio per OS Login siano attivi e segnalino uno stato integro:

    sudo systemctl status google-guest-agent
    sudo systemctl status google-oslogin-cache
    
  3. Verifica che l'istanza di computing possa eseguire query sul server dei metadati dell'istanza:

    curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/id
    
  4. Verifica che i servizi dell'applicazione siano stati avviati e che i controlli di integrità dei bilanciatori del carico segnalino istanze integre.

Risolvere i problemi di perdita di connessione

Se perdi l'accesso SSH o RDP all'istanza di computing dopo un upgrade sul posto, completa i seguenti passaggi per la risoluzione dei problemi:

  1. Controlla il log della console per individuare kernel panic, errori durante l'avvio del servizio o errori durante l'inizializzazione della rete:

    gcloud compute instances tail-serial-port-output INSTANCE_NAME \
        --zone=ZONE
    
  2. Se hai abilitato la console seriale interattiva prima dell'upgrade, connettiti direttamente al terminale:

    gcloud compute connect-to-serial-port INSTANCE_NAME \
        --zone=ZONE
    

    Accedi utilizzando le credenziali utente locali, esamina i log di sistema con journalctl -xe e riavvia la rete o il servizio google-guest-agent.

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza di computing di cui stai risolvendo i problemi.
    • ZONE: la zona in cui si trova l'istanza di computing.
  3. Se il sistema operativo non può essere avviato o ripristinato, crea un nuovo volume Persistent Disk dallo snapshot che hai creato prima dell'upgrade e collegalo come disco di avvio dell'istanza di computing. Per i passaggi di ripristino dettagliati, vedi Ripristinare uno snapshot in un nuovo disco.

Passaggi successivi