Use o Trident Protect para implementar failover e failover para VMs na virtualização OpenShift
Visão geral
Esta seção fornece detalhes sobre a implementação de failover e failover de VMs na virtualização OpenShift usando o Trident Protect. Os procedimentos são os mesmos, independentemente de as VMs serem clusters OpenShift on-premises ou clusters ROSA. Esta seção mostra os procedimentos para criar um armazenamento de objetos do ONTAP S3 para usar como o appvault para Trident Protect e criar um agendamento para o espelhamento de aplicativos. Depois disso, ele mostra como criar um relacionamento de espelho de aplicativo. Por fim, mostra como alterar o estado da relação do espelho do aplicativo para executar failover e failback.
Pré-requisitos
-
O Trident deve ser instalado. As classes de back-end 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 "instale o 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 a virtualização OpenShift, 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 do 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 ONTAP S3 Vault esteja criado e no estado disponível
Crie um aplicativo Trident Protect para a VM
Crie um recurso personalizado do aplicativo no namespace onde a VM está localizada.
tridentctl-protect create app source-vm -n source-ns --namespaces source-ns
Crie um aplicativo Trident Protect 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 agenda para AppMirror usando o yaml como mostrado. Isso criará snapshots usando a programação (a cada 5 minutos) e reterá 2 snapshots
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 uma relação appMirror no namespace DR
Crie uma relação Appmirror no namespace Disaster Recovery. Defina o estado 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, como mostrado abaixo |
Quando a relação AppMirror é estabelecida, o snapshot 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.
Promover a relação com o failover
Altere o estado desejado da relação 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"}}'
Estabeleça a relação novamente para o failback
Altere o estado desejado da relação para "estabelecido". A VM é excluída no namespace de DR. O pvc ainda existe no namespace DR. A VM ainda está em execução no namespace de origem. A relação original do namespace de origem para o DR ns é estabelecida. .
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Established"}}'