Gestisci gli errori per Persistent Disk a livello di regione

Il disco permanente regionale è un'opzione di archiviazione che fornisce la replica sincrona dei dati tra due zone in una regione. Puoi utilizzare un Persistent Disk a livello di regione come componente di base quando implementi servizi ad alta disponibilità (HA) in Compute Engine.

Questo documento illustra i vari scenari che possono interrompere il funzionamento del volume di Persistent Disk a livello di regione e spiega come puoi gestire questi scenari.

Prima di iniziare

  • Rivedi le nozioni di base sulla replica a livello di zona e sul failover del Persistent Disk a livello di regione. Per maggiori informazioni, consulta Informazioni sul disco permanente a livello di regione.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init

Scenari di errore

Con i dischi permanenti a livello di regione, quando il dispositivo viene replicato completamente, i dati vengono automaticamente replicati in due zone di una regione. La scrittura viene confermata in un'istanza di macchina virtuale (VM) quando è persistente in modo permanente in entrambe le repliche.

Se la replica in una zona non riesce o risulta molto lenta per un certo periodo di tempo, lo stato di replica del disco diventa degradato. In questa modalità, la scrittura viene confermata dopo essere persistente in una replica.

Se e quando Compute Engine rileva che la replica può essere ripresa, i dati scritti in precedenza dopo che il dispositivo è passato allo stato di riduzione vengono sincronizzati con entrambe le zone e il disco torna a uno stato completamente replicato. Questa transizione è completamente automatica.

RPO e RTO non sono definiti quando lo stato di un dispositivo è ridotto. Per ridurre al minimo la perdita di dati e/o disponibilità in caso di errore di un disco che opera in uno stato di riduzione, ti consigliamo di eseguire regolarmente il backup dei dischi permanenti a livello di regione utilizzando gli snapshot standard. Puoi recuperare un disco ripristinando lo snapshot.

Errori a livello di zona

Un volume di Persistent Disk a livello di regione viene replicato in modo sincrono in repliche di disco nelle zone primarie e secondarie. Gli errori di zona si verificano quando una replica a livello di zona si arresta e non è più disponibile. Gli errori a livello di zona possono verificarsi in una delle zone per uno dei seguenti motivi:

  • È in corso un'interruzione a livello di zona.
  • La replica presenta un rallentamento eccessivo nelle operazioni di scrittura.

La tabella seguente fornisce i vari scenari di errore a livello di zona che potresti riscontrare per il Persistent Disk a livello di regione e l'azione consigliata per ogni scenario. In ciascuno di questi scenari, si presume che la replica di zona principale sia integro e sincronizzato durante lo stato iniziale.

Stato iniziale del disco Errore Nuovo stato del disco Conseguenze dell'errore Azione da intraprendere

Replica principale:sincronizzata

Replica secondaria: sincronizzata

Stato del disco: completamente replicato

Disco collegato in: zona principale

Zona principale

Replica principale:non sincronizzata o non disponibile

Replica secondaria: sincronizzata

Stato del disco: ridotto

Disco collegato in: zona principale

  • La replica nella zona secondaria rimane integro e dispone dei dati del disco più recenti.
  • La replica nella zona principale non è integro e non è garantito che siano disponibili tutti i dati del disco.
Esegui il failover del disco mediante collegamento forzato a una VM nella zona secondaria integro.

Replica principale:sincronizzata

Replica secondaria: sincronizzata

Stato del disco: completamente replicato

Disco collegato in: zona principale

Zona secondaria

Replica principale:sincronizzata

Replica secondaria: non sincronizzata o non disponibile

Stato del disco: ridotto

Disco collegato in: zona principale

  • La replica nella zona principale rimane integro e dispone dei dati del disco più recenti.
  • La replica nella zona secondaria non è integro e non è garantito che siano disponibili tutti i dati del disco.
Nessuna azione necessaria. Compute Engine ripristina la sincronizzazione della replica in stato non integro nella zona secondaria quando è di nuovo disponibile.

Replica principale:sincronizzata

Replica secondaria: non sincronizzata e non disponibile

Stato del disco: ridotto

Disco collegato in: zona principale

Zona principale

Replica principale:sincronizzata, ma non disponibile

Replica secondaria: non sincronizzata

Stato del disco: non disponibile

Disco collegato in: zona principale

  • Entrambe le repliche a livello di zona non sono disponibili e non possono gestire il traffico. Il disco non è più disponibile.
  • Se l'interruzione o l'errore di replica a livello di zona è temporaneo, i dati non andranno persi.
  • Se l'interruzione o l'errore di replica a livello di zona è permanente, tutti i dati scritti nella replica in stato integro durante la riduzione delle prestazioni del disco andranno persi definitivamente.
Google consiglia di utilizzare uno snapshot standard esistente e creare un nuovo disco per recuperare i dati. Come best practice, esegui regolarmente il backup dei volumi Persistent Disk a livello di regione utilizzando snapshot standard.

Replica principale:sincronizzata

Replica secondaria: in fase di aggiornamento, ma disponibile

Stato del disco:aggiornamento in corso...

Disco collegato in: zona principale

Zona principale

Replica principale: non disponibile

Replica secondaria: in fase di aggiornamento, ma disponibile

Stato del disco: non disponibile

Disco collegato in: zona principale

  • Entrambe le repliche a livello di zona non possono gestire il traffico. Il disco diventa non disponibile.
  • Se l'interruzione o l'errore di replica a livello di zona è temporaneo, il disco riprende le operazioni una volta che la replica principale sarà di nuovo disponibile.
  • Se l'interruzione o l'errore di replica a livello di zona è permanente, il disco diventa inutilizzabile.

Replica principale:sincronizzata

Replica secondaria: non sincronizzata ma disponibile

Stato del disco: ridotto

Disco collegato in: zona principale

Zona principale

Replica principale: non disponibile

Replica secondaria: non sincronizzata ma disponibile

Stato del disco: non disponibile

Disco collegato in: zona principale

  • Entrambe le repliche a livello di zona non possono gestire il traffico. Il disco non è più disponibile.
  • Se l'interruzione o l'errore di replica a livello di zona è temporaneo, il disco riprenderà le operazioni una volta che la replica principale sarà di nuovo disponibile.
  • Se l'interruzione o l'errore di replica a livello di zona è permanente, il disco diventa inutilizzabile.

Errori relativi ad applicazioni e VM

In caso di interruzioni causate da errori di configurazione della VM, da un upgrade del sistema operativo non riuscito o da altri errori dell'applicazione, puoi force-attach il volume del Persistent Disk a livello di regione impostandolo su un'istanza VM nella stessa zona.

Categoria di errore e (probabilità) Tipi di errore Azione
Errore dell'applicazione (elevato)
  • Applicazioni che non rispondono
  • Errore dovuto ad azioni amministrative dell'applicazione (ad esempio, upgrade)
  • Errore umano (ad esempio, configurazione errata di parametri come certificati SSL o ACL)
Il piano di controllo dell'applicazione può attivare il failover in base alle soglie del controllo di integrità.
Errore VM (medio)
  • Guasti dell'infrastruttura o dell'hardware
  • La VM non risponde a causa di contesa della CPU, interruzione di rete intermedia
In genere le VM vengono riparate automaticamente. Il piano di controllo dell'applicazione può attivare il failover in base alle soglie del controllo di integrità.
Danneggiamento dell'applicazione (bassa-media) Dati dell'applicazione danneggiati
(ad esempio, a causa di bug dell'applicazione o di un upgrade del sistema operativo non riuscito)
Recupero di applicazioni:

Esegui il failover del volume del Persistent Disk a livello di regione utilizzando force-attach

Nel caso in cui si verifichi un errore nella zona principale, puoi eseguire il failover del volume Persistent Disk a livello di regione su una VM in un'altra zona utilizzando un'operazione di collegamento forzato. In caso di errore nella zona principale, potresti non essere in grado di scollegare il disco dalla VM perché non è possibile raggiungere la VM per eseguire l'operazione di scollegamento. L'operazione di associazione forzata consente di collegare un volume di Persistent Disk a livello di regione a una VM anche se il volume è collegato a un'altra VM. Dopo aver completato l'operazione di associazione forzata, Compute Engine impedisce alla VM originale di scrivere nel volume del Persistent Disk a livello di regione. L'operazione di associazione forzata consente di recuperare in sicurezza l'accesso ai dati e recuperare il servizio. Hai anche la possibilità di arrestare manualmente l'istanza VM dopo aver eseguito l'operazione di associazione forzata.

Per forzare il collegamento di un disco esistente a una VM, segui questi passaggi:

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona il progetto.

  3. Fai clic sul nome della VM che vuoi modificare.

  4. Nella pagina dei dettagli, fai clic su Modifica.

  5. Nella sezione Dischi aggiuntivi, fai clic su Collega un disco aggiuntivo.

  6. Seleziona il volume Persistent Disk a livello di regione dall'elenco a discesa.

  7. Per forzare il collegamento del disco, seleziona la casella di controllo Forza collegamento del disco.

  8. Fai clic su Fine, poi su Salva.

Puoi eseguire gli stessi passaggi per force-attach un disco sulla VM originale dopo la risoluzione dell'errore.

gcloud

In gcloud CLI, utilizza il comando instances attach-disk per collegare il disco di replica a un'istanza VM. Includi il flag --disk-scope e impostalo su regional.

gcloud compute instances attach-disk VM_NAME \
    --disk DISK_NAME --disk-scope regional \
    --force-attach

Sostituisci quanto segue:

  • VM_NAME: il nome della nuova istanza VM nella regione
  • DISK_NAME: il nome del disco

Dopo aver force-attach il disco, monta i file system sul disco, se necessario. L'istanza VM può utilizzare il disco associato forzatamente per continuare le operazioni di lettura e scrittura.

REST

Crea una richiesta POST per il metodo compute.instances.attachDisk e includi l'URL del volume del Persistent Disk appena creato. Per collegare il disco alla nuova istanza VM, è necessario il parametro di query forceAttach=true, anche se l'istanza VM principale ha ancora il disco.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk?forceAttach=true

{
 "source": "projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • ZONE: la località della tua istanza VM
  • VM_NAME: il nome dell'istanza VM a cui stai aggiungendo il nuovo volume di Persistent Disk
  • REGION: la regione in cui si trova il nuovo volume di Persistent Disk a livello di regione
  • DISK_NAME: il nome del nuovo disco

Dopo aver collegato il disco di replica, monta i file system sui dischi, se necessario. L'istanza VM può utilizzare il disco di replica per continuare le operazioni di lettura e scrittura.

Usa il checkpoint di recupero della replica per recuperare i volumi di Persistent Disk a livello di regione ridotti

Un checkpoint di ripristino della replica rappresenta il point-in-time più recente con arresti anomali di un volume di Persistent Disk a livello di regione completamente replicato. Compute Engine consente di creare snapshot standard dal punto di controllo del recupero della replica per i dischi compromessi.

In rari casi, quando le prestazioni del disco sono ridotte, anche la replica a livello di zona sincronizzata con i dati più recenti del disco può non riuscire prima che la replica fuori sincronizzazione venga ripristinata. Non potrai collegare forzatamente il disco alle VM in nessuna delle due zone. Il volume del Persistent Disk a livello di regione non è più disponibile e devi eseguire la migrazione dei dati su un nuovo disco. In questi scenari, se non disponi di snapshot standard esistenti per il disco, potresti comunque riuscire a recuperare i dati del disco dalla replica incompleta utilizzando uno snapshot standard creato dal checkpoint di recupero della replica. Per la procedura dettagliata, consulta Procedura per la migrazione e il recupero dei dati del disco.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire la migrazione dei dati del Persistent Disk a livello di regione utilizzando un checkpoint di recupero delle repliche, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Per eseguire la migrazione dei dati Persistent Disk a livello di regione utilizzando un checkpoint di recupero della replica: Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) sul progetto

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire la migrazione dei dati del Persistent Disk a livello di regione utilizzando un checkpoint di recupero della replica. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per eseguire la migrazione dei dati del Persistent Disk a livello di regione utilizzando un checkpoint di recupero delle repliche, sono necessarie le seguenti autorizzazioni:

  • Per creare uno snapshot standard dal checkpoint di recupero della replica:
    • compute.snapshots.create sul progetto
    • compute.disks.createSnapshot sul disco
  • Per creare un nuovo Persistent Disk a livello di regione dallo snapshot standard: compute.disks.create sul progetto in cui vuoi creare il nuovo disco
  • Per eseguire la migrazione delle VM sul nuovo disco:
    • compute.instances.attachDisk sull'istanza VM
    • compute.disks.use permission sul disco appena creato

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Procedura per la migrazione e il recupero dei dati del disco

Per recuperare ed eseguire la migrazione dei dati di un volume di Persistent Disk a livello di regione utilizzando il checkpoint di recupero della replica, segui questi passaggi:

  1. Crea uno snapshot standard del volume del Persistent Disk a livello di regione interessato dal checkpoint di recupero della replica. Puoi creare lo snapshot standard per un disco dal relativo checkpoint di recupero della replica solo utilizzando Google Cloud CLI o REST.

    gcloud

    Per creare uno snapshot utilizzando il checkpoint di recupero della replica, utilizza il comando gcloud compute snapshots create . Includi il flag --source-disk-for-recovery-checkpoint per specificare che vuoi creare lo snapshot utilizzando un checkpoint di recupero della replica. Escludi i parametri --source-disk e --source-disk-region.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-for-recovery-checkpoint=SOURCE_DISK \
        --source-disk-for-recovery-checkpoint-region=SOURCE_REGION \
        --storage-location=STORAGE_LOCATION \
        --snapshot-type=SNAPSHOT_TYPE
    

    Sostituisci quanto segue:

    • DESTINATION_PROJECT_ID: l'ID del progetto in cui vuoi creare lo snapshot.
    • SNAPSHOT_NAME: il nome dello snapshot.
    • SOURCE_DISK: il nome o il percorso completo del disco di origine che vuoi utilizzare per creare lo snapshot. Per specificare il percorso completo di un disco di origine, utilizza la seguente sintassi:
        projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
        

      Se specifichi il percorso completo del disco di origine, puoi escludere il flag --source-disk-for-recovery-checkpoint-region. Se specifichi solo il nome del disco, devi includere questo flag.

      Per creare uno snapshot dal checkpoint di recupero di un disco di origine in un altro progetto, devi specificare il percorso completo del disco di origine.

    • SOURCE_PROJECT_ID: l'ID progetto del disco di origine di cui vuoi utilizzare il checkpoint per creare lo snapshot.
    • SOURCE_REGION: la regione del disco di origine di cui vuoi utilizzare il checkpoint per creare lo snapshot.
    • SOURCE_DISK_NAME: il nome del disco di origine di cui vuoi utilizzare il checkpoint per creare lo snapshot.
    • STORAGE_LOCATION: (Facoltativo) La regione Cloud Storagemulti-regione o Cloud Storageregion in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.
      Utilizza il flag --storage-location solo se vuoi eseguire l'override della posizione di archiviazione predefinita o personalizzata configurata nelle impostazioni degli snapshot.
    • SNAPSHOT_TYPE: il tipo di snapshot, STANDARD o ARCHIVIO. Se non viene specificato un tipo di snapshot, viene creato uno snapshot STANDARD.

    Puoi utilizzare il checkpoint di recupero della replica per creare uno snapshot solo su dischi con problemi. Se provi a creare uno snapshot da un checkpoint di recupero della replica quando il dispositivo è completamente replicato, verrà visualizzato il seguente messaggio di errore:

    The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please
    create regular snapshots instead.
    

    REST

    Per creare uno snapshot utilizzando il checkpoint di recupero della replica, effettua una richiesta POST al metodo snapshots.insert. Escludi il parametro sourceDisk e includi invece il parametro sourceDiskForRecoveryCheckpoint per specificare che vuoi creare lo snapshot utilizzando il checkpoint.

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    
    {
      "name": "SNAPSHOT_NAME",
      "sourceDiskForRecoveryCheckpoint": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "storageLocations": "STORAGE_LOCATION",
      "snapshotType": "SNAPSHOT_TYPE"
    }
    

    Sostituisci quanto segue:

    • DESTINATION_PROJECT_ID: l'ID del progetto in cui vuoi creare lo snapshot.
    • SNAPSHOT_NAME: il nome dello snapshot.
    • SOURCE_DISK: il nome o il percorso completo del disco di origine che vuoi utilizzare per creare lo snapshot. Per specificare il percorso completo di un disco di origine, utilizza la seguente sintassi:
        projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
        

      Se specifichi il percorso completo del disco di origine, puoi escludere il flag --source-disk-for-recovery-checkpoint-region. Se specifichi solo il nome del disco, devi includere questo flag.

      Per creare uno snapshot dal checkpoint di recupero di un disco di origine in un altro progetto, devi specificare il percorso completo del disco di origine.

    • SOURCE_PROJECT_ID: l'ID progetto del disco di origine di cui vuoi utilizzare il checkpoint per creare lo snapshot.
    • SOURCE_REGION: la regione del disco di origine di cui vuoi utilizzare il checkpoint per creare lo snapshot.
    • SOURCE_DISK_NAME: il nome del disco di origine di cui vuoi utilizzare il checkpoint per creare lo snapshot.
    • STORAGE_LOCATION: (Facoltativo) La regione Cloud Storagemulti-regione o Cloud Storageregion in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.
      Utilizza il parametro storageLocations solo se vuoi eseguire l'override della posizione di archiviazione predefinita o personalizzata configurata nelle impostazioni degli snapshot.
    • SNAPSHOT_TYPE: il tipo di snapshot, STANDARD o ARCHIVIO. Se non viene specificato un tipo di snapshot, viene creato uno snapshot STANDARD.

    Puoi utilizzare il checkpoint di recupero della replica per creare uno snapshot solo su dischi con problemi. Se provi a creare uno snapshot da un checkpoint di recupero della replica quando il dispositivo è completamente replicato, verrà visualizzato il seguente messaggio di errore:

    The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please
    create regular snapshots instead.
    

  2. Crea un nuovo volume di Persistent Disk a livello di regione utilizzando questo snapshot. Quando crei il nuovo disco, recuperi tutti i dati dal checkpoint più recente di recupero della replica spostando i dati sul nuovo disco. Per la procedura dettagliata, consulta Creare una nuova VM con dischi di avvio su Persistent Disk a livello di regione.

  3. Esegui la migrazione di tutti i carichi di lavoro delle VM sul disco appena creato e verifica che questi carichi di lavoro delle VM vengano eseguiti correttamente. Per saperne di più, consulta Spostare una VM tra zone o regioni.

Dopo aver recuperato ed eseguito la migrazione dei dati dei dischi e delle VM nel volume di Persistent Disk regionale appena creato, puoi riprendere le operazioni.

Determina l'RPO fornito dal checkpoint di recupero della replica

Questa sezione spiega come determinare l'RPO fornito dal checkpoint di ripristino della replica più recente di un volume di Persistent Disk a livello di regione.

Le repliche di zona sono completamente sincronizzate

Compute Engine aggiorna il checkpoint di recupero della replica del volume del Persistent Disk a livello di regione circa ogni 10 minuti. Di conseguenza, quando le repliche a livello di zona sono completamente sincronizzate, l'RPO è di circa 10 minuti.

Le repliche di zona non sono sincronizzate

Non puoi visualizzare i timestamp esatti di creazione e aggiornamento di un checkpoint di recupero della replica. Tuttavia, puoi stimare l'RPO approssimativo fornito dal tuo checkpoint più recente utilizzando i seguenti dati:

  • Timestamp più recente dello stato del disco completamente replicato: puoi ottenere queste informazioni utilizzando i dati di Cloud Monitoring del disco permanente a livello di regione per la metrica replica_state. Controlla i dati delle metriche replica_state per la replica fuori sincronizzazione per determinare quando la replica non è più sincronizzata. Poiché Compute Engine aggiorna il checkpoint del disco ogni 10 minuti, l'aggiornamento più recente dei checkpoint potrebbe essere avvenuto circa 10 minuti prima di questo timestamp.
  • Timestamp più recente operazione di scrittura: puoi ottenere queste informazioni utilizzando i dati di Cloud Monitoring del disco permanente per la metrica write_ops_count. Controlla i dati della metrica write_ops_count per determinare l'operazione di scrittura più recente per il disco.

Dopo aver determinato questi timestamp, utilizza la seguente formula per calcolare l'RPO approssimativo fornito dal checkpoint di recupero della replica del tuo disco. Se il valore calcolato è inferiore a zero, l'RPO è effettivamente zero.

Approximate RPO provided by the latest checkpoint = (Most recent write operation timestamp - (Most recent timestamp of the fully replicated disk state - 10 minutes))

Passaggi successivi