Gestire gli errori per i dischi replicati in modo sincrono


I dischi permanenti regionali e Hyperdisk bilanciato ad alta disponibilità sono opzioni di archiviazione che forniscono la replica sincrona dei dati tra due zone in una regione. Puoi utilizzare Persistent Disk regionale o Hyperdisk con alta disponibilità bilanciata 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 dei dischi con replica sincrona e come gestirli.

Prima di iniziare

  • Rivedi le nozioni di base sui dischi con replica sincrona e sul failover. Per saperne di più, consulta Informazioni sulla replica sincrona dei dischi.
  • 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:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire la migrazione dei dati dei dischi replicati in modo sincrono utilizzando un checkpoint di recupero della replica, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire la migrazione dei dati dei dischi replicati in modo sincrono utilizzando un checkpoint di recupero della replica. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per eseguire la migrazione dei dati dei dischi replicati in modo sincrono utilizzando un checkpoint di recupero della replica, sono necessarie le seguenti autorizzazioni:

  • Per creare uno snapshot standard dal checkpoint di ripristino della replica:
    • compute.snapshots.create sul progetto
    • compute.disks.createSnapshot sul disco
  • Per creare un nuovo disco con replica sincrona dallo snapshot standard: compute.disks.create nel progetto in cui vuoi creare il nuovo disco
  • Per eseguire la migrazione delle VM al nuovo disco:
    • compute.instances.attachDisk nell'istanza VM
    • compute.disks.use permission sul disco appena creato

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Scenari di errore

Con i dischi con replica sincrona, quando il dispositivo è completamente replicato, i dati vengono replicati automaticamente in due zone di una regione. Una scrittura viene confermata a un'istanza di calcolo quando viene memorizzata in modo permanente in entrambe le repliche.

Se la replica in una zona non va a buon fine o è molto lenta per un po' di tempo, lo stato della replica del disco diventa degraded (degradato). In questa modalità, la scrittura viene confermata dopo essere stata memorizzata in modo permanente in una replica.

Se e quando Compute Engine rileva che la replica può essere ripresa, i datiscritti in una replica dopo che l'altra replica è passata allo stato di degradamento vengono sincronizzati con entrambe le zone e il disco torna a uno stato di replica completa. Questa transizione è completamente automatica.

RPO e RTO non sono definiti quando un dispositivo è in uno stato di degradazione. Per ridurre al minimo la perdita di dati e disponibilità in caso di guasto di un disco in stato di degrado, ti consigliamo di eseguire regolarmente il backup dei dischi sottoposti a replica sincrona utilizzando gli snapshot standard. Puoi recuperare un disco ripristinando lo snapshot.

Errori a livello di zona

Un disco replicato o regionale viene replicato in modo sincrono nelle repliche del disco nelle zone principale e secondaria. Gli errori a livello di zona si verificano quando una replica di zona non è più disponibile. Gli errori zonali possono verificarsi nella zona principale o secondaria per uno dei seguenti motivi:

  • Si è verificato un'interruzione di servizio zonale.
  • La replica presenta una lentezza eccessiva nelle operazioni di scrittura.

La tabella seguente fornisce i vari scenari di errori zonali che potresti riscontrare per i dischi con replica sincrona e l'azione consigliata per ciascun scenario. In ciascuno di questi scenari, si presume che la replica zonale principale sia sana e sincronizzata durante lo stato iniziale.

Stato iniziale del disco Errore in Nuovo stato del disco Conseguenze del mancato rispetto Azione da compiere

Replica principale: sincronizzata

Replica secondaria: sincronizzata

Stato del disco: replica completata

Disco collegato in: zona principale

Zona principale

Replica principale: non sincronizzata o non disponibile

Replica secondaria: sincronizzata

Stato del disco: degradato

Disco collegato in: zona principale

  • La replica nella zona secondaria rimane in stato attivo e contiene i dati del disco più recenti.
  • La replica nella zona principale non è in stato attivo e non è garantito che contenga tutti i dati del disco.
Esegui il failover del disco collegandolo forzatamente a una VM nella zona secondaria sana.

Replica principale: sincronizzata

Replica secondaria: sincronizzata

Stato del disco: replica completata

Disco collegato in: zona principale

Zona secondaria

Replica principale: sincronizzata

Replica secondaria: non sincronizzata o non disponibile

Stato del disco: degradato

Disco collegato in: zona principale

  • La replica nella zona principale rimane in stato attivo e contiene i dati del disco più recenti.
  • La replica nella zona secondaria non è in stato normale e non è garantito che contenga tutti i dati del disco.
Nessuna azione necessaria. Compute Engine ripristina la sincronizzazione della replica non funzionante nella zona secondaria quando è di nuovo disponibile.

Replica principale: sincronizzata

Replica secondaria: non sincronizzata e non disponibile

Stato del disco: degradato

Disco collegato in: zona principale

Zona principale

Replica principale: sincronizzata, ma non disponibile

Replica secondaria: fuori sincronia

Stato del disco: non disponibile

Disco collegato in: zona principale

  • Entrambe le repliche zonali non sono disponibili e non possono gestire il traffico. Il disco non è più disponibile.
  • Se l'interruzione di zona o l'errore di replica è temporaneo, non si verifica alcuna perdita di dati.
  • Se l'interruzione di servizio zonale o l'errore della replica è permanente, tutti i dati scritti nella replica sana mentre il disco era in stato di degrado 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 dischi replicati utilizzando gli snapshot standard.

Replica principale: sincronizzata

Replica secondaria: In aggiornamento, ma disponibile

Stato del disco: aggiornamento in corso

Disco collegato in: zona principale

Zona principale

Replica principale: non disponibile

Replica secondaria: In aggiornamento, ma disponibile

Stato del disco: non disponibile

Disco collegato in: zona principale

  • Entrambe le repliche zonali non possono pubblicare traffico. Il disco diventa non disponibile.
  • Se l'interruzione nella zona o l'errore della replica è temporaneo, il disco riprende le operazioni quando la replica principale è di nuovo disponibile.
  • Se l'interruzione nella zona o l'errore di replica è permanente, il disco diventa inutilizzabile.

Replica principale: sincronizzata

Replica secondaria: non sincronizzata, ma disponibile

Stato del disco: degradato

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 zonali non possono pubblicare traffico. Il disco non è più disponibile.
  • Se l'interruzione nella zona o l'errore della replica è temporaneo, il disco riprende le operazioni quando la replica principale è di nuovo disponibile.
  • Se l'interruzione nella zona o l'errore di replica è permanente, il disco diventa inutilizzabile.

Errori di applicazioni e VM

In caso di interruzioni causate da una configurazione errata della VM, da un upgrade del sistema operativo non riuscito o da altri errori dell'applicazione, puoi force-attach il tuo disco replicato a un'istanza di calcolo nella stessa zona della replica sana.

Categoria di errore e (probabilità) Tipi di errori Azione
Errore dell'applicazione (alto)
  • Applicazioni non responsive
  • Errore dovuto ad azioni amministrative dell'applicazione (ad es. upgrade)
  • Errore umano (ad esempio, configurazione errata di parametri come certificato SSL o ACL)
Il piano di controllo dell'applicazione può attivare il failover in base alle soglie del controllo di integrità.
Errore della VM (medio)
  • Guasti dell'infrastruttura o dell'hardware
  • VM non risponde a causa di contesa della CPU, interruzione intermedia della rete
Le VM sono in genere sottoposte a riparazione automatica. Il piano di controllo dell'applicazione può attivare il failover in base alle soglie del controllo di integrità.
Corruzione dell'applicazione (bassa-media) Danneggiamento dei dati dell'applicazione
(ad esempio a causa di bug dell'applicazione o di un aggiornamento del sistema operativo non riuscito)
Recupero dell'applicazione:

Esegui il failover di un disco replicato utilizzando force-attach

Se la zona principale non funziona, puoi eseguire il failover del volume Regional Persistent Disk o Hyperdisk Balanced High Availability (anteprima) a un'istanza di calcolo in un'altra zona utilizzando un'operazione di attacco forzato.

In caso di errore nella zona principale, potresti non essere in grado di scollegare il disco dall'istanza perché non è possibile raggiungerla per eseguire l'operazione di scollegamento. L'associazione forzata ti consente di collegare un disco permanente regionale o un volume Hyperdisk bilanciato con disponibilità elevata a un'istanza di calcolo anche se il volume è collegato a un'altra istanza.

Al termine dell'operazione di attacco forzato, Compute Engine impedisce all'istanza originale di scrivere sul disco replicato. L'utilizzo dell'operazione di attacco forzato ti consente di recuperare in sicurezza l'accesso ai tuoi dati e di recuperare il servizio. Hai anche la possibilità di arrestare manualmente l'istanza VM dopo aver eseguito l'operazione di attacco forzato.

Per forzare il collegamento di un disco esistente a un'istanza di calcolo, seleziona una delle seguenti attività:

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Seleziona il progetto.

  3. Fai clic sul nome dell'istanza da modificare.

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

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

  6. Seleziona il disco replicato a livello di regione dall'elenco a discesa.

  7. Per forzare l'attacco del disco, seleziona la casella di controllo Esegui l'attacco forzato del disco.

  8. Fai clic su Fine e poi su Salva.

Una volta risolto l'errore, puoi eseguire gli stessi passaggi per force-attach un disco all'istanza di calcolo originale.

gcloud

Nell'interfaccia alla gcloud CLI, utilizza il comando instances attach-disk per collegare il disco replica a un'istanza di calcolo. 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 di calcolo nella regione
  • DISK_NAME: il nome del disco replicato

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

REST

Crea una richiesta POST al metodo compute.instances.attachDisk e includi l'URL del disco replicato che hai appena creato. Per collegare il disco alla nuova istanza di calcolo, il parametro di query forceAttach=true è obbligatorio se il disco è ancora collegato all'istanza di calcolo principale.

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 posizione dell'istanza di calcolo
  • VM_NAME: il nome dell'istanza di calcolo dove aggiungi il disco replicato
  • REGION: la regione in cui si trova il disco replicato
  • DISK_NAME: il nome del disco replicato

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

Esegui il failover di un disco di avvio a un'istanza secondaria

Puoi avere un solo disco di avvio collegato a un'istanza di calcolo. Quando si verifica un errore su un disco di avvio replicato, utilizza uno dei seguenti metodi, a seconda che l'istanza di calcolo secondaria esista già:

Utilizzare il checkpoint di recupero della replica per recuperare i dischi replicati

Un checkpoint di recupero della replica rappresenta il punto in tempo più recente coerente con gli arresti anomali di un volume Regional Persistent Disk o Hyperdisk bilanciato con disponibilità elevata (anteprima) completamente replicato. Compute Engine consente di creare snapshot standard dal checkpoint di recupero della replica per i dischi regionali degradati.

In rari casi, quando il disco è in stato di degrado, anche la replica zonale sincronizzata con i dati più recenti del disco può non riuscire prima che la replica non sincronizzata venga aggiornata. Non potrai collegare forzatamente il disco alle istanze di calcolo in nessuna delle due zone. Il disco replicato diventa non disponibile e devi eseguire la migrazione dei dati su un nuovo disco. In questi scenari, se non sono disponibili snapshot standard per il tuo 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 i passaggi dettagliati, consulta la Procedura per eseguire la migrazione e il recupero dei dati del disco.

Procedura per eseguire la migrazione e il recupero dei dati del disco

Per recuperare e eseguire la migrazione dei dati di un disco replicato utilizzando il checkpoint di recupero della replica:

  1. Crea uno snapshot standard del volume Hyperdisk bilanciato con disponibilità elevata (anteprima) o del disco permanente regionale interessato dal checkpoint di recupero della replica.

    Puoi creare lo snapshot standard di un disco dal checkpoint di recupero della replica utilizzando solo gcloud CLI o REST.

    gcloud

    Per creare uno snapshot utilizzando il checkpoint di recupero della replica, utilizza il gcloud compute snapshots createcomando . 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: un nome per lo 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 ripristino di un disco di origine in un progetto diverso, 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 multipla di Cloud Storage o la regione di Cloud Storage dove 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 predefinita o personalizzata configurata nelle impostazioni degli snapshot.
    • SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE. 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 in stato di degrado. Se provi a creare uno snapshot da un checkpoint di recupero della replica quando il dispositivo è completamente replicato, viene 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, invia una richiesta POST al metodo snapshots.insert. Escludi il parametro sourceDisk e includi 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: un nome per lo 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 ripristino di un disco di origine in un progetto diverso, 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 multipla di Cloud Storage o la regione di Cloud Storage dove 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 predefinita o personalizzata configurata nelle impostazioni degli snapshot.
    • SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE. 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 in stato di degrado. Se provi a creare uno snapshot da un checkpoint di recupero della replica quando il dispositivo è completamente replicato, viene 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 disco permanente regionale o disco Hyperdisk ad alta disponibilità bilanciata utilizzando questo snapshot. Quando crei il nuovo disco, puoi recuperare tutti i dati dal checkpoint di recupero della replica più recente ripristinandoli nel nuovo disco dallo snapshot. Per la procedura dettagliata, consulta Creare una nuova VM con un disco di avvio replicato.

  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 siano in esecuzione correttamente. Per ulteriori informazioni, consulta Spostare una VM tra zone o regioni.

Dopo aver recuperato e migrato i dati del disco e le VM nel nuovo disco permanente regionale o Hyperdisk bilanciato ad alta disponibilità, puoi riprendere le operazioni.

Determina l'RPO fornito dal checkpoint di recupero della replica

Questa sezione spiega come determinare il RPO fornito dall'ultimo checkpoint di recupero della replica di un volume Regional Persistent Disk o Hyperdisk Balanced High Availability (Preview).

Le repliche zonali sono completamente sincronizzate

Compute Engine aggiorna il checkpoint di recupero della replica del tuo disco permanente regionale o volume Hyperdisk bilanciato con disponibilità elevata circa ogni 10 minuti. Di conseguenza, quando le repliche zonali sono completamente sincronizzate, il RPO è di circa 10 minuti.

Le repliche zonali non sono sincronizzate

Non puoi visualizzare i timestamp esatti di creazione e aggiornamento di un checkpoint di recupero della replica. Tuttavia, puoi stimare il RPO approssimativo fornito dall'ultimo checkpoint utilizzando i seguenti dati:

  • Timestamp più recente dello stato del disco completamente replicato: puoi ottenere queste informazioni utilizzando i dati di Cloud Monitoring per la metrica replica_state del disco replicato. Controlla i dati delle metriche replica_state per la replica non sincronizzata per determinare quando la replica è stata non sincronizzata. Poiché Compute Engine aggiorna il checkpoint del disco ogni 10 minuti, l'aggiornamento del checkpoint più recente potrebbe essere avvenuto circa 10 minuti prima di questo timestamp.
  • Timestamp dell'operazione di scrittura più recente: puoi ottenere queste informazioni utilizzando i dati di Cloud Monitoring per la metrica write_ops_count del disco replicato. 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 la RPO approssimativa fornita dal checkpoint di recupero della replica del disco. Se il valore calcolato è inferiore a zero, il RPO è effettivamente pari a 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