Replica dei volumi con SnapMirror
Con Astra Control Provivisioner, puoi creare relazioni di mirroring tra un volume di origine su un cluster e il volume di destinazione sul cluster in peering per replicare i dati per il disaster recovery. È possibile utilizzare una definizione di risorsa personalizzata (CRD) con nome per eseguire le seguenti operazioni:
-
Creare relazioni di mirroring tra volumi (PVC)
-
Rimuovere le relazioni di mirroring tra volumi
-
Interrompere le relazioni di mirroring
-
Promozione del volume secondario in condizioni di disastro (failover)
-
Eseguire la transizione senza perdita di dati delle applicazioni da cluster a cluster (durante failover o migrazioni pianificati)
Prerequisiti per la replica
Prima di iniziare, verificare che siano soddisfatti i seguenti prerequisiti:
-
Astra Control Provisioner: Astra Control Provisioner versione 22,10 o successiva deve esistere sia sui cluster Kubernetes di origine che di destinazione che utilizzano ONTAP come backend.
-
Licenze: Le licenze asincrone di ONTAP SnapMirror che utilizzano il bundle di protezione dati devono essere attivate sia sul cluster ONTAP di origine che su quello di destinazione. Fare riferimento a. "Panoramica sulle licenze SnapMirror in ONTAP" per ulteriori informazioni.
-
Cluster e SVM: I backend dello storage ONTAP devono essere peering. Fare riferimento a. "Panoramica del peering di cluster e SVM" per ulteriori informazioni.
Assicurati che i nomi delle SVM utilizzati nella relazione di replica tra due cluster ONTAP siano univoci. -
Astra Control Provisioner e SVM: Le SVM remote in cui è stato eseguito il peering devono essere disponibili per Astra Control Provisioner nel cluster di destinazione.
-
La replica di un volume è supportata per i driver ontap-nas e ontap-san.
Creare un PVC specchiato
Seguire questi passaggi e utilizzare gli esempi CRD per creare una relazione di mirroring tra volumi primari e secondari.
-
Eseguire i seguenti passaggi sul cluster Kubernetes primario:
-
Creare un oggetto StorageClass con
trident.netapp.io/replication: true
parametro.EsempioapiVersion: 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"
-
Crea un PVC con StorageClass creato in precedenza.
Esempiokind: PersistentVolumeClaim apiVersion: v1 metadata: name: csi-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: csi-nas
-
Creare una CR MirrorRelationship con informazioni locali.
Esempiokind: TridentMirrorRelationship apiVersion: trident.netapp.io/v1 metadata: name: csi-nas spec: state: promoted volumeMappings: - localPVCName: csi-nas
Astra Control Provivisioner recupera le informazioni interne del volume e dello stato attuale di data Protection (DP) del volume, quindi popola il campo di stato di MirrorRelationship.
-
Procurarsi il TridentMirrorRelationship CR per ottenere il nome interno e la SVM del PVC.
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
-
-
Eseguire i seguenti passaggi sul cluster Kubernetes secondario:
-
Creare una classe StorageClass con il parametro trident.netapp.io/replication: true.
EsempioapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-nas provisioner: csi.trident.netapp.io parameters: trident.netapp.io/replication: true
-
Creare una CR MirrorRelationship con informazioni sulla destinazione e sulla sorgente.
Esempiokind: 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 creerà una relazione SnapMirror con il nome della policy di relazione configurata (o default per ONTAP) e la inizializzerà.
-
Crea un PVC con StorageClass creato in precedenza per agire come secondario (destinazione SnapMirror).
Esempiokind: 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 controllerà la CRD TridentMirrorRelationship e non creerà il volume se la relazione non esiste. Se esiste una relazione, Astra Control Provisioner garantirà che il nuovo volume FlexVol venga inserito in una SVM a cui viene inviata la SVM remota definita in MirrorRelationship.
-
Stati di replica dei volumi
Una relazione mirror Trident (TMR) è un CRD che rappresenta un'estremità di una relazione di replica tra PVC. Il TMR di destinazione ha uno stato, che indica ad Astra Control Provisioner lo stato desiderato. Il TMR di destinazione ha i seguenti stati:
-
Stabilito: Il PVC locale è il volume di destinazione di una relazione speculare, e questa è una nuova relazione.
-
Promosso: Il PVC locale è ReadWrite e montabile, senza alcuna relazione speculare attualmente in vigore.
-
Ristabilito: Il PVC locale è il volume di destinazione di una relazione speculare ed era anche precedentemente in quella relazione speculare.
-
Lo stato ristabilito deve essere utilizzato se il volume di destinazione era in una relazione con il volume di origine perché sovrascrive il contenuto del volume di destinazione.
-
Se il volume non era precedentemente in relazione con l'origine, lo stato ristabilito non riuscirà.
-
Promozione del PVC secondario durante un failover non pianificato
Eseguire il seguente passaggio sul cluster Kubernetes secondario:
-
Aggiornare il campo spec.state di TridentMirrorRelationship su
promoted
.
Promozione del PVC secondario durante un failover pianificato
Durante un failover pianificato (migrazione), eseguire le seguenti operazioni per promuovere il PVC secondario:
-
Sul cluster Kubernetes primario, creare una snapshot del PVC e attendere la creazione dello snapshot.
-
Sul cluster Kubernetes primario, creare SnapshotInfo CR per ottenere dettagli interni.
Esempiokind: SnapshotInfo apiVersion: trident.netapp.io/v1 metadata: name: csi-nas spec: snapshot-name: csi-nas-snapshot
-
Nel cluster Kubernetes secondario, aggiornare il campo spec.state del TridentMirrorRelationship CR a Promoted e spec.promotedSnapshotHandle come nome interno dello snapshot.
-
Sul cluster Kubernetes secondario, confermare lo stato (campo status.state) di TridentMirrorRelationship a promosso.
Ripristinare una relazione di mirroring dopo un failover
Prima di ripristinare una relazione di specchiatura, scegliere il lato che si desidera creare come nuovo primario.
-
Nel cluster Kubernetes secondario, verificare che i valori per il campo spec.remoteVolumeHandle in TridentMirrorRelationship siano aggiornati.
-
Sul cluster Kubernetes secondario, aggiornare il campo spec.mirror di TridentMirrorRelationship a.
reestablished
.
Operazioni supplementari
Astra Control Provivisioner supporta le seguenti operazioni sui volumi primario e secondario:
Replicare il PVC primario in un nuovo PVC secondario
Assicurarsi di disporre già di un PVC primario e di un PVC secondario.
-
Eliminare i CRD PersistentVolumeClaim e TridentMirrorRelationship dal cluster (destinazione) secondario stabilito.
-
Eliminare il CRD TridentMirrorRelationship dal cluster primario (origine).
-
Creare un nuovo CRD TridentMirrorRelationship nel cluster primario (di origine) per il nuovo PVC secondario (di destinazione) che si desidera stabilire.
Ridimensionare un PVC specchiato, primario o secondario
Il PVC può essere ridimensionato normalmente, ONTAP espanderà automaticamente qualsiasi flevxols di destinazione se la quantità di dati supera le dimensioni correnti.
Rimuovere la replica da un PVC
Per rimuovere la replica, eseguire una delle seguenti operazioni sul volume secondario corrente:
-
Eliminare MirrorRelationship sul PVC secondario. Questo interrompe la relazione di replica.
-
In alternativa, aggiornare il campo spec.state a Promoted.
Eliminazione di un PVC (precedentemente specchiato)
Astra Control Provivisioner verifica la presenza di PVC replicati e rilascia la relazione di replica prima di tentare di eliminare il volume.
Eliminare una TMR
L'eliminazione di una TMR su un lato di una relazione specchiata fa sì che la TMR rimanente passi allo stato promosso prima che Astra Control Provivisioner completi l'eliminazione. Se il TMR selezionato per l'eliminazione è già nello stato promosso, non esiste alcuna relazione di mirror esistente e il TMR verrà rimosso e Astra Control Provisioner promuoverà il PVC locale in ReadWrite. Questa eliminazione rilascia i metadati SnapMirror per il volume locale in ONTAP. Se in futuro questo volume viene utilizzato in una relazione di mirroring, deve utilizzare un nuovo TMR con uno stato di replica del volume stabilito quando si crea la nuova relazione di mirroring.
Aggiorna relazioni mirror quando ONTAP è online
Le relazioni speculari possono essere aggiornate in qualsiasi momento dopo che sono state stabilite. È possibile utilizzare state: promoted
oppure state: reestablished
per aggiornare le relazioni.
Quando si trasferisce un volume di destinazione a un volume ReadWrite regolare, è possibile utilizzare PromotedSnapshotHandle per specificare uno snapshot specifico su cui ripristinare il volume corrente.
Aggiorna relazioni di mirroring quando ONTAP non è in linea
Puoi utilizzare un CRD per eseguire un update di SnapMirror senza che Astra Control disponga di connettività diretta al cluster ONTAP. Fare riferimento al seguente formato di esempio di TridentActionMirrorUpdate:
apiVersion: trident.netapp.io/v1 kind: TridentActionMirrorUpdate metadata: name: update-mirror-b spec: snapshotHandle: "pvc-1234/snapshot-1234" tridentMirrorRelationshipName: mirror-b
status.state
Riflette lo stato del CRD TridentActionMirrorUpdate. Può assumere un valore da riuscito, in corso o non riuscito.