Utilizar Trident Protect para implementar la conmutación por error y la conmutación por recuperación de equipos virtuales en la virtualización de OpenShift
Descripción general
Esta sección proporciona detalles para implementar la conmutación por error y la conmutación por recuperación de VM en la virtualización de OpenShift mediante Trident Protect. Los procedimientos son los mismos independientemente de si las máquinas virtuales son clústeres OpenShift locales o en clústeres ROSA. En esta sección se muestran los procedimientos para crear un almacenamiento de objetos ONTAP S3 que se utilizará como appvault para Trident Protect y crear una programación para el mirroring de aplicaciones. Después de eso, muestra cómo crear una relación de reflejo de aplicación. Por último, muestra cómo cambiar el estado de la relación de reflejo de la aplicación para realizar conmutaciones al respaldo y conmutaciones tras recuperación.
Requisitos previos
-
Se debe instalar Trident. Las clases de backend y almacenamiento se deben crear antes de instalar OpenShift Virtualization en el clúster mediante el operador OpenShift Virtualization.
-
Trident Protect debe instalarse para implementar operaciones de conmutación al nodo de respaldo y conmutación de retorno tras recuperación de las máquinas virtuales de OpenShift. Consulte las instrucciones aquí "instale Trident protect"
Debe haber una máquina virtual disponible en OpenShift Virtualization. Para obtener más información sobre la implementación de una nueva VM o la migración de una VM existente a OpenShift Virtualization, consulte la sección correspondiente en la documentación.
Crear almacén de aplicaciones con ONTAP S3
Esta sección muestra cómo configurar un almacén de aplicaciones en Trident Protect con el almacenamiento de objetos de ONTAP S3.
Utilice los comandos oc y los archivos yaml que se muestran a continuación para crear un recurso personalizado secreto y appvault para ONTAP S3. Asegúrese de crearlos en el espacio de nombres 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
Asegúrese de crear el almacén de ONTAP S3 y que esté en estado Disponible
Cree una aplicación Trident Protect para la máquina virtual
Crear un recurso personalizado de aplicación 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 Trident Protect para el equipo 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 un programa para AppMirror usando el yaml como se muestra. Esto creará copias Snapshot usando la programación (cada 5 minutos) y conservará 2 copias 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"
Cree una relación de appMirror en el espacio de nombres de recuperación ante desastres
Cree una relación de Appmirror en el espacio de nombres de 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 VM 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 snapshot más reciente se transfiere al espacio de nombres de destino. La RVP se crea para el equipo virtual en el espacio de nombres de la recuperación ante desastres; sin embargo, el pod de la máquina virtual aún no se ha creado en el espacio de nombres de la recuperación ante desastres.
Ascender la relación a Failover
Puede cambiar el estado deseado de la relación a «promocionado» para crear la máquina virtual en el espacio de nombres de recuperación ante desastres. El equipo virtual aún se está ejecutando en el espacio de nombres de origen.
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Promoted"}}'
Establecer la relación de nuevo con el fin de realizar una conmutación tras recuperación
Cambie el estado deseado de la relación a “Establecido”. La máquina virtual se elimina del espacio de nombres de recuperación ante desastres. la rvp todavía existe en el espacio de nombres DR. El equipo virtual aún se está ejecutando en el espacio de nombres de origen. Se establece la relación original entre el espacio de nombres de origen y la recuperación ante desastres ns. .
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Established"}}'