Replica volúmenes de forma asíncrona

En esta página, se muestra cómo configurar y realizar la replicación asíncrona de volúmenes de almacenamiento en bloque aislados de Google Distributed Cloud (GDC).

La replicación asíncrona se usa para replicar datos de una zona de GDC a otra. Estos datos replicados se pueden usar en una situación de conmutación por error en caso de que los datos de la zona de origen no estén disponibles. Ten en cuenta que, una vez que se crea una conmutación por error, no se puede configurar el volumen original para que se replique en el mismo volumen de destino. En su lugar, se debe crear una nueva relación de replicación.

Antes de comenzar

Para usar la replicación de bloques asíncrona, tu operador de infraestructura (IO) primero debe configurar la infraestructura de almacenamiento entre las dos zonas en las que se requiere la replicación. Específicamente, primero deben intercambiar tráfico con los clústeres de almacenamiento pertinentes de cada zona. A continuación, deben interconectar la máquina virtual de almacenamiento asociada a la organización en la que se aprovisiona el almacenamiento en bloque.

Luego, asegúrate de tener el rol volume-replication-admin-global para administrar el recurso VolumeReplicationRelationship. En los casos en que la API global no esté disponible, se puede usar el rol de app-volume-replication-admin para modificar directamente el recurso VolumeReplicationRelationshipReplica zonal.

Configura la replicación

El recurso personalizado (CR) VolumeReplicationRelationship presta servicios a la API de replicación de bloques asíncrona. Este CR existe en la API de administración global. Para habilitar la replicación de un dispositivo de almacenamiento en bloques determinado, se debe crear un CR de VolumeReplicationRelationship en la API de administración global:

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

En este ejemplo, se supone que se creó un proyecto llamado my-project en una organización llamada my-org y que ya se aprovisionó una PVC llamada my-block-pvc. clusterRef es el nombre del clúster en el que existe el PVC.

Los campos source y destination de la especificación indican desde y hacia dónde se replican los datos, respectivamente. En este ejemplo, los datos se replican de xx-xxxx-zone1 a xx-xxxx-zone2.

Verifica el estado de la relación de replicación recuperando el CR de VolumeReplicationRelationship de la API global. Consulta el siguiente ejemplo. Ten en cuenta que el resultado se truncó para simplificarlo:

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 conmutación por error

En caso de que la zona de origen no esté disponible por algún motivo, se puede crear un CR de VolumeFailover en el plano de administración de la organización de la zona de destino. En el caso de una organización de la versión 2, este sería el servidor de la API de administración. En el caso de una organización de la versión 1, este sería el clúster de administrador de la organización. Por ejemplo, si se creó un VolumeReplicationRelationship que especifica xx-xxxx-zone2 como la zona de destino y existe un PVC en la organización my-org, el CR de VolumeFailover se crea en el plano de administración my-org en xx-xxxx-zone2. Esto interrumpe la relación de replicación entre las dos zonas y permite que una carga de trabajo monte el PVC en la zona de destino:

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

Luego, la conmutación por error exitosa se reflejará en el estado del CR:

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

Después de crear la conmutación por error, el objeto my-pvc-repl VolumeReplicationRelationship pasa a un estado Broken Off. Ahora se puede activar el PVC en xx-xxxx-zone2.

En este punto, el objeto VolumeReplicationRelationship se verá similar al siguiente ejemplo. De nuevo, este resultado se truncó para simplificarlo:

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

Ahora, puedes borrar VolumeReplicationRelationship de forma segura, ya que es la única acción restante que se puede realizar en este CR.

Cambia el tamaño de los volúmenes

Si en algún momento se cambia el tamaño del volumen de origen, también se debe cambiar el tamaño del volumen correspondiente en la zona de destino, que se crea en nombre del usuario cuando se crea un VolumeReplicatioRelationship, para que coincida.