Utilizzare Trident Protect per implementare failover e failback per le macchine virtuali nella virtualizzazione OpenShift
Panoramica
In questa sezione vengono forniti i dettagli per l'implementazione del failover e del failback delle macchine virtuali nella virtualizzazione OpenShift utilizzando Trident Protect. Le procedure sono le stesse indipendentemente dal fatto che le VM siano cluster OpenShift on-premise o su cluster ROSA. Questa sezione mostra le procedure per la creazione di un archivio di oggetti ONTAP S3 da utilizzare come appvault per Trident Protect e la creazione di una pianificazione per il mirror dell'app. Successivamente, viene illustrato come creare una relazione mirror dell'applicazione. Infine, viene illustrato come modificare lo stato della relazione mirror dell'applicazione per eseguire il failover e il failback.
Prerequisiti
-
Trident deve essere installato. È necessario creare classi di backend e storage prima di installare OpenShift Virtualization nel cluster utilizzando l'operatore OpenShift Virtualization.
-
È necessario installare Trident Protect per implementare le operazioni di failover e failback per le macchine virtuali OpenShift. Fare riferimento alle istruzioni riportate di seguito "installare Trident protect"
Una VM deve essere disponibile in OpenShift Virtualization. Per informazioni dettagliate sull'implementazione di una nuova macchina virtuale o sulla migrazione di una macchina virtuale esistente in OpenShift Virtualization, consultare la relativa sezione nella documentazione.
Creare l'App Vault usando ONTAP S3
In questa sezione viene illustrato come configurare un vault delle applicazioni in Trident Protect utilizzando lo storage a oggetti ONTAP S3.
Utilizzare i comandi oc e i file yaml mostrati di seguito per creare una risorsa personalizzata di tipo secret e appvault per ONTAP S3. Accertarsi di crearle nello spazio dei nomi Trident Protect.
oc create -f app-vault-secret.yaml -n trident-protect
oc create -f app-vault.yaml -n trident-protect
apiVersion: v1
# You can provide the keys either as stringData or base 64 encoded data
stringData:
accessKeyID: "<access key id as obtained from ONTAP>"
secretAccessKey: "<secret access key as obtained from ONTAP>"
#data:
#accessKeyID: <base 64 encoded value of access key>
#secretAccessKey: <base 64 encoded value of secret access key>
kind: Secret
metadata:
name: appvault-secret
namespace: trident-protect
type: Opaque
apiVersion: protect.trident.netapp.io/v1
kind: AppVault
metadata:
name: ontap-s3-appvault
namespace: trident-protect
spec:
providerConfig:
azure:
accountName: ""
bucketName: ""
endpoint: ""
gcp:
bucketName: ""
projectID: ""
s3:
bucketName: trident-protect
endpoint: <data lif to use to access S3>
secure: "false"
skipCertValidation: "true"
providerCredentials:
accessKeyID:
valueFromSecret:
key: accessKeyID
name: appvault-secret
secretAccessKey:
valueFromSecret:
key: secretAccessKey
name: appvault-secret
providerType: OntapS3
Assicurarsi che il vault di ONTAP S3 sia stato creato e che sia nello stato disponibile
Crea un'applicazione Trident Protect per la macchina virtuale
Creare una risorsa personalizzata dell'applicazione nello spazio dei nomi in cui si trova la VM.
tridentctl-protect create app source-vm -n source-ns --namespaces source-ns
Crea un'applicazione Trident Protect per la macchina virtuale di disaster recovery in un nuovo namespace
oc create ns dr-ns
tridentctl-protect create app dr-vm -n dr-ns --namespaces dr-ns
Creare una pianificazione AppMirror nello spazio dei nomi di origine
Creare una pianificazione per AppMirror utilizzando yaml come illustrato. In questo modo, verranno create snapshot utilizzando la pianificazione (ogni 5 minuti) e verranno conservate 2 snapshot
oc create -f appmirror-schedule.yaml -n source-ns
apiVersion: protect.trident.netapp.io/v1
kind: Schedule
metadata:
name: appmirror-sched1
spec:
appVaultRef: ontap-s3-appvault
applicationRef: source-vm
backupRetention: "0"
enabled: true
granularity: Custom
recurrenceRule: |-
DTSTART:20240901T000200Z
RRULE:FREQ=MINUTELY;INTERVAL=5
snapshotRetention: "2"
Creare una relazione appMirror nello spazio dei nomi DR
Creare una relazione Appmirror nello spazio dei nomi Disaster Recovery. Impostare il desiredState su stabilito.
apiVersion: protect.trident.netapp.io/v1
kind: AppMirrorRelationship
metadata:
name: amr1
spec:
desiredState: Established
destinationAppVaultRef: ontap-s3-appvault
destinationApplicationRef: dr-vm
namespaceMapping:
- destination: dr-ns
source: source-ns
recurrenceRule: |-
DTSTART:20240901T000200Z
RRULE:FREQ=MINUTELY;INTERVAL=5
sourceAppVaultRef: ontap-s3-appvault
sourceApplicationName: source-vm
sourceApplicationUID: "<application UID of the source VM>"
storageClassName: "ontap-nas"
È possibile ottenere l'UID dell'applicazione della VM di origine dall'output json dell'applicazione di origine, come mostrato di seguito |
Quando viene stabilita la relazione AppMirror, lo snapshot più recente viene trasferito nello spazio dei nomi di destinazione. Il PVC viene creato per la macchina virtuale nello spazio dei nomi dr, tuttavia il pod VM non viene ancora creato nello spazio dei nomi dr.
Promuovere la relazione con il failover
Modificare lo stato desiderato della relazione in "promosso" per creare la VM nello spazio dei nomi DR. La VM è ancora in esecuzione nello spazio dei nomi di origine.
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Promoted"}}'
Stabilire nuovamente la relazione con il failback
Modificare lo stato desiderato della relazione in "stabilito". La VM viene eliminata nello spazio dei nomi DR. Il pvc esiste ancora nello spazio dei nomi DR. La VM è ancora in esecuzione nello spazio dei nomi di origine. Viene stabilita la relazione originale tra lo spazio dei nomi di origine e i n DR. .
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Established"}}'