Répliquer des volumes de manière asynchrone

Cette page explique comment configurer et effectuer la réplication asynchrone des volumes de stockage par blocs isolés Google Distributed Cloud (GDC).

La réplication asynchrone est utilisée pour répliquer les données d'une zone GDC vers une autre. Ces données répliquées peuvent être utilisées en cas de basculement si les données de la zone source ne sont pas disponibles. Notez qu'une fois le basculement créé, le volume d'origine ne peut pas être configuré pour être répliqué sur le même volume de destination. À la place, vous devez créer une relation de réplication.

Avant de commencer

Pour utiliser la réplication de blocs asynchrone, votre opérateur d'infrastructure (OI) doit d'abord configurer l'infrastructure de stockage entre les deux zones dans lesquelles la réplication est requise. Plus précisément, ils doivent d'abord appairer les clusters de stockage concernés de chaque zone. Il doit ensuite associer la machine virtuelle de stockage à l'organisation dans laquelle le stockage par blocs est provisionné.

Ensuite, assurez-vous de disposer du rôle volume-replication-admin-global pour administrer la ressource VolumeReplicationRelationship. Si l'API globale n'est pas disponible, le rôle app-volume-replication-admin peut être utilisé pour modifier directement la ressource VolumeReplicationRelationshipReplica zonale.

Configurer la réplication

La ressource personnalisée (CR) VolumeReplicationRelationship gère l'API de réplication de blocs asynchrone. Cette RS existe dans l'API de gestion globale. Pour activer la réplication d'un périphérique de bloc donné, vous devez créer un CR VolumeReplicationRelationship sur l'API de gestion 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

Cet exemple suppose qu'un projet nommé my-project est créé dans une organisation nommée my-org et qu'un PVC nommé my-block-pvc a déjà été provisionné. clusterRef correspond au nom du cluster sur lequel existe le PVC.

Les champs source et destination de la spécification indiquent respectivement l'emplacement d'origine et de destination des données répliquées. Dans cet exemple, les données sont répliquées de xx-xxxx-zone1 vers xx-xxxx-zone2.

Vérifiez l'état de la relation de réplication en récupérant le CR VolumeReplicationRelationship à partir de l'API globale. Consultez l'exemple suivant. Notez que la sortie a été tronquée pour simplifier :

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

Créer un basculement

Si la zone source n'est pas disponible pour une raison quelconque, un CR VolumeFailover peut être créé dans le plan de gestion de la zone de destination de l'organisation. Pour une organisation V2, il s'agit du serveur de l'API Management. Pour une organisation v1, il s'agit du cluster d'administrateur de l'organisation. Par exemple, si une relation VolumeReplicationRelationship a été créée et spécifie xx-xxxx-zone2 comme zone de destination et que le PVC existe dans l'organisation my-org, le CR VolumeFailover est créé dans le plan de gestion my-org dans xx-xxxx-zone2. Cela rompt la relation de réplication entre les deux zones et permet à une charge de travail de monter le PVC dans la zone de destination :

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

Une fois le basculement réussi, l'état du CR est mis à jour :

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

Une fois le basculement créé, la my-pvc-repl VolumeReplicationRelationship passe à l'état Broken Off. Le PVC dans xx-xxxx-zone2 peut désormais être monté.

À ce stade, VolumeReplicationRelationship ressemblera à l'exemple suivant. Encore une fois, cette sortie a été tronquée pour plus de simplicité :

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

Vous pouvez maintenant supprimer la VolumeReplicationRelationship, car il s'agit de la seule action restante pouvant être effectuée sur ce CR.

Redimensionner des volumes

Si le volume source est redimensionné à un moment donné, le volume correspondant dans la zone de destination, qui est créé pour l'utilisateur lorsqu'une relation VolumeReplicatioRelationship est créée, doit également être redimensionné pour correspondre.