OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
12장. 관리형 클러스터 간 애플리케이션 장애 조치
이 섹션에서는 busybox 샘플 애플리케이션을 장애 조치하는 방법에 대한 지침을 제공합니다. Metro-DR의 장애 조치 방법은 애플리케이션을 기반으로 합니다. 이러한 방식으로 보호되도록 하는 각 애플리케이션은 DR 테스트용 샘플 애플리케이션 생성 섹션에 표시된 대로 애플리케이션 네임스페이스에
생성된 해당 DRPlacementControl
리소스 및 PlacementRule
리소스가 있어야 합니다.
절차
NetworkFence 리소스를 생성하고 펜싱을 활성화합니다.
네트워크 펜싱 작업을 수행할 CIDR 블록 또는 IP 주소 목록을 지정합니다. 이 경우 외부 RHCS 클러스터를 사용하여 펜싱해야 하는 클러스터의 모든 OpenShift 노드의 EXTERNAL-IP입니다.
이 명령을 실행하여 기본 관리 클러스터 의 IP 주소를 가져옵니다.
oc get nodes -o jsonpath='{range .items[*]}{.status.addresses[?(@.type=="ExternalIP")].address}{"\n"}{end}'
$ oc get nodes -o jsonpath='{range .items[*]}{.status.addresses[?(@.type=="ExternalIP")].address}{"\n"}{end}'
Copy to Clipboard Copied! 출력 예:
10.70.56.118 10.70.56.193 10.70.56.154 10.70.56.242 10.70.56.136 10.70.56.99
10.70.56.118 10.70.56.193 10.70.56.154 10.70.56.242 10.70.56.136 10.70.56.99
Copy to Clipboard Copied! 참고사이트 중단이 발생하기 전에 모든 OpenShift 노드의 현재 IP 주소를 수집합니다. 가장 좋은 방법은 NetworkFence YAML 파일을 생성하고 재해 복구 이벤트를 위해 사용 가능하고 최신 상태로 유지하는 것입니다.
모든 노드의 IP 주소는 아래 표시된 대로 NetworkFence 예제 리소스에 추가됩니다. 이 예는 6개의 노드이지만 클러스터에 더 많은 노드가 있을 수 있습니다.
apiVersion: csiaddons.openshift.io/v1alpha1 kind: NetworkFence metadata: name: network-fence-<cluster1> spec: driver: openshift-storage.rbd.csi.ceph.com cidrs: - <IP_Address1>/32 - <IP_Address2>/32 - <IP_Address3>/32 - <IP_Address4>/32 - <IP_Address5>/32 - <IP_Address6>/32 [...] secret: name: rook-csi-rbd-provisioner namespace: openshift-storage parameters: clusterID: openshift-storage
apiVersion: csiaddons.openshift.io/v1alpha1 kind: NetworkFence metadata: name: network-fence-<cluster1> spec: driver: openshift-storage.rbd.csi.ceph.com cidrs: - <IP_Address1>/32 - <IP_Address2>/32 - <IP_Address3>/32 - <IP_Address4>/32 - <IP_Address5>/32 - <IP_Address6>/32 [...] secret: name: rook-csi-rbd-provisioner namespace: openshift-storage parameters: clusterID: openshift-storage
Copy to Clipboard Copied! 위의 YAML 파일 예제의 경우 IP 주소를 수정하고 기본 관리 클러스터의 경우 RHACM 에 있는 클러스터 이름으로 올바른 <cluster1 >을 제공합니다. 이 파일을 파일 이름
network-fence-<cluster1>.yaml
에 저장합니다.중요NetworkFence 는 장애 조치 전에 애플리케이션이 현재 실행 중인 반대의 관리형 클러스터에서 생성해야 합니다. 이 경우 이 클러스터는 보조 관리 클러스터 입니다.
oc create -f network-fence-<cluster1>.yaml
$ oc create -f network-fence-<cluster1>.yaml
Copy to Clipboard Copied! 출력 예:
networkfences.csiaddons.openshift.io/network-fence-ocp4perf1 created
networkfences.csiaddons.openshift.io/network-fence-ocp4perf1 created
Copy to Clipboard Copied! 중요NetworkFence 가 생성되면 애플리케이션에서 OpenShift Data Foundation 스토리지로의 모든 통신이 실패하고 일부 Pod는 이제 펜싱되는 클러스터의 비정상적인 상태(예: CreateContainerError, CrashLoopBackOff)에 있습니다.
NetworkFence 가 생성된 위치와 동일한 클러스터에서 상태가 성공인지 확인합니다. <cluster1>이 올바르도록 수정합니다.
export NETWORKFENCE=network-fence-<cluster1> oc get networkfences.csiaddons.openshift.io/$NETWORKFENCE -n openshift-dr-system -o jsonpath='{.status.result}{"\n"}'
export NETWORKFENCE=network-fence-<cluster1> oc get networkfences.csiaddons.openshift.io/$NETWORKFENCE -n openshift-dr-system -o jsonpath='{.status.result}{"\n"}'
Copy to Clipboard Copied! 출력 예:
Succeeded
Succeeded
Copy to Clipboard Copied!
펜싱된
클러스터의 DRPolicy 를 수정합니다.Hub 클러스터에서 DRPolicy 를 편집하고 < cluster1 >(예: ocp4perf1)을
Unfenced
에서ManuallyFenced
로 변경합니다.oc edit drpolicy odr-policy
$ oc edit drpolicy odr-policy
Copy to Clipboard Copied! 출력 예:
[...] spec: drClusterSet: - clusterFence: ManuallyFenced ## <-- Modify from Unfenced to ManuallyFenced name: ocp4perf1 region: metro s3ProfileName: s3-primary - clusterFence: Unfenced name: ocp4perf2 region: metro s3ProfileName: s3-secondary [...]
[...] spec: drClusterSet: - clusterFence: ManuallyFenced ## <-- Modify from Unfenced to ManuallyFenced name: ocp4perf1 region: metro s3ProfileName: s3-primary - clusterFence: Unfenced name: ocp4perf2 region: metro s3ProfileName: s3-secondary [...]
Copy to Clipboard Copied! 출력 예:
drpolicy.ramendr.openshift.io/odr-policy edited
drpolicy.ramendr.openshift.io/odr-policy edited
Copy to Clipboard Copied! Hub 클러스터에서 DRPolicy 상태가 기본 관리형 클러스터 의
Fenced
로 변경되었는지 확인합니다.oc get drpolicies.ramendr.openshift.io odr-policy -o yaml | grep -A 6 drClusters
$ oc get drpolicies.ramendr.openshift.io odr-policy -o yaml | grep -A 6 drClusters
Copy to Clipboard Copied! 출력 예:
drClusters: ocp4perf1: status: Fenced string: ocp4perf1 ocp4perf2: status: Unfenced string: ocp4perf2
drClusters: ocp4perf1: status: Fenced string: ocp4perf1 ocp4perf2: status: Unfenced string: ocp4perf2
Copy to Clipboard Copied!
장애
조치로 DRPlacementControl 수정- Hub 클러스터에서 Installed Operators로 이동한 다음 Openshift DR Hub Operator 를 클릭합니다.
- DRPlacementControl 탭을 클릭합니다.
-
DRPC
busybox-drpc
를 클릭한 다음 YAML 보기를 클릭합니다. 아래 스크린샷과 같이
작업
및 장애 조치 클러스터
세부 정보를 추가합니다.장애 조치
클러스터는 Secondary 관리 클러스터의 ACM 클러스터 이름입니다.DRPlacementControl 추가 장애 조치
- 저장을 클릭합니다.
이제 애플리케이션이 YAML 파일에 지정된 장애 조치 클러스터
ocp4perf2
인 Secondary 관리 클러스터에서 실행 중인지 확인합니다.oc get pods,pvc -n busybox-sample
$ oc get pods,pvc -n busybox-sample
Copy to Clipboard Copied! 출력 예:
NAME READY STATUS RESTARTS AGE pod/busybox 1/1 Running 0 35s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/busybox-pvc Bound pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb 5Gi RWO ocs-storagecluster-ceph-rbd 35s
NAME READY STATUS RESTARTS AGE pod/busybox 1/1 Running 0 35s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/busybox-pvc Bound pvc-79f2a74d-6e2c-48fb-9ed9-666b74cfa1bb 5Gi RWO ocs-storagecluster-ceph-rbd 35s
Copy to Clipboard Copied! busybox
가 기본 관리 클러스터에서 더 이상 실행되지 않는지 확인합니다.oc get pods,pvc -n busybox-sample
$ oc get pods,pvc -n busybox-sample
Copy to Clipboard Copied! 출력 예:
No resources found in busybox-sample namespace.
No resources found in busybox-sample namespace.
Copy to Clipboard Copied!
릴리스 노트의 Known issues 섹션에 설명된 대로 메트로-DR 알려진 문제에 대해 주의하십시오.