Configurar conmutación por error y conmutación por recuperación para máquinas virtuales en Red Hat OpenShift Virtualization usando Trident Protect
Configure la recuperación ante desastres para máquinas virtuales en OpenShift Virtualization usando Trident Protect. Este procedimiento incluye la creación de un AppVault con ONTAP S3, el establecimiento de relaciones de AppMirror entre los espacios de nombres de origen y de recuperación ante desastres, la programación de la replicación y la ejecución de operaciones de conmutación por error y recuperación para mantener la disponibilidad de las máquinas virtuales durante las interrupciones del sitio.
Prerrequisitos
-
Debe estar instalado Trident . Las clases de almacenamiento y backend se deben crear antes de instalar OpenShift Virtualization en el clúster mediante el operador OpenShift Virtualization.
-
Se debe instalar Trident Protect para implementar operaciones de conmutación por error y recuperación para las máquinas virtuales OpenShift. Consulte las instrucciones aquí para"instalar trident protect"
Una VM debe estar disponible en OpenShift Virtualization. Para obtener detalles sobre cómo implementar una nueva VM o migrar una VM existente a OpenShift Virtualization, consulte la sección correspondiente en la documentación.
Crear App Vault con ONTAP S3
Esta sección muestra cómo configurar un almacén de aplicaciones en Trident Protect usando el almacenamiento de objetos S3 de Ontap.
Utilice los comandos oc y los archivos yaml que se muestran a continuación para crear un secreto y el recurso personalizado appvault para ontap s3. Asegúrese de crearlos en el espacio de nombres de protección de tridente.
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
Asegúrese de que el almacén S3 de ontap esté creado y se encuentre en estado Disponible
Cree una aplicación de protección Trident para la máquina virtual
Cree un recurso de aplicación personalizado en el espacio de nombres donde se encuentra la máquina virtual.
tridentctl-protect create app source-vm -n source-ns --namespaces source-ns
Cree una aplicación de protección Trident para la máquina virtual de recuperación ante desastres en un nuevo espacio de nombres
oc create ns dr-ns
tridentctl-protect create app dr-vm -n dr-ns --namespaces dr-ns
Cree una programación de AppMirror en el espacio de nombres de origen
Cree una programación para AppMirror usando yaml como se muestra. Esto creará instantáneas utilizando la programación (cada 5 minutos) y conservará 2 instantáneas
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"
Cree una relación appMirror en el espacio de nombres DR
Cree una relación de Appmirror en el espacio de nombres Recuperación ante desastres. Establezca el estado deseado en Establecido.
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"
|
Puede obtener el UID de la aplicación de la máquina virtual de origen desde la salida json de la aplicación de origen como se muestra a continuación |
Cuando se establece la relación AppMirror, la instantánea más reciente se transfiere al espacio de nombres de destino. La PVC se crea para la VM en el espacio de nombres dr, sin embargo, el pod de VM aún no se crea en el espacio de nombres dr.
Promover la relación con Failover
Cambie el estado deseado de la relación a "Promocionado" para crear la VM en el espacio de nombres de DR. La máquina virtual todavía se está ejecutando en el espacio de nombres de origen.
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Promoted"}}'
Establecer nuevamente la relación con Failback
Cambie el estado deseado de la relación a "Establecido". La VM se elimina en el espacio de nombres DR. El pvc todavía existe en el espacio de nombres DR. La máquina virtual todavía se está ejecutando en el espacio de nombres de origen. Se establece la relación original desde el espacio de nombres de origen a DR ns. .
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Established"}}'
Demostración en video
El siguiente video muestra una demostración de cómo implementar un escenario de recuperación ante desastres para una máquina virtual OpenShift usando Trident Protect