Halaman ini menjelaskan cara menyiapkan dan melakukan replikasi asinkron volume penyimpanan blok yang terisolasi dari internet Google Distributed Cloud (GDC).
Replikasi asinkron digunakan untuk mereplikasi data dari satu zona GDC ke zona lainnya. Data yang direplikasi dapat digunakan untuk failover jika data zona sumber menjadi tidak tersedia. Perhatikan bahwa setelah failover dibuat, volume asli tidak dapat direplikasi ke volume tujuan yang sama. Sebagai gantinya, hubungan replikasi baru harus dibuat.
Sebelum memulai
Untuk mengaktifkan replikasi blok asinkron antara dua zona, Operator Infrastruktur (IO) Anda harus terlebih dahulu membuat infrastruktur penyimpanan yang diperlukan dengan melakukan peering pada cluster penyimpanan yang relevan dari setiap zona. Selanjutnya, mereka perlu melakukan peering pada virtual machine penyimpanan yang terkait dengan organisasi tempat penyimpanan blok disediakan.
Setelah itu, pastikan Anda memiliki peran app-volume-replication-admin-global
untuk mengelola resource VolumeReplicationRelationship. Jika API global tidak tersedia, peran volume-replication-admin
dapat digunakan untuk mengubah resource VolumeReplicationRelationshipReplica zonal secara langsung.
Menyiapkan replikasi
VolumeReplicationRelationship Custom Resource (CR) melayani API replikasi blok asinkron. CR ini ada di API pengelolaan global. Untuk mengaktifkan replikasi untuk perangkat blok tertentu, CR VolumeReplicationRelationship perlu dibuat di global management API:
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
Contoh ini mengasumsikan bahwa project bernama my-project
dibuat di organisasi bernama my-org
dan PVC bernama my-block-pvc
telah disediakan. clusterRef
adalah nama cluster tempat PVC berada.
Kolom source
dan destination
spesifikasi menunjukkan tempat data direplikasi dari dan ke. Dalam contoh ini, data direplikasi dari xx-xxxx-zone1
ke xx-xxxx-zone2
.
Periksa status hubungan replikasi dengan mengambil CR VolumeReplicationRelationship
dari API global. Lihat contoh berikut. Perhatikan bahwa output telah dipotong untuk menyederhanakan:
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
Buat failover
Jika zona sumber tidak tersedia karena alasan apa pun, VolumeFailover
CR dapat dibuat di bidang pengelolaan organisasi pada zona tujuan. Untuk organisasi v2, ini akan menjadi server API pengelolaan. Untuk organisasi v1, ini adalah cluster admin organisasi. Misalnya, jika VolumeReplicationRelationship
dibuat yang menentukan xx-xxxx-zone2
sebagai zona tujuan dan PVC ada di organisasi my-org
, maka CR VolumeFailover
akan dibuat di bidang pengelolaan my-org
di xx-xxxx-zone2
. Hal ini akan menghentikan hubungan replikasi antara kedua zona, dan memungkinkan PVC di zona tujuan dipasang oleh workload:
apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
name: my-pvc-failover
namespace: my-project
spec:
volumeReplicationRelationshipRef: my-pvc-repl
Setelah itu, failover yang berhasil akan tercermin dalam status CR:
apiVersion: storage.gdc.goog/v1
kind: VolumeFailover
metadata:
name: my-pvc-failover
namespace: my-project
spec:
volumeReplicationRelationshipRef: my-pvc-repl
status:
state: Completed
Setelah failover dibuat, my-pvc-repl
VolumeReplicationRelationship
akan bertransisi ke status Broken Off
. PVC di xx-xxxx-zone2
kini dapat di-mount.
Pada tahap ini, VolumeReplicationRelationship
akan terlihat mirip dengan contoh berikut. Sekali lagi, output ini telah dipotong agar lebih sederhana:
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
Sekarang, VolumeReplicationRelationship dapat dihapus dengan aman karena ini adalah satu-satunya tindakan yang tersisa yang dapat dilakukan pada CR ini.
Mengubah ukuran volume
Jika volume sumber diubah ukurannya kapan saja, volume yang sesuai di zona tujuan, yang dibuat atas nama pengguna saat VolumeReplicationRelationship dibuat, juga harus diubah ukurannya agar sesuai.
Mereplikasi disk virtual machine
VolumeReplicationRelationship juga melayani API replikasi disk virtual machine (disk VM) asinkron. Disk sumber yang direplikasi disebut disk utama. Disk tujuan yang direplikasi disebut disk sekunder. Memulai replikasi asinkron pada disk utama akan otomatis membuat disk sekunder.
Meminta izin dan akses
Untuk mereplikasi disk VM, Anda harus memiliki peran Project
VirtualMachine Admin. Ikuti langkah-langkah untuk
memverifikasi
bahwa Anda memiliki peran Project VirtualMachine Admin (project-vm-admin
) di namespace
project tempat disk VM berada.
Untuk operasi VM menggunakan gdcloud CLI, minta Admin IAM Project Anda untuk memberi Anda peran Project VirtualMachine Admin dan peran Project Viewer (project-viewer
).
Mulai replikasi asinkron
Mulai replikasi asinkron pada disk VM menggunakan gdcloud atau kubectl
.
gdcloud
gdcloud compute disks start-async-replication PRIMARY_DISK_NAME \
--project PROJECT --zone PRIMARY_ZONE \
--secondary-disk SECONDARY_DISK_NAME --secondary-zone SECONDARY_ZONE
Ganti kode berikut:
Variabel | Definisi |
---|---|
PRIMARY_DISK_NAME |
Nama disk sumber yang direplikasi. |
PROJECT |
Project GDC dari disk utama. |
PRIMARY_ZONE |
Zona tempat disk utama berada. |
SECONDARY_DISK_NAME |
Nama disk tujuan yang akan direplikasi. |
SECONDARY_ZONE |
Zona tempat disk sekunder harus berada. |
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
Ganti kode berikut:
Variabel | Definisi |
---|---|
GLOBAL_MANAGEMENT_API |
File kubeconfig untuk server API pengelolaan global. |
VRR_NAME |
Nama hubungan replikasi volume. Nama yang sama harus digunakan saat menghentikan replikasi asinkron. |
PROJECT |
Project GDC dari disk utama. |
PRIMARY_DISK_NAME |
Nama disk sumber yang direplikasi. |
PRIMARY_ZONE |
Zona tempat disk utama berada. |
SECONDARY_DISK_NAME |
Nama disk tujuan yang akan direplikasi. |
SECONDARY_ZONE |
Zona tempat disk sekunder harus berada. |
Mencantumkan hubungan replikasi asinkron
Mencantumkan hubungan replikasi asinkron dalam project menggunakan kubectl
.
kubectl --kubeconfig GLOBAL_MANAGEMENT_API get volumereplicationrelationships -n my-project
Ganti kode berikut:
- PROJECT: Project GDC disk utama.
- GLOBAL_MANAGEMENT_API: File kubeconfig untuk server API pengelolaan global.
Outputnya akan terlihat seperti ini:
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
Menghentikan replikasi asinkron
Hentikan replikasi asinkron pada disk VM utama menggunakan gdcloud atau kubectl
.
gdcloud
gdcloud compute disks stop-async-replication PRIMARY_DISK_NAME \
--project PROJECT --zone PRIMARY_ZONE
Ganti kode berikut:
Variabel | Definisi |
---|---|
PRIMARY_DISK_NAME |
Nama disk sumber yang direplikasi. |
PROJECT |
Project GDC dari disk utama. |
PRIMARY_ZONE |
Zona tempat disk utama berada. |
API
Temukan hubungan replikasi volume yang sesuai dengan disk VM utama.
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'
Hapus setiap hubungan replikasi volume yang tercantum di langkah sebelumnya. Ganti VRR_NAMES dengan nama hubungan replikasi volume.
kubectl --kubeconfig GLOBAL_MANAGEMENT_API delete volumereplicationrelationships \ -n PROJECT VRR_NAMES
Ganti kode berikut:
Variabel Definisi GLOBAL_MANAGEMENT_API
File kubeconfig untuk server API pengelolaan global. PROJECT
Project GDC dari disk utama. PRIMARY_DISK_NAME
Nama disk sumber yang direplikasi. PRIMARY_ZONE
Zona tempat disk utama berada.
Jika zona sumber tidak tersedia karena alasan apa pun, buat failover volume untuk menghentikan replikasi.
Melampirkan disk yang direplikasi ke VM
Saat replikasi diaktifkan, disk sekunder tidak dapat dipasang ke VM. Setelah replikasi dihentikan, Anda dapat melampirkan disk sekunder ke VM yang baru dibuat atau ke VM yang ada.