このページでは、Google Distributed Cloud(GDC)のエアギャップ ブロック ストレージ ボリュームの非同期レプリケーションを設定して実行する方法について説明します。
非同期レプリケーションは、ある GDC ゾーンから別の GDC ゾーンにデータを複製するために使用されます。この複製されたデータは、ソースゾーンのデータが使用できない場合にフェイルオーバー シナリオで使用できます。フェイルオーバーを作成すると、元のボリュームを同じ宛先ボリュームに複製するように設定することはできません。代わりに、新しいレプリケーション関係を作成する必要があります。
始める前に
非同期ブロック レプリケーションを使用するには、まずインフラストラクチャ オペレーター(IO)が、レプリケーションが必要な 2 つのゾーン間でストレージ インフラストラクチャを設定する必要があります。具体的には、まず各ゾーンの関連するストレージ クラスタをピアリングする必要があります。次に、ブロック ストレージがプロビジョニングされている組織に関連付けられたストレージ仮想マシンをピアリングする必要があります。
次に、VolumeReplicationRelationship リソースを管理する volume-replication-admin-global
ロールがあることを確認します。グローバル API を使用できない場合は、app-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
管理プレーンに作成されます。これにより、2 つのゾーン間のレプリケーション関係が解除され、宛先ゾーンの 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 の作成時にユーザーに代わって作成された宛先ゾーン内の対応するボリュームのサイズも、一致するように変更する必要があります。