En esta página se explica cómo configurar y realizar la replicación asíncrona de volúmenes de almacenamiento en bloque aislados de Google Distributed Cloud (GDC).
La réplica asíncrona se usa para replicar datos de una zona de GDC a otra. Estos datos replicados se pueden usar en caso de que los datos de la zona de origen no estén disponibles. Ten en cuenta que, una vez que se haya creado una conmutación por error, el volumen original no se podrá configurar para que se replique en el mismo volumen de destino. En su lugar, se debe crear una nueva relación de réplica.
Antes de empezar
Para usar la replicación de bloques asíncrona, tu operador de infraestructura (IO) debe configurar primero la infraestructura de almacenamiento entre las dos zonas en las que se requiere la replicación. En concreto, primero deben emparejar los clústeres de almacenamiento pertinentes de cada zona. A continuación, deben emparejar la máquina virtual de almacenamiento asociada a la organización en la que se aprovisiona el almacenamiento en bloque.
Después, asegúrate de que tienes el rol volume-replication-admin-global
para administrar el recurso VolumeReplicationRelationship. En los casos en los que la API global no esté disponible, se puede usar el rol app-volume-replication-admin
para modificar directamente el recurso VolumeReplicationRelationshipReplica zonal.
Configurar la replicación
El recurso personalizado VolumeReplicationRelationship (CR) proporciona la API de replicación de bloques asíncrona. Esta respuesta predefinida existe en la API de gestión global. Para habilitar la replicación de un dispositivo de bloque determinado, se debe crear un CR VolumeReplicationRelationship en la API de gestió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 da por hecho que se ha creado un proyecto llamado my-project
en una organización llamada my-org
y que ya se ha aprovisionado un PVC llamado my-block-pvc
. clusterRef
es el nombre del clúster en el que se encuentra el PVC.
Los campos source
y destination
de la especificación indican de dónde se replican los datos (from) y a dónde se replican (to), respectivamente. En este ejemplo, los datos se replican de xx-xxxx-zone1
a xx-xxxx-zone2
.
Comprueba el estado de la relación de replicación recuperando el CR VolumeReplicationRelationship de la API global. Consulta el siguiente ejemplo. Ten en cuenta que la salida se ha truncado para simplificarla:
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
Crear conmutación por error
Si la zona de origen no está disponible por algún motivo, se puede crear un CR VolumeFailover en el plano de gestión de la zona de destino de la organización. En el caso de una organización de la versión 2, sería el servidor de la API de gestión. En una organización de la versión 1, este sería el clúster de administrador de la organización. Por ejemplo, si se ha creado un objeto VolumeReplicationRelationship que especifica xx-xxxx-zone2
como zona de destino y el PVC existe en la organización my-org
, el objeto VolumeFailover CR se crea en el plano de gestión my-org
en xx-xxxx-zone2
. De esta forma, se rompe la relación de replicación entre las dos zonas y se permite que una carga de trabajo monte el PVC de la zona de destino:
apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
name: my-pvc-failover
namespace: my-project
spec:
volumeReplicationRelationshipRef: my-pvc-repl
Después, el estado de la CR reflejará que la conmutación por error se ha realizado correctamente:
apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
name: my-pvc-failover
namespace: my-project
spec:
volumeReplicationRelationshipRef: my-pvc-repl
status:
state: Completed
Una vez creada la conmutación por error, el my-pvc-repl
VolumeReplicationRelationship pasa al estado Broken Off
. El PVC de xx-xxxx-zone2
ahora se puede montar.
En este punto, VolumeReplicationRelationship tendrá un aspecto similar al del siguiente ejemplo. De nuevo, este resultado se ha truncado 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 eliminar VolumeReplicationRelationship sin problemas, ya que es la única acción que se puede realizar en este CR.
Cambiar 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 de la zona de destino, que se crea en nombre del usuario cuando se crea un objeto VolumeReplicationRelationship.