Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

SnapMirrorによるボリュームのレプリケート

共同作成者

Astra Control Provisionerを使用すると、ディザスタリカバリ用にデータをレプリケートするために、一方のクラスタのソースボリュームとピアクラスタのデスティネーションボリュームの間にミラー関係を作成できます。名前空間カスタムリソース定義(CRD)を使用して、次の操作を実行できます。

  • ボリューム(PVC)間のミラー関係を作成する

  • ボリューム間のミラー関係の削除

  • ミラー関係を解除する

  • 災害時(フェイルオーバー)にセカンダリボリュームを昇格する

  • クラスタからクラスタへのアプリケーションのロスレス移行の実行(計画的なフェイルオーバーまたは移行時)

レプリケーションの前提条件

作業を開始する前に、次の前提条件を満たしていることを確認してください。

ONTAP クラスタ
  • * Astra Control Provisioner *:Astra Control Provisionerバージョン23.10以降 "Astra Tridentのサポート" ONTAPをバックエンドとして利用するソースとデスティネーションの両方のKubernetesクラスタに存在する必要があります。

  • ライセンス:Data Protection Bundleを使用するONTAP SnapMirror非同期ライセンスが、ソースとデスティネーションの両方のONTAPクラスタで有効になっている必要があります。を参照してください "ONTAP のSnapMirrorライセンスの概要" を参照してください。

ピアリング
  • *クラスタとSVM *:ONTAPストレージバックエンドにピア関係が設定されている必要があります。を参照してください "クラスタと SVM のピアリングの概要" を参照してください。

    重要 2つのONTAPクラスタ間のレプリケーション関係で使用されるSVM名が一意であることを確認してください。
  • * Astra Control ProvisionerとSVM *:ピア関係にあるリモートSVMがデスティネーションクラスタのAstra Control Provisionerで使用可能である必要があります。

サポートされるドライバ
  • ボリュームレプリケーションは、ONTAP-NASドライバとONTAP-SANドライバでサポートされます。

ミラーPVCの作成

以下の手順に従って、CRDの例を使用してプライマリボリュームとセカンダリボリュームの間にミラー関係を作成します。

手順
  1. プライマリKubernetesクラスタで次の手順を実行します。

    1. を使用してStorageClassオブジェクトを作成します。 trident.netapp.io/replication: true パラメータ

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: csi-nas
      provisioner: csi.trident.netapp.io
      parameters:
        backendType: "ontap-nas"
        fsType: "nfs"
        trident.netapp.io/replication: "true"
    2. 以前に作成したStorageClassを使用してPVCを作成します。

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: csi-nas
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 1Gi
        storageClassName: csi-nas
    3. ローカル情報を含むMirrorRelationship CRを作成します。

      kind: TridentMirrorRelationship
      apiVersion: trident.netapp.io/v1
      metadata:
        name: csi-nas
      spec:
        state: promoted
        volumeMappings:
        - localPVCName: csi-nas

      Astra Control Provisionerは、ボリュームの内部情報とボリュームの現在のデータ保護(DP)の状態をフェッチし、MirrorRelationshipのstatusフィールドに値を入力します。

    4. TridentMirrorRelationship CRを取得して、PVCの内部名とSVMを取得します。

      kubectl get tmr csi-nas
      kind: TridentMirrorRelationship
      apiVersion: trident.netapp.io/v1
      metadata:
        name: csi-nas
        generation: 1
      spec:
        state: promoted
        volumeMappings:
        - localPVCName: csi-nas
      status:
        conditions:
        - state: promoted
          localVolumeHandle: "datavserver:trident_pvc_3bedd23c_46a8_4384_b12b_3c38b313c1e1"
          localPVCName: csi-nas
          observedGeneration: 1
  2. セカンダリKubernetesクラスタで次の手順を実行します。

    1. trident.netapp.io/replication: trueパラメータを使用してStorageClassを作成します。

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: csi-nas
      provisioner: csi.trident.netapp.io
      parameters:
        trident.netapp.io/replication: true
    2. デスティネーションとソースの情報を含むMirrorRelationship CRを作成します。

      kind: TridentMirrorRelationship
      apiVersion: trident.netapp.io/v1
      metadata:
        name: csi-nas
      spec:
        state: established
        volumeMappings:
        - localPVCName: csi-nas
          remoteVolumeHandle: "datavserver:trident_pvc_3bedd23c_46a8_4384_b12b_3c38b313c1e1"

      Astra Control Provisionerは、設定された関係ポリシー名(ONTAPの場合はデフォルト)を使用してSnapMirror関係を作成し、初期化します。

    3. セカンダリ(SnapMirrorデスティネーション)として機能するStorageClassを作成してPVCを作成します。

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: csi-nas
        annotations:
          trident.netapp.io/mirrorRelationship: csi-nas
      spec:
        accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: csi-nas

      Astra Control ProvisionerはTridentMirrorRelationship CRDを確認し、関係が存在しない場合はボリュームの作成に失敗します。関係が存在する場合は、Astra Control Provisionerによって、新しいFlexVolがMirrorRelationshipで定義されているリモートSVMとピア関係にあるSVMに配置されます。

ボリュームレプリケーションの状態

Trident Mirror Relationship(TMR)は、PVC間のレプリケーション関係の一端を表すCRDです。デスティネーションTMRの状態はで、Astra Control Provisionerに必要な状態が示されます。宛先TMRの状態は次のとおりです。

  • 確立済み:ローカルPVCはミラー関係のデスティネーションボリュームであり、これは新しい関係です。

  • 昇格:ローカルPVCはReadWriteでマウント可能であり、ミラー関係は現在有効ではありません。

  • * reestablished *:ローカルPVCはミラー関係のデスティネーションボリュームであり、以前はそのミラー関係に含まれていました。

    • デスティネーションボリュームはデスティネーションボリュームの内容を上書きするため、ソースボリュームとの関係が確立されたことがある場合は、reestablished状態を使用する必要があります。

    • ボリュームが以前にソースとの関係になかった場合、再確立状態は失敗します。

計画外フェールオーバー時にセカンダリPVCを昇格する

セカンダリKubernetesクラスタで次の手順を実行します。

  • TridentMirrorRelationshipの_spec.state_フィールド を次のように更新します。 promoted

計画的フェイルオーバー中にセカンダリPVCを昇格

計画的フェイルオーバー(移行)中に、次の手順を実行してセカンダリPVCをプロモートします。

手順
  1. プライマリKubernetesクラスタでPVCのSnapshotを作成し、Snapshotが作成されるまで待ちます。

  2. プライマリKubernetesクラスタで、SnapshotInfo CRを作成して内部の詳細を取得します。

    kind: SnapshotInfo
    apiVersion: trident.netapp.io/v1
    metadata:
      name: csi-nas
    spec:
      snapshot-name: csi-nas-snapshot
  3. セカンダリKubernetesクラスタで、_TridentMirrorRelationship_CRの_spec.state_フィールド を_promoted_に更新し、_spec.promotedSnapshotHandle_をSnapshotのinternalNameにします。

  4. セカンダリKubernetesクラスタで、TridentMirrorRelationshipのステータス(status.stateフィールド)がPromotedになっていることを確認します。

フェイルオーバー後にミラー関係をリストアする

ミラー関係をリストアする前に、新しいプライマリとして作成する側を選択します。

手順
  1. セカンダリKubernetesクラスタで、TridentMirrorRelationshipの_spec.remoteVolumeHandle_fieldの値が更新されていることを確認します。

  2. セカンダリKubernetesクラスタで、TridentMirrorRelationshipの_spec.mirror_fieldを reestablished

その他の処理

Astra Control Provisionerでは、プライマリボリュームとセカンダリボリュームに対する次の処理がサポートされます。

新しいセカンダリPVCへのプライマリPVCの複製

プライマリPVCとセカンダリPVCがすでに存在していることを確認します。

手順
  1. PersistentVolumeClaim CRDとTridentMirrorRelationship CRDを、確立されたセカンダリ(デスティネーション)クラスタから削除します。

  2. プライマリ(ソース)クラスタからTridentMirrorRelationship CRDを削除します。

  3. 確立する新しいセカンダリ(デスティネーション)PVC用に、プライマリ(ソース)クラスタに新しいTridentMirrorRelationship CRDを作成します。

ミラー、プライマリ、またはセカンダリPVCのサイズ変更

PVCは通常どおりサイズ変更できます。データ量が現在のサイズを超えると、ONTAPは自動的に宛先フレフxolを拡張します。

PVCからのレプリケーションの削除

レプリケーションを削除するには、現在のセカンダリボリュームで次のいずれかの操作を実行します。

  • セカンダリPVCのMirrorRelationshipを削除します。これにより、レプリケーション関係が解除されます。

  • または、spec.stateフィールドを_promoted_に更新します。

(以前にミラーリングされていた)PVCの削除

Astra Control Provisionerは、ボリュームの削除を試行する前に、レプリケートされたPVCをチェックし、レプリケーション関係を解放します。

TMRの削除

ミラー関係の一方のTMRを削除すると、Astra Control Provisionerが削除を完了する前に、残りのTMRが_promoted_stateに移行します。削除対象として選択したTMRがすでに_promoted_stateである場合は、既存のミラー関係は存在せず、TMRが削除され、Astra Control ProvisionerがローカルPVCを_ReadWrite_に昇格します。この削除により、ONTAP内のローカルボリュームのSnapMirrorメタデータが解放されます。このボリュームを今後ミラー関係で使用する場合は、新しいミラー関係を作成するときに、レプリケーション状態が_established_volumeである新しいTMRを使用する必要があります。

ONTAPがオンラインのときにミラー関係を更新

ミラー関係は、確立後にいつでも更新できます。を使用できます state: promoted または state: reestablished 関係を更新するフィールド。 デスティネーションボリュームを通常のReadWriteボリュームに昇格する場合は、_promotedSnapshotHandle_を使用して、現在のボリュームのリストア先となる特定のSnapshotを指定できます。

ONTAPがオフラインの場合にミラー関係を更新

CRDを使用すると、Astra ControlからONTAPクラスタに直接接続せずにSnapMirror更新を実行できます。次のTridentActionMirrorUpdateの形式例を参照してください。

apiVersion: trident.netapp.io/v1
kind: TridentActionMirrorUpdate
metadata:
  name: update-mirror-b
spec:
  snapshotHandle: "pvc-1234/snapshot-1234"
  tridentMirrorRelationshipName: mirror-b

status.state TridentActionMirrorUpdate CRDの状態を反映します。SucceededIn Progress、_Failed_のいずれかの値を指定できます。