Gestisci 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 usare a livello di regione Persistent Disk o Hyperdisk Bilanciato ad alta disponibilità come componente di base quando implementa i servizi ad alta disponibilità 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

  • Esamina le nozioni di base sui dischi con replica sincrona e sul failover. Per saperne di più, consulta la pagina Informazioni sulla replica sincrona dei dischi.
  • Se non l'hai già 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 come segue.

    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 ulteriori informazioni, vedi Esegui 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 recupero della replica:
    • compute.snapshots.create sul progetto
    • compute.disks.createSnapshot sul disco
  • Per creare un nuovo disco replicato in modo sincrono 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 replicati in modo sincrono, quando il dispositivo viene completamente replicato, i dati viene replicato 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 che è persistente in modo durabilità in una replica.

Se e quando Compute Engine rileva che la replica può essere ripresa, scritto in una replica dopo che l'altra replica ha raggiunto lo stato degrado viene sincronizzato con entrambe le zone e il disco torna a uno stato completamente replicato. Questa transizione è completamente automatizzata.

RPO e RTO non sono definiti mentre le prestazioni di un dispositivo sono ridotte. Per ridurre al minimo la perdita di dati e disponibilità in caso di guasto di un disco in stato di degradazione, 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 di zona

Un disco replicato, o disco regionale, viene replicato in modo sincrono su disco di repliche nella zona primaria e secondaria. Gli errori a livello di zona si verificano quando una replica di zona non è più disponibile. Gli errori di zona possono verificarsi nell'account principale per uno dei seguenti motivi:

  • Si è verificato un'interruzione di servizio zonale.
  • La replica ha un rallentamento eccessivo nelle operazioni di scrittura.

La tabella seguente illustra i vari scenari di errore a livello di zona che potresti per i dischi replicati in modo sincrono e l'azione consigliata per ogni in questo 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 Nuovo stato del disco Conseguenze del mancato rispetto Azione da compiere

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 in stato attivo e contiene i dati del disco più recenti.
  • La replica nella zona principale non è in stato normale e non è garantito che contenga tutti i dati del disco.
Failover del disco mediante collegamento forzato su una VM nella zona secondaria integra.

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: 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 corretto e non è garantito che contenga tutti i dati del disco.
Nessuna azione necessaria. Compute Engine inserisce la replica in stato non integro di nuovo la sincronizzazione della zona secondaria una volta che è 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 del servizio o l'errore di replica a livello di zona è temporaneo, non andranno persi.
  • Se l'interruzione o l'errore di replica a livello di zona è permanente, dati scritti nella replica integra mentre il disco era ridotto è stata persa 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 snapshot standard.

Replica principale: sincronizzata

Replica secondaria: In aggiornamento, ma disponibile

Stato del disco: recupero in corso

Disco collegato in: zona principale

Zona principale

Replica principale: non disponibile

Replica secondaria: 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 del servizio o l'errore di replica a livello di zona è temporaneo, Il disco riprende le operazioni quando è disponibile la replica principale di nuovo.
  • 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: 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 del servizio o l'errore di replica a livello di zona è temporaneo, Il disco riprende le operazioni quando la replica principale diventa di nuovo disponibile.
  • Se l'interruzione nella zona o l'errore di replica è permanente, il disco diventa inutilizzabile.

Errori dell'applicazione e delle VM

In caso di interruzioni causate da un'errata configurazione della VM, un sistema operativo non riuscito o altri errori dell'applicazione, puoi force-attach la replica su un'istanza Compute nella stessa zona della replica integro.

Categoria di errore e (probabilità) Tipi di errori Azione
Errore dell'applicazione (elevato)
  • Le applicazioni non rispondono
  • Errore dovuto ad azioni amministrative dell'applicazione (ad es. upgrade)
  • Errore umano (ad es. parametri come il certificato SSL o gli ACL)
Il piano di controllo dell'applicazione può attivare il failover in base alle soglie del controllo di integrità.
Errore della VM (medio)
  • Errore dell'infrastruttura o dell'hardware
  • VM non risponde a causa di contesa della CPU, interruzione intermedia della rete
Le VM sono in genere riparazione automatica. Il piano di controllo dell'applicazione può attivare di failover basato su soglie del controllo di integrità.
Corruzione dell'applicazione (basso-medio) I dati dell'applicazione sono stati danneggiati
(ad esempio, a causa di bug dell'applicazione o un upgrade 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 Hyperdisk ad alta disponibilità bilanciata o del disco permanente regionale (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 disco dall'istanza perché quest'ultima non è raggiungibile per eseguire singola 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.

Dopo aver completato l'operazione di collegamento forzato, Compute Engine impedisce la scrittura sul disco replicato per l'istanza originale. 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 associazione forzata.

Per forzare il collegamento di un disco esistente a un'istanza di computing, seleziona una delle le 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

In gcloud CLI, utilizza Comando instances attach-disk per collegare il disco di replica a un'istanza Compute. Includi il flag --disk-scope e impostato 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 Compute 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 Compute può utilizzare il disco collegato forzatamente di 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, è necessario il parametro di query forceAttach=true 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 Compute in cui aggiungi il disco replicato
  • REGION: la regione in cui hai replicato il disco si trova
  • DISK_NAME: il nome del disco replicato

Dopo aver collegato il disco replicato, monta i file system sui dischi se necessario. L'istanza Compute può utilizzare il disco di replica per continuare 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 computing. 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 di coerenza dell'arresto anomalo più recente nel tempo di una replica Disco permanente regionale o disponibilità elevata con Hyperdisk Bilanciato (anteprima). Compute Engine consente di creare snapshot standard dal checkpoint di recupero della replica per i dischi regionali in stato di degrado.

In rari casi, quando le prestazioni del disco sono ridotte, la replica a livello di zona sincronizzati con i dati del disco più recenti possono inoltre avere esito negativo prima che la la replica riesce a stare al passo. Non potrai forzare l'associazione del disco a di calcolo delle istanze in una delle zone. Il disco replicato non è più disponibile e devi migrare i dati su un nuovo disco. In questi scenari, se non disponi di snapshot standard esistenti per il disco, potresti comunque riuscire a recuperarlo i dati della replica incompleta utilizzando uno snapshot standard creato dal checkpoint di recupero della replica. Vedi Procedura per la migrazione e il recupero dei dati del disco per la procedura dettagliata.

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 delle Disco permanente regionale o disponibilità elevata con Hyperdisk Bilanciato (Anteprima) dal rispettivo volume il checkpoint di ripristino della replica.

    Puoi creare lo snapshot standard di un disco dal checkpoint di recupero della replica utilizzando solo l'interfaccia a riga di comando gcloud o l'API REST.

    gcloud

    Per creare uno snapshot mediante il checkpoint di recupero della replica, utilizza Comando gcloud compute snapshots create . Includi il flag --source-disk-for-recovery-checkpoint per specifica che vuoi creare lo snapshot utilizzando un ripristino della replica punto di controllo. Escludi --source-disk e Parametri --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 da 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 la cui che vuoi usare per creare lo snapshot.
    • SOURCE_REGION: la regione del disco di origine la cui che vuoi usare per creare lo snapshot.
    • SOURCE_DISK_NAME: il nome del disco di origine la cui che vuoi usare per creare lo snapshot.
    • STORAGE_LOCATION: facoltativo: la regione multipla Cloud Storage o la regione Cloud Storage dove vuoi archiviare lo snapshot. Puoi specificare una sola località 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 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 sui dischi degradati. 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 invece il 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 da 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 la cui che vuoi usare per creare lo snapshot.
    • SOURCE_REGION: la regione del disco di origine la cui che vuoi usare per creare lo snapshot.
    • SOURCE_DISK_NAME: il nome del disco di origine la cui che vuoi usare per creare lo snapshot.
    • STORAGE_LOCATION: facoltativo: la regione multipla Cloud Storage o la regione Cloud Storage dove vuoi archiviare lo snapshot. Puoi specificare una sola località 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 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 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, recuperi tutti i dati dal il checkpoint di recupero della replica più recente ripristinando i dati nel nuovo dal disco dello 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 VM sul disco appena creato e verifica che questi carichi di lavoro 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 disco permanente regionale o Hyperdisk bilanciato ad alta disponibilità appena creato, 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 bilanciato con disponibilità elevata (anteprima).

Le repliche zonali sono completamente sincronizzate

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

Le repliche di zona non sono sincronizzate

Non puoi visualizzare i timestamp esatti di creazione e aggiornamento di un recupero della replica punto di controllo. 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 questo e informazioni utilizzando i dati di Cloud Monitoring replica_state del disco replicato. Controlla replica_state dei dati delle metriche per la replica non sincronizzata al fine di determinare quando è andata non sincronizzati. Poiché Compute Engine aggiorna il checkpoint del disco ogni 10 minuti, l'aggiornamento più recente del checkpoint potrebbe essere stato 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