Creare e gestire i dischi con replica sincrona


Disco permanente regionale e Hyperdisk bilanciato con disponibilità elevata sono opzioni di archiviazione che ti consentono di implementare i servizi ad alta disponibilità (HA) in Compute Engine. Persistent Disk regionali e Hyperdisk con alta disponibilità bilanciata replicano in modo sincrono i dati tra due zone nella stessa regione e garantiscono l'alta disponibilità per i dati del disco in caso di un massimo di un errore circoscritto a una zona. Il disco sottoposto a replica sincrona può essere un disco di avvio o un disco non di avvio.

Questo documento spiega come eseguire le seguenti attività per i dischi replicati:

Prima di iniziare

  • Esamina le differenze tra i diversi tipi di opzioni di archiviazione su disco.
  • Esamina le nozioni di base della replica sincrona dei dischi.
  • Leggi ulteriori informazioni sul failover dei dischi replicati.
  • 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:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    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. Terraform

      Per utilizzare gli esempi di Terraform in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Per ulteriori informazioni, consulta Set up authentication for a local development environment.

      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 e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per creare un disco con replica sincrona, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

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 creare un disco con replica sincrona. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per creare un disco con replica sincrona sono necessarie le seguenti autorizzazioni:

  • compute.disks.create
  • compute.instances.attachDisk
  • compute.disks.use
  • Crea uno snapshot di un disco: compute.disks.createSnapshot
  • Visualizza i dettagli di un disco: compute.disks.get
  • Visualizza un elenco di dischi: compute.disks.list
  • Modificare le dimensioni di un disco: compute.disks.update

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

Limitazioni

  • Messico, Osaka e Montréal hanno tre zone in uno o due data center fisici. Poiché i dati archiviati in queste regioni possono andare persi nell'improbabile caso in cui i data center vengano distrutti, potresti prendere in considerazione il backup dei dati business-critical in una seconda regione per una protezione dei dati maggiore.
  • È possibile collegare un disco permanente regionale solo alle macchine virtuali che utilizzano come machine family E2, N1, N2 e N2D.
  • Puoi collegare Hyperdisk bilanciato con disponibilità elevata solo ai tipi di macchine supportati.
  • Non puoi creare un Persistent Disk di una regione da un'immagine o da un disco creato da un'immagine.
  • Quando utilizzi la modalità di sola lettura, puoi collegare un Persistent Disk bilanciato regionale a un massimo di 10 istanze VM.
  • La dimensione minima di un Persistent Disk standard regionale è 200 GiB.
  • Puoi solo aumentare le dimensioni di un disco Persistent Disk o volume Hyperdisk bilanciato ad alta disponibilità; non puoi ridurle.
  • I volumi Hyperdisk e disco permanente regionale con disponibilità elevata bilanciata hanno caratteristiche di prestazioni diverse rispetto ai dischi zonali corrispondenti. Per ulteriori informazioni, consulta Rendimento dello spazio di archiviazione a blocchi.
  • Non puoi utilizzare un volume Hyperdisk bilanciato con disponibilità elevata in modalità multi-writer come disco di avvio.
  • Se crei un disco replicato clonando un disco a livello di zona, le due repliche a livello di zona non sono completamente sincronizzate al momento della creazione. Dopo la creazione, puoi utilizzare la copia del disco regionale in media entro 3 minuti. Tuttavia, potresti dover attendere decine di minuti prima che il disco raggiunga uno stato di replica completa e il Recovery Point Objective (RPO) sia vicino allo zero. Scopri come verificare se il disco replicato è completamente replicato.

Informazioni sull'utilizzo di un disco replicato come disco di avvio per una VM

Puoi collegare un I dischi di avvio replicati non sono destinati allo standby caldo, poiché non possono essere collegati contemporaneamente a due VM.

Puoi creare solo volumi Hyperdisk bilanciati ad alta disponibilità o dischi permanenti regionali dagli snapshot. Non è possibile creare un disco replicato da un'immagine.

Per utilizzare un disco replicato come disco di avvio della VM, utilizza uno dei seguenti metodi:

  1. Crea una nuova VM con un disco di avvio replicato.
  2. Crea un disco di avvio replicato e collegalo a una VM:
    1. Crea un disco replicato da uno snapshot di un disco di avvio.
    2. Collega un disco di avvio replicato a una VM.

Se devi eseguire il failover di un disco di avvio replicato a una VM di standby in esecuzione nella zona di replica, segui i passaggi descritti in Collegare un disco di avvio replicato a una VM.

Crea un disco con replica sincrona

Crea un volume Hyperdisk bilanciato con disponibilità elevata (anteprima) o un volume regionale del Persistent Disk. Il disco deve trovarsi nella stessa regione della VM a cui prevedi di collegarlo.

Se crei un volume Hyperdisk bilanciato con disponibilità elevata, puoi anche consentire a diverse VM di accedere contemporaneamente al disco impostando la modalità di accesso al disco. Per maggiori informazioni, vedi Condividere un disco tra VM.

Per Persistent Disk a livello di area geografica, se crei un disco nella console Google Cloud, il tipo di disco predefinito è pd-balanced. Se crei un disco utilizzando gcloud CLI o REST, il tipo di disco predefinito è pd-standard.

Console

  1. Nella console Google Cloud, vai alla pagina Dischi.

    Vai a Dischi

  2. Seleziona il progetto richiesto.

  3. Fai clic su Crea disco.

  4. Specifica un nome per il disco.

  5. Per Località, scegli Regionale.

  6. Seleziona la Regione e la Zona. Devi selezionare la stessa regione quando crei la VM.

  7. Seleziona la Zona replica nella stessa regione. Prendi nota delle zone selezionate perché devi collegare il disco alla VM in una di queste zone.

  8. Seleziona il Tipo di disco di origine.

  9. Seleziona Tipo di disco e Dimensioni.

  10. Fai clic su Crea per completare la creazione del disco.

gcloud

Crea un disco con replica sincrona utilizzando il comando compute disks create.

Se hai bisogno di un disco permanente SSD regionale per un throughput o IOPS aggiuntivi, includi il flag --type e specifica pd-ssd.

gcloud compute disks create DISK_NAME \
   --size=DISK_SIZE \
   --type=DISK_TYPE \
   --region=REGION \
   --replica-zones=ZONE1,ZONE2
   --access-mode=DISK_ACCESS_MODE

Sostituisci quanto segue:

  • DISK_NAME: il nome del nuovo disco
  • DISK_SIZE: le dimensioni, in GiB, del nuovo disco
  • DISK_TYPE: per i Persistent Disk regionali, si tratta del tipo del disco replicato. Il valore predefinito è pd-standard. Per Hyperdisk, specifica il valore hyperdisk-balanced-high-availability.
  • REGION: la regione in cui deve trovarsi il disco replicato, ad esempio: europe-west1
  • ZONE1,ZONE2: le zone all'interno della regione in cui si trovano le due repliche del disco, ad esempio: europe-west1-b,europe-west1-c
  • DISK_ACCESS_MODE: facoltativo: come le VM possono accedere ai dati sul disco. I valori supportati sono:

    • READ_WRITE_SINGLE, per l'accesso in lettura e scrittura da una VM. Questa è l'impostazione predefinita.
    • READ_WRITE_MANY, per l'accesso in lettura e scrittura da più VM.

    Puoi impostare la modalità di accesso solo per i dischi Hyperdisk bilanciati con disponibilità elevata.

Terraform

Per creare un Persistent Disk regionale o un volume Hyperdisk con disponibilità elevata bilanciata, puoi utilizzare la google_compute_region_disk risorsa.

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

REST

Per creare un Persistent Disk regionale o un volume Hyperdisk bilanciato con disponibilità elevata, costruisci una richiesta POST al metodo compute.regionDisks.insert.

Per creare un disco vuoto, non specificare un'origine dello snapshot.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks
{
  "name": "DISK_NAME",
  "region": "projects/PROJECT_ID/regions/REGION",
  "replicaZones": [
    "projects/PROJECT_ID/zones/ZONE1",
    "projects/PROJECT_ID/zones/ZONE2"
  ],
  "sizeGb": "DISK_SIZE",
  "type": "projects/PROJECT_ID/regions/REGION/diskTypes/DISK_TYPE",
  "accessMode": "DISK_ACCESS_MODE"
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • REGION: la regione in cui deve trovarsi il disco replicato, ad esempio: europe-west1
  • DISK_NAME: il nome del nuovo disco
  • ZONE1,ZONE2: le zone in cui devono trovarsi le repliche del nuovo disco
  • DISK_SIZE: le dimensioni, in GiB, del nuovo disco
  • DISK_TYPE: per i Persistent Disk regionali, si tratta del tipo di disco permanente. Per Hyperdisk, specifica il valore hyperdisk-balanced-high-availability.
  • DISK_ACCESS_MODE: indica in che modo le VM possono accedere ai dati sul disco. I valori supportati sono:

    • READ_WRITE_SINGLE, per l'accesso in lettura e scrittura da una VM. Questa è l'impostazione predefinita.
    • READ_WRITE_MANY, per l'accesso in lettura e scrittura da più VM.

    Puoi impostare la modalità di accesso solo per i dischi Hyperdisk bilanciati con disponibilità elevata.

Collega un disco replicato alla VM

Per i dischi che non sono dischi di avvio, dopo aver creato un volume Hyperdisk bilanciato ad alta disponibilità (anteprima), puoi collegarlo a una VM. La VM deve trovarsi nella stessa regione del disco.

Per collegare un disco di avvio replicato a una VM, consulta Collegare un disco di avvio replicato a una VM.

Per collegare un disco a più VM, ripeti la procedura descritta in questa sezione per ogni VM.

Console

  1. Per collegare un disco a una VM, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Nella colonna Nome, fai clic sul nome della VM.

  3. Fai clic su Modifica .

  4. Fai clic su + Collega disco esistente.

  5. Scegli il disco replicato creato in precedenza da aggiungere alla VM.

  6. Se viene visualizzato un avviso che indica che il disco selezionato è già collegato a un'altra istanza, seleziona la casella Associa forzatamente il disco per associarlo forzatamente alla VM in modifica.

    Esamina i casi d'uso per l'attacco forzato dei dischi replicati in Failover dei dischi replicati.

  7. Fai clic su Salva.

  8. Nella pagina Modifica VM, fai clic su Salva.

gcloud

Per collegare un disco replicato a una VM in esecuzione o arrestata, utilizza il comando compute instances attach-disk con il flag --disk-scope impostato su regional.

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

Sostituisci quanto segue:

  • VM_NAME: il nome della VM a cui aggiungi il disco replicato
  • DISK_NAME: il nome del nuovo disco che colleghi alla VM

Terraform

Per collegare un volume di Persistent Disk regionale o Hyperdisk ad alta disponibilità bilanciata a una VM, puoi utilizzare la google_compute_attached_disk risorsa.

resource "google_compute_instance" "test_node" {
  name         = "test-node"
  machine_type = "f1-micro"
  zone         = "us-west1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  attached_disk {
    source      = google_compute_disk.default.id
    device_name = google_compute_disk.default.name
  }

  network_interface {
    network = "default"
    access_config {
      # Ephemeral IP
    }
  }

  # Ignore changes for persistent disk attachments
  lifecycle {
    ignore_changes = [attached_disk]
  }


}

REST

Per collegare un disco replicato a una VM in esecuzione o arrestata, costruisci una richiesta POST al metodo compute.instances.attachDisk e includi l'URL del disco replicato che hai creato.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk
{
  "source": "/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • ZONE: la posizione della VM
  • VM_NAME: il nome della VM a cui aggiungi il nuovo disco replicato
  • REGION: la regione in cui si trova il disco replicato
  • DISK_NAME: il nome del disco replicato

Per i dischi non di avvio, dopo aver creato e collegato un disco replicato vuoto a una VM, devi formattare e montare il disco, in modo che il sistema operativo possa utilizzare lo spazio di archiviazione disponibile.

Passare da un disco zonale a un disco replicato

Per convertire un Persistent Disk a livello di zona esistente in un disco permanente a livello di regione, crea un nuovo disco clonando un disco a livello di zona esistente. Per ulteriori informazioni, consulta Creare una copia di un disco regionale da un disco zonale.

Per convertire un Hyperdisk in un disco con replica sincrona, crea un nuovo disco Hyperdisk bilanciato con disponibilità elevata da uno snapshot del disco esistente, come descritto in Modificare il tipo di disco.

Creare una nuova VM con dischi replicati

Quando crei una VM, puoi includere facoltativamente i volumi Hyperdisk con disponibilità elevata bilanciata o Persistent Disk a livello di regione (anteprima) come dischi aggiuntivi.

Per creare e collegare un Persistent Disk regionale o un volume Hyperdisk ad alta disponibilità bilanciata a una VM durante la creazione della VM, consulta una delle seguenti risorse:

Creare una nuova VM con un disco di avvio replicato

Quando configuri un'istanza VM ad alta disponibilità, puoi creare la VM principale con un disco di avvio replicato. In caso di interruzione zonale, puoi riavviare la VM nella zona secondaria anziché creare una nuova VM.

In una configurazione ad alta disponibilità, in cui il dispositivo di avvio è un disco replicato, Google consiglia di non creare e avviare in anticipo l'istanza in standby. Al contrario, nella fase di failover, associa il disco replicato esistente quando crei l'istanza di standby utilizzando l'opzione forceAttach.

Per creare una VM con un disco di avvio che è un disco replicato, utilizza uno dei seguenti metodi:

gcloud

Utilizza il comando gcloud compute instances create per creare una VM e il flag --create-disk per specificare il disco replicato.

gcloud compute instances create PRIMARY_INSTANCE_NAME  \
 --zone=ZONE  \
 --create-disk=^:^name=REPLICATED_DISK_NAME:scope=regional:boot=true:type=DISK_TYPE:source-snapshot=SNAPSHOT_NAME:replica-zones=ZONE,REMOTE_ZONE

Quando specifichi i parametri del disco, i caratteri ^:^ specificano che il carattere di separazione tra i parametri è due punti (:). Questo ti consente di utilizzare una virgola (,) quando specifichi il parametro replica-zones.

Sostituisci quanto segue:

  • PRIMARY_INSTANCE_NAME: un nome per la VM
  • ZONE: il nome della zona in cui vuoi creare la VM
  • REPLICATED_DISK_NAME: un nome per il disco replicato
  • DISK_TYPE: il tipo di disco da creare, ad esempio hyperdisk-balanced-high-availability (Anteprima) o pd-balanced
  • SNAPSHOT_NAME: il nome dello snapshot che hai creato per il disco di avvio
  • REMOTE_ZONE: la zona alternativa per il disco replicato

REST

Crea una richiesta POST al metodo instances.insert e specifica le proprietà boot: 'true' e replicaZones. Ad esempio:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
 "name": "VM_NAME",
 "disks": [{
    "boot": true,
    "initializeParams": {
       "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME",
       "replicaZones": [
           "projects/PROJECT_ID/zones/ZONE",
           "projects/PROJECT_ID/zones/REMOTE_ZONE"
       ],
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
    }
  }],
 "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • ZONE: il nome della zona in cui vuoi creare la VM
  • VM_NAME: un nome per la VM
  • BOOT_SNAPSHOT_NAME: il nome dello snapshot del disco di avvio
  • REMOTE_ZONE: la zona remota per il disco replicato
  • DISK_TYPE: il tipo di disco da creare, ad esempio hyperdisk-balanced-high-availability (Anteprima) o pd-balanced

Collega un disco di avvio replicato a una VM

Procedi nel seguente modo per:

  • Sostituisci il disco di avvio di una VM esistente con un disco di avvio replicato.
  • Esegui il failover di un disco di avvio replicato su una VM hot standby in esecuzione nella zona di backup. A tal fine, collega il disco replicato alla VM come disco di avvio.

Questi passaggi presuppongono che il disco e la VM replicati esistano già.

gcloud

  1. Arresta la VM.
    gcloud compute instances stop VM_NAME  --zone=ZONE
    
  2. Scollega il disco di avvio attuale dalla VM.
    gcloud compute instances detach-disk VM_NAME \
     --zone=ZONE --disk=CURRENT_BOOT_DEVICE_NAME
    
  3. Collega il disco di avvio replicato alla VM.
    gcloud compute instances attach-disk VM_NAME  \
     --zone=ZONE  \
     --disk=REPLICATED_DISK_NAME  \
     --disk-scope=regional --force-attach \
     --boot
    
  4. Riavvia la VM.

    gcloud compute instances start VM_NAME
    

Sostituisci le variabili nei comandi precedenti con quanto segue:

  • VM_NAME: il nome della VM a cui vuoi collegare il disco di avvio replicato
  • ZONE: la zona in cui si trova la VM
  • CURRENT_BOOT_DEVICE_NAME: il nome del disco di avvio utilizzato dalla VM. Di solito corrisponde al nome della VM.
  • REPLICATED_DISK_NAME: il nome del disco replicato che vuoi collegare alla VM come disco di avvio

(Facoltativo) Se non riesci a scollegare il disco di avvio replicato dalla VM principale a causa di un'interruzione o di un errore, includi il flag --force-attach.

REST

  1. Arresta la VM.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    
  2. Scollega il disco di avvio attuale dalla VM.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/detachDisk?deviceName=CURRENT_BOOT_DEVICE_NAME
    
  3. Collega il disco di avvio replicato alla VM.

    Crea una richiesta POST al metodo compute.instances.attachDisk e includi l'URL del disco di avvio replicato:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk
    {
    "source": "compute/v1/projects/PROJECT_ID/regions/REGION/disks/REPLICATED_DISK_NAME",
    "boot": true
    }
  4. Riavvia la VM.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

Sostituisci le variabili nei comandi precedenti con quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • VM_NAME: il nome della VM a cui vuoi collegare il disco replicato
  • ZONE: la zona in cui si trova la VM
  • CURRENT_BOOT_DEVICE_NAME: il nome del disco di avvio utilizzato dalla VM. Di solito corrisponde al nome della VM.
  • REGION: la regione in cui si trova il disco replicato
  • REPLICATED_DISK_NAME: il nome del disco replicato che vuoi collegare alla VM come disco di avvio

(Facoltativo) Se non riesci a scollegare correttamente il disco di avvio replicato dalla VM a cui era originariamente collegato a causa di un'interruzione o un errore, includi "forceAttach": true nel corpo della richiesta.

Elenca e descrivi i dischi replicati

Puoi visualizzare un elenco di tutti i dischi replicati configurati e informazioni sulle relative proprietà, tra cui:

  • ID disco
  • Nome disco
  • Dimensioni
  • Tipo di disco
  • Regione
  • Repliche zonali

Per visualizzare informazioni dettagliate sui dischi replicati, utilizza quanto segue:

Ridimensionare un disco replicato

Se le VM con dischi replicati in modo sincrono richiedono ulteriore spazio di archiviazione, puoi ridimensionare i dischi. Puoi ridimensionare i dischi in qualsiasi momento, indipendentemente dal fatto che siano collegati a una VM in esecuzione. Se devi separare i dati in volumi univoci, crea più dischi secondari per la VM. Per Hyperdisk bilanciato con disponibilità elevata puoi anche aumentare i limiti di IOPS e throughput per il disco.

Il comando per ridimensionare un disco replicato è molto simile a quello per ridimensionare un disco non replicato. Tuttavia, devi specificare una regione anziché una zona per la posizione del disco.

Puoi solo aumentare, non diminuire, le dimensioni di un disco. Per ridurre le dimensioni del disco, devi creare un nuovo disco di dimensioni inferiori. Fino a quando non elimini il disco originale più grande, ti verranno addebitati entrambi i dischi.

Per istruzioni su come modificare un disco replicato, consulta quanto segue:

Passaggi successivi