Replica asincrona dei volumi

Questa pagina mostra come configurare ed eseguire la replica asincrona dei volumi di archiviazione a blocchi isolati da internet di Google Distributed Cloud (GDC).

La replica asincrona viene utilizzata per replicare i dati da una zona GDC a un'altra. Questi dati replicati possono essere utilizzati in uno scenario di failover nel caso in cui i dati nella zona di origine non siano disponibili. Tieni presente che, una volta creato un failover, il volume originale non può essere configurato per la replica nello stesso volume di destinazione. È necessario creare una nuova relazione di replica.

Prima di iniziare

Per utilizzare la replica asincrona dei blocchi, l'operatore dell'infrastruttura (IO) deve prima configurare l'infrastruttura di archiviazione tra le due zone in cui è richiesta la replica. In particolare, devono prima eseguire il peering dei cluster di archiviazione pertinenti di ogni zona. Successivamente, deve eseguire il peering della macchina virtuale di archiviazione associata all'organizzazione in cui viene eseguito il provisioning dell'archiviazione a blocchi.

Successivamente, assicurati di disporre del ruolo volume-replication-admin-global per amministrare la risorsa VolumeReplicationRelationship. Nei casi in cui l'API globale non è disponibile, il ruolo app-volume-replication-admin può essere utilizzato per modificare direttamente la risorsa VolumeReplicationRelationshipReplica zonale.

Configurare la replica

La risorsa personalizzata (CR) VolumeReplicationRelationship gestisce l'API di replica asincrona dei blocchi. Questa risposta predefinita esiste nell'API di gestione globale. Per abilitare la replica per un determinato dispositivo a blocchi, è necessario creare una CR VolumeReplicationRelationship nell'API di gestione globale:

apiVersion: storage.global.gdc.goog/v1
kind: VolumeReplicationRelationship
metadata:
  name: my-pvc-repl
  namespace: my-project
spec:
  source:
    pvc:
      clusterRef: my-pvc-cluster
      pvcRef: my-block-pvc
    zoneRef: xx-xxxx-zone1
 destination:
    pvc:
      clusterRef: my-pvc-cluster
    zoneRef: xx-xxxx-zone2

Questo esempio presuppone che un progetto denominato my-project venga creato in un'organizzazione denominata my-org e che sia già stato eseguito il provisioning di un PVC denominato my-block-pvc. clusterRef è il nome del cluster su cui esiste il PVC.

I campi source e destination della specifica indicano rispettivamente la posizione di origine e di destinazione della replica dei dati. In questo esempio, i dati vengono replicati da xx-xxxx-zone1 a xx-xxxx-zone2.

Controlla lo stato della relazione di replica recuperando la CR VolumeReplicationRelationship dall'API globale. Fai riferimento all'esempio seguente. Tieni presente che l'output è stato troncato per semplificare la visualizzazione:

apiVersion: storage.global.gdc.goog/v1
kind: VolumeReplicationRelationship
metadata:
  name: my-pvc-repl
  namespace: my-project
spec:
  destination:
    pvc:
      clusterRef: my-pvc-cluster
    zoneRef: xx-xxxx-zone2
  source:
    pvc:
      clusterRef: my-pvc-cluster
      pvcRef: my-block-pvc
    zoneRef: xx-xxxx-zone1
status:
  zones:
  - name: xx-xxxx-zone1
    replicaStatus:
      message: SnapMirror relationship has been established. Please check the destination
        zone for relationship state
      replicationID: a096621e-f062-11ef-ad24-00a0b89f23fb
      state: Established
  - name: xx-xxxx-zone2
    replicaStatus:
      exportedSnapshotName: snapmirror.c34f8845-e8c0-11ef-ad24-00a0b89f23fb_2150007868.2025-02-21_150000
      message: SnapMirror relationship has been successfully established
      replicationID: a096621e-f062-11ef-ad24-00a0b89f23fb
      state: Idle

Crea failover

Se la zona di origine non è disponibile per qualsiasi motivo, è possibile creare una CR VolumeFailover nel piano di gestione dell'organizzazione della zona di destinazione. Per un'organizzazione v2, questo sarebbe il server API di gestione. Per un'organizzazione v1, questo sarebbe il cluster di amministrazione dell'organizzazione. Ad esempio, se è stata creata una VolumeReplicationRelationship che specifica xx-xxxx-zone2 come zona di destinazione e la PVC esiste nell'organizzazione my-org, la CR VolumeFailover viene creata nel piano di gestione my-org in xx-xxxx-zone2. In questo modo, la relazione di replica tra le due zone viene interrotta e il PVC nella zona di destinazione può essere montato da un workload:

apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
  name: my-pvc-failover
  namespace: my-project
spec:
  volumeReplicationRelationshipRef: my-pvc-repl

Successivamente, un failover riuscito viene visualizzato nello stato della CR:

apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
  name: my-pvc-failover
  namespace: my-project
spec:
  volumeReplicationRelationshipRef: my-pvc-repl
status:
    state: Completed

Una volta creato il failover, my-pvc-repl VolumeReplicationRelationship passa allo stato Broken Off. Il PVC in xx-xxxx-zone2 ora può essere montato.

A questo punto, VolumeReplicationRelationship sarà simile all'esempio seguente. Anche in questo caso, l'output è stato troncato per semplificare la procedura:

apiVersion: storage.global.gdc.goog/v1
kind: VolumeReplicationRelationship
metadata:
  name: my-pvc-repl
  namespace: my-project
spec:
  destination:
    pvc:
      clusterRef: my-pvc-cluster
    zoneRef: xx-xxxx-zone2
  source:
    pvc:
      clusterRef: my-pvc-cluster
      pvcRef: my-block-pvc
    zoneRef: xx-xxxx-zone1
status:
  zones:
  - name: xx-xxxx-zone1
    replicaStatus:
      message: SnapMirror relationship has been broken off
      replicationID: a096621e-f062-11ef-ad24-00a0b89f23fb
      state: Broken Off
  - name: xx-xxxx-zone2
    replicaStatus:
      exportedSnapshotName: snapmirror.c34f8845-e8c0-11ef-ad24-00a0b89f23fb_2150007868.2025-02-21_150000
      message: SnapMirror relationship has been broken off
      replicationID: a096621e-f062-11ef-ad24-00a0b89f23fb
      state: Broken Off

Ora puoi eliminare VolumeReplicationRelationship in quanto è l'unica azione rimanente che può essere eseguita su questo CR.

Ridimensionare i volumi

Se in un determinato momento viene ridimensionato il volume di origine, anche il volume corrispondente nella zona di destinazione, creato per conto dell'utente quando viene creata una VolumeReplicatioRelationship, deve essere ridimensionato in modo che corrisponda.