Trident Protect를 사용하여 OpenShift 가상화에서 VM에 대한 장애 조치 및 장애 복구를 구현합니다
개요
이 섹션에서는 Trident Protect를 사용하여 OpenShift 가상화에서 VM 장애 조치 및 장애 복구를 구현하는 방법에 대해 자세히 설명합니다. VM이 온프레미스 OpenShift 클러스터인지 ROSA 클러스터인지에 관계없이 절차는 동일합니다. 이 섹션에서는 Trident Protect의 appvault로 사용할 ONTAP S3 오브젝트 스토리지를 생성하고 앱 미러 스케줄을 생성하는 절차를 보여 줍니다. 그런 다음 앱 미러 관계를 만드는 방법을 보여 줍니다. 마지막으로 페일오버 및 페일백을 수행하기 위해 애플리케이션 미러 관계의 상태를 변경하는 방법을 보여 줍니다.
필수 구성 요소
-
Trident가 설치되어 있어야 합니다. OpenShift Virtualization 운영자를 사용하여 클러스터에 OpenShift Virtualization을 설치하기 전에 백엔드 및 스토리지 클래스를 생성해야 합니다.
-
OpenShift VM에 대한 페일오버 및 페일백 작업을 구현하려면 Trident Protect를 설치해야 합니다. 여기 에서 지침을 참조하십시오 "Trident Protect를 설치합니다"
OpenShift Virtualization에서 VM을 사용할 수 있어야 합니다. 새 VM을 배포하거나 기존 VM을 OpenShift Virtualization으로 마이그레이션하는 방법에 대한 자세한 내용은 설명서의 해당 섹션을 참조하십시오.
ONTAP S3을 사용하여 App Vault를 만듭니다
이 섹션에서는 ONTAP S3 오브젝트 스토리지를 사용하여 Trident Protect에서 앱 볼트를 설정하는 방법을 보여줍니다.
아래 표시된 OC 명령 및 YAML 파일을 사용하여 ONTAP S3에 대한 암호 및 appvault 사용자 지정 리소스를 생성합니다. 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
ONTAP S3 볼트가 생성되고 사용 가능 상태인지 확인합니다
VM에 대한 Trident Protect 앱을 생성합니다
VM이 있는 네임스페이스에서 앱 사용자 지정 리소스를 생성합니다.
tridentctl-protect create app source-vm -n source-ns --namespaces source-ns
새 네임스페이스에서 재해 복구 VM용 Trident Protect 앱을 생성합니다
oc create ns dr-ns
tridentctl-protect create app dr-vm -n dr-ns --namespaces dr-ns
소스 네임스페이스에 AppMirror Schedule 을 만듭니다
그림과 같이 YAML을 사용하여 AppMirror에 대한 일정을 생성합니다. 이렇게 하면 스케줄을 사용하여(5분마다) 스냅샷을 생성하고 2개의 스냅샷을 유지합니다
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"
DR 네임스페이스에서 appMirror 관계를 생성합니다
Disaster Recovery 네임스페이스에서 Appmirror 관계를 생성합니다. desiredState 를 establed 로 설정합니다.
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"
아래와 같이 소스 앱의 json 출력에서 소스 VM의 애플리케이션 UID를 가져올 수 있습니다 |
AppMirror 관계가 설정되면 가장 최근의 스냅샷이 대상 네임스페이스로 전송됩니다. DR 네임스페이스에서 VM에 대해 PVC가 생성되지만 VM Pod는 아직 DR 네임스페이스에 생성되지 않습니다.
관계를 장애 조치로 승격합니다
원하는 관계 상태를 "승격됨"으로 변경하여 DR 네임스페이스에 VM을 생성합니다. VM이 여전히 소스 네임스페이스에서 실행되고 있습니다.
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Promoted"}}'
장애 복구를 위한 관계를 다시 설정합니다
원하는 관계 상태를 "설정됨"으로 변경합니다. VM이 DR 네임스페이스에서 삭제됩니다. PVC는 DR 네임스페이스에 여전히 존재합니다. VM이 여전히 소스 네임스페이스에서 실행되고 있습니다. 소스 네임스페이스에서 DR ns로의 원래 관계가 설정됩니다. .
oc patch amr amr1 -n dr-ns --type=merge -p '{"spec":{"desiredState":"Established"}}'