Verwenden Sie Trident Protect, um Failover und Failback für VMs in OpenShift Virtualization zu implementieren
Überblick
Dieser Abschnitt enthält Details zur Implementierung von Failover und Failback von VMs in OpenShift Virtualization mit Trident Protect. Die Verfahren sind gleich, unabhängig davon, ob es sich bei den VMs um lokale OpenShift-Cluster oder auf ROSA-Clustern handelt. In diesem Abschnitt werden die Verfahren zum Erstellen eines ONTAP s3-Objektspeichers beschrieben, der als Appvault für Trident Protect verwendet werden soll, und es wird ein Zeitplan für die App-Spiegelung erstellt. Danach zeigt es, wie man eine App-Spiegelbeziehung erstellt. Schließlich wird gezeigt, wie der Status der App-Spiegelungsbeziehung geändert wird, um Failover und Failback durchzuführen.
Voraussetzungen
-
Trident muss installiert sein. Back-End- und Storage-Klassen müssen erstellt werden, bevor OpenShift Virtualization mithilfe des OpenShift Virtualization Operators auf dem Cluster installiert wird.
-
Um Failover- und Failback-Vorgänge für die OpenShift-VMs zu implementieren, muss Trident Protect installiert sein. Beachten Sie die Anweisungen hier unter "Installieren Sie Trident Protect"
In OpenShift Virtualization muss eine VM verfügbar sein. Details zur Bereitstellung einer neuen VM oder zur Migration einer vorhandenen VM in OpenShift Virtualization finden Sie im entsprechenden Abschnitt in der Dokumentation.
Erstellen Sie App Vault mit ONTAP S3
In diesem Abschnitt wird das Einrichten eines App Vault in Trident Protect mit ONTAP S3 Objekt-Storage erläutert.
Verwenden Sie oc-Befehle und die unten gezeigten yaml-Dateien, um einen Secret und die benutzerdefinierte Appvault-Ressource für ONTAP s3 zu erstellen. Stellen Sie sicher, dass Sie sie im Trident Protect Namespace erstellen.
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
Stellen Sie sicher, dass ONTAP S3 Vault erstellt wurde und sich im verfügbaren Status befindet
Erstellen Sie eine Trident Protect-App für die VM
Erstellen Sie eine benutzerdefinierte App-Ressource im Namespace, in dem sich die VM befindet.
tridentctl-protect create app source-vm -n source-ns --namespaces source-ns
Erstellen Sie eine Trident Protect-App für die Disaster Recovery VM in einem neuen Namespace
oc create ns dr-ns
tridentctl-protect create app dr-vm -n dr-ns --namespaces dr-ns
Erstellen Sie einen AppMirror-Zeitplan im Quell-Namespace
Erstellen Sie einen Zeitplan für AppMirror mit yaml, wie in der Abbildung dargestellt. Dadurch werden Snapshots mit dem Zeitplan erstellt (alle 5 Minuten) und 2 Snapshots beibehalten
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"
Erstellen Sie eine appMirror-Beziehung im DR Namespace
Erstellen Sie eine Appmirror-Beziehung im Namespace Disaster Recovery. Legen Sie den Status „DesiredState“ auf „hergestellt“ fest.
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"
Sie können die Anwendungs-UID der Quell-VM aus der json-Ausgabe der Quell-App abrufen, wie unten gezeigt |
Wenn die AppMirror-Beziehung hergestellt wird, wird der letzte Snapshot an den Ziel-Namespace übertragen. Die PVC wird für die VM im dr Namespace erstellt, der VM-Pod ist jedoch noch nicht im dr Namespace erstellt.
Fördern Sie die Beziehung zu Failover
Ändern Sie den gewünschten Status der Beziehung in „befördert“, um die VM im DR Namespace zu erstellen. Die VM wird noch im Quell-Namespace ausgeführt.
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Promoted"}}'
Bauen Sie die Beziehung wieder zu einem Failback auf
Ändern Sie den gewünschten Status der Beziehung in „hergestellt“. Die VM wird im DR Namespace gelöscht. Die pvc ist weiterhin im DR Namespace vorhanden. Die VM wird noch im Quell-Namespace ausgeführt. Die ursprüngliche Beziehung vom Quell-Namespace zu DR ns wird hergestellt. .
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Established"}}'