이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭 블록 스토리지 볼륨의 비동기 복제를 설정하고 실행하는 방법을 설명합니다.
비동기 복제는 한 GDC 영역에서 다른 영역으로 데이터를 복제하는 데 사용됩니다. 소스 영역 데이터를 사용할 수 없게 되면 복제된 데이터를 장애 조치에 사용할 수 있습니다. 장애 조치가 생성되면 원래 볼륨을 동일한 대상 볼륨에 복제할 수 없습니다. 대신 새 복제 관계를 만들어야 합니다.
시작하기 전에
두 영역 간에 비동기 블록 복제를 사용 설정하려면 인프라 운영자 (IO)가 먼저 각 영역의 관련 스토리지 클러스터를 피어링하여 필요한 스토리지 인프라를 설정해야 합니다. 그런 다음 블록 스토리지가 프로비저닝된 조직과 연결된 스토리지 가상 머신을 피어링해야 합니다.
그런 다음 VolumeReplicationRelationship 리소스를 관리할 수 있는 app-volume-replication-admin-global
역할이 있는지 확인합니다. 전역 API를 사용할 수 없는 경우 volume-replication-admin
역할을 사용하여 영역 VolumeReplicationRelationshipReplica 리소스를 직접 수정할 수 있습니다.
복제 설정
VolumeReplicationRelationship 커스텀 리소스 (CR)는 비동기 블록 복제 API를 제공합니다. 이 CR은 전역 관리 API에 있습니다. 특정 블록 기기의 복제를 사용 설정하려면 전역 관리 API에서 VolumeReplicationRelationship CR을 만들어야 합니다.
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
이 예시에서는 my-org
이라는 조직에 my-project
이라는 프로젝트가 생성되어 있고 my-block-pvc
라는 PVC가 이미 프로비저닝되었다고 가정합니다. clusterRef
은 PVC가 있는 클러스터의 이름입니다.
사양의 source
및 destination
필드는 데이터가 각각 에서 및 로 복제되는 위치를 나타냅니다. 이 예에서는 데이터가 xx-xxxx-zone1
에서 xx-xxxx-zone2
로 복제됩니다.
전역 API에서 VolumeReplicationRelationship
CR을 가져와 복제 관계의 상태를 확인합니다. 다음 예시를 참고하세요. 출력은 간소화를 위해 잘렸습니다.
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
장애 조치 만들기
어떤 이유로든 소스 영역을 사용할 수 없는 경우 대상 영역의 조직 관리 플레인에서 VolumeFailover
CR을 만들 수 있습니다. v2 조직의 경우 관리 API 서버입니다. v1 조직의 경우 조직 관리자 클러스터입니다. 예를 들어 대상 영역으로 xx-xxxx-zone2
을 지정하는 VolumeReplicationRelationship
가 생성되고 PVC가 my-org
조직에 있는 경우 VolumeFailover
CR은 xx-xxxx-zone2
의 my-org
관리 플레인에 생성됩니다. 이렇게 하면 두 영역 간의 복제 관계가 중단되고 대상 영역의 PVC가 워크로드에 의해 마운트될 수 있습니다.
apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
name: my-pvc-failover
namespace: my-project
spec:
volumeReplicationRelationshipRef: my-pvc-repl
그런 다음 성공적인 장애 조치가 CR 상태에 반영됩니다.
apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
name: my-pvc-failover
namespace: my-project
spec:
volumeReplicationRelationshipRef: my-pvc-repl
status:
state: Completed
장애 조치가 생성되면 my-pvc-repl
VolumeReplicationRelationship
이 Broken Off
상태로 전환됩니다. 이제 xx-xxxx-zone2
의 PVC를 마운트할 수 있습니다.
이 시점에서 VolumeReplicationRelationship
는 다음 예와 비슷하게 표시됩니다. 이번에도 이 출력은 간단한 설명을 위해 일부 내용만 표시되어 있습니다.
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
이제 이 CR에서 실행할 수 있는 유일한 작업이 VolumeReplicationRelationship이므로 이를 삭제해도 됩니다.
볼륨 크기 조절
언제든지 소스 볼륨의 크기가 조절되면 VolumeReplicatioRelationship이 생성될 때 사용자를 대신하여 생성되는 대상 영역의 해당 볼륨도 일치하도록 크기가 조절되어야 합니다.
가상 머신 디스크 복제
VolumeReplicationRelationship은 비동기 가상 머신 디스크 (VM 디스크) 복제 API도 서비스합니다. 복제되는 소스 디스크를 기본 디스크라고 합니다. 복제되는 대상 디스크를 보조 디스크라고 합니다. 기본 디스크에서 비동기 복제를 시작하면 보조 디스크가 자동으로 생성됩니다.
권한 및 액세스 요청
VM 디스크를 복제하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 단계를 따라 VM 디스크가 있는 프로젝트의 네임스페이스에 프로젝트 VirtualMachine 관리자 (project-vm-admin
) 역할이 있는지 확인합니다.
gdcloud CLI를 사용하는 VM 작업의 경우 프로젝트 IAM 관리자에게 프로젝트 VirtualMachine 관리자 역할과 프로젝트 뷰어 (project-viewer
) 역할을 모두 할당해 달라고 요청하세요.
비동기 복제 시작
gdcloud 또는 kubectl
를 사용하여 VM 디스크에서 비동기 복제를 시작합니다.
gdcloud
gdcloud compute disks start-async-replication PRIMARY_DISK_NAME \
--project PROJECT --zone PRIMARY_ZONE \
--secondary-disk SECONDARY_DISK_NAME --secondary-zone SECONDARY_ZONE
다음을 바꿉니다.
변수 | 정의 |
---|---|
PRIMARY_DISK_NAME |
복제되는 소스 디스크의 이름입니다. |
PROJECT |
기본 디스크의 GDC 프로젝트입니다. |
PRIMARY_ZONE |
기본 디스크가 있는 영역입니다. |
SECONDARY_DISK_NAME |
복제할 대상 디스크의 이름입니다. |
SECONDARY_ZONE |
보조 디스크가 있어야 하는 영역입니다. |
API
kubectl --kubeconfig GLOBAL_MANAGEMENT_API \
apply -f - <<EOF
apiVersion: storage.global.gdc.goog/v1
kind: VolumeReplicationRelationship
metadata:
name: VRR_NAME
namespace: PROJECT
spec:
source:
virtualMachineDisk:
virtualMachineDiskRef: PRIMARY_DISK_NAME
zoneRef: PRIMARY_ZONE
destination:
volumeOverrideName: SECONDARY_DISK_NAME
zoneRef: SECONDARY_ZONE
EOF
다음을 바꿉니다.
변수 | 정의 |
---|---|
GLOBAL_MANAGEMENT_API |
전역 관리 API 서버의 kubeconfig 파일입니다. |
VRR_NAME |
볼륨 복제 관계의 이름입니다. 비동기 복제를 중지할 때 동일한 이름을 사용해야 합니다. |
PROJECT |
기본 디스크의 GDC 프로젝트입니다. |
PRIMARY_DISK_NAME |
복제되는 소스 디스크의 이름입니다. |
PRIMARY_ZONE |
기본 디스크가 있는 영역입니다. |
SECONDARY_DISK_NAME |
복제할 대상 디스크의 이름입니다. |
SECONDARY_ZONE |
보조 디스크가 있어야 하는 영역입니다. |
비동기 복제 관계 나열
kubectl
를 사용하여 프로젝트의 비동기 복제 관계를 나열합니다.
kubectl --kubeconfig GLOBAL_MANAGEMENT_API get volumereplicationrelationships -n my-project
다음을 바꿉니다.
- PROJECT: 기본 디스크의 GDC 프로젝트입니다.
- GLOBAL_MANAGEMENT_API: 전역 관리 API 서버의 kubeconfig 파일입니다.
출력은 다음과 같습니다.
NAME AGE SOURCE ZONE SOURCE PVC SOURCE PVC CLUSTER SOURCE VM DISK DEST. ZONE DEST. PVC CLUSTER DEST. VOLUME OVERRIDE STATE
my-vrr 3m21s zone1 my-vm-boot-disk zone2 my-vm-boot-disk-replica
test-vrr 7s zone1 test-vm-boot-disk zone2
비동기 복제 중지
gdcloud 또는 kubectl
를 사용하여 기본 VM 디스크에서 비동기 복제를 중지합니다.
gdcloud
gdcloud compute disks stop-async-replication PRIMARY_DISK_NAME \
--project PROJECT --zone PRIMARY_ZONE
다음을 바꿉니다.
변수 | 정의 |
---|---|
PRIMARY_DISK_NAME |
복제되는 소스 디스크의 이름입니다. |
PROJECT |
기본 디스크의 GDC 프로젝트입니다. |
PRIMARY_ZONE |
기본 디스크가 있는 영역입니다. |
API
기본 VM 디스크에 해당하는 볼륨 복제 관계를 찾습니다.
kubectl --kubeconfig GLOBAL_MANAGEMENT_API get volumereplicationrelationships \ -n PROJECT -o json | \ jq -r '.items[] | select(.spec.source.virtualMachineDisk.virtualMachineDiskRef == "PRIMARY_DISK_NAME" and .spec.source.zoneRef == "PRIMARY_ZONE") | .metadata.name'
이전 단계에 나열된 각 볼륨 복제 관계를 삭제합니다. VRR_NAMES을 볼륨 복제 관계의 이름으로 바꿉니다.
kubectl --kubeconfig GLOBAL_MANAGEMENT_API delete volumereplicationrelationships \ -n PROJECT VRR_NAMES
다음을 바꿉니다.
변수 정의 GLOBAL_MANAGEMENT_API
전역 관리 API 서버의 kubeconfig 파일입니다. PROJECT
기본 디스크의 GDC 프로젝트입니다. PRIMARY_DISK_NAME
복제되는 소스 디스크의 이름입니다. PRIMARY_ZONE
기본 디스크가 있는 영역입니다.
어떤 이유로든 소스 영역을 사용할 수 없는 경우 볼륨 장애 조치 생성을 통해 복제를 중지하세요.
복제된 디스크를 VM에 연결
복제가 사용 설정된 동안에는 보조 디스크를 VM에 연결할 수 없습니다. 복제가 중지된 후 보조 디스크를 새로 만든 VM 또는 기존 VM에 연결할 수 있습니다.