Configurar failover e failback para VMs no Red Hat OpenShift Virtualization usando Trident Protect
Configure a recuperação de desastres para VMs no OpenShift Virtualization usando o Trident Protect. Este procedimento inclui a criação de um AppVault com o ONTAP S3, o estabelecimento de relacionamentos do AppMirror entre namespaces de origem e recuperação de desastres, o agendamento de replicação e a execução de operações de failover e failback para manter a disponibilidade da VM durante interrupções do site.
Pré-requisitos
-
O Trident deve ser instalado. As classes de backend e armazenamento devem ser criadas antes que o OpenShift Virtualization seja instalado no cluster usando o operador OpenShift Virtualization.
-
O Trident Protect deve ser instalado para implementar operações de failover e failback para as VMs do OpenShift. Consulte as instruções aqui para"instalar trident protect"
Uma VM deve estar disponível no OpenShift Virtualization. Para obter detalhes sobre como implantar uma nova VM ou migrar uma VM existente para o OpenShift Virtualization, consulte a seção apropriada na documentação.
Crie o App Vault usando o ONTAP S3
Esta seção mostra como configurar um cofre de aplicativos no Trident Protect usando o armazenamento de objetos Ontap S3.
Use os comandos oc e os arquivos yaml mostrados abaixo para criar um segredo e o recurso personalizado appvault para o ontap s3. Certifique-se de criá-los no namespace 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
Certifique-se de que o cofre ontap S3 foi criado e está no estado Disponível
Crie um aplicativo de proteção Trident para a VM
Crie um recurso personalizado de aplicativo no namespace onde a VM está localizada.
tridentctl-protect create app source-vm -n source-ns --namespaces source-ns
Crie um aplicativo de proteção Trident para a VM de recuperação de desastres em um novo namespace
oc create ns dr-ns
tridentctl-protect create app dr-vm -n dr-ns --namespaces dr-ns
Crie um AppMirror Schedule no namespace de origem
Crie uma programação para o AppMirror usando o yaml, conforme mostrado. Isso criará instantâneos usando a programação (a cada 5 minutos) e manterá 2 instantâneos
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"
Crie um relacionamento appMirror no namespace DR
Crie um relacionamento Appmirror no namespace Disaster Recovery. Defina desiredState como Estabelecido.
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"
|
Você pode obter o UID do aplicativo da VM de origem a partir da saída json do aplicativo de origem, conforme mostrado abaixo |
Quando o relacionamento do AppMirror é estabelecido, o instantâneo mais recente é transferido para o namespace de destino. O PVC é criado para a VM no namespace dr, no entanto, o pod da VM ainda não foi criado no namespace dr.
Promova o relacionamento com o Failover
Altere o estado desejado do relacionamento para "Promovido" para criar a VM no namespace DR. A VM ainda está em execução no namespace de origem.
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Promoted"}}'
Estabelecer o relacionamento novamente com o Failback
Altere o estado desejado do relacionamento para "Estabelecido". A VM é excluída no namespace DR. O pvc ainda existe no namespace DR. A VM ainda está em execução no namespace de origem. O relacionamento original do namespace de origem para DR ns é estabelecido. .
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Established"}}'
Demonstração em vídeo
O vídeo a seguir mostra uma demonstração da implementação de um cenário de recuperação de desastres para uma VM OpenShift usando o Trident Protect