6.6. 재해에서 복구
스토리지 관리자는 미러링이 구성된 다른 스토리지 클러스터에서 데이터를 복구하는 방법을 확인하여 최종 하드웨어 오류를 준비할 수 있습니다.
이 예제에서 기본 스토리지 클러스터를 site-a
라고 하며 보조 스토리지 클러스터를 site-b
라고 합니다. 또한 스토리지 클러스터에는 두 개의 이미지 image 1
및 image2
가 있는 데이터
풀이 있습니다.
6.6.1. 사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 단방향 또는 양방향 미러링이 구성되었습니다.
6.6.2. 재해 복구
두 개 이상의 Red Hat Ceph Storage 클러스터 간의 블록 데이터의 비동기 복제는 다운타임을 줄이고 중요한 데이터 센터 장애 발생 시 데이터 손실을 방지합니다. 이러한 오류는 대규모 인력이라고도 하는 광범위한 영향을 미치며, 전력 그리드와 자연 재해에 영향을 미치기 때문에 발생할 수 있습니다.
이러한 시나리오에서는 고객 데이터를 보호해야 합니다. 볼륨은 일관성 및 효율성과 함께 복제되어야 하며 RPO(Re구re Point Objective) 및 RTO(Re구re Time Objective) 대상 내에서도 복제해야 합니다. 이 솔루션은 WAN-DR(Wide Area Network- Disaster Recovery)이라고 합니다.
이러한 시나리오에서는 기본 시스템과 데이터 센터를 복원하기가 어렵습니다. 복구하는 가장 빠른 방법은 애플리케이션을 대체 Red Hat Ceph Storage 클러스터(재지정 복구 사이트)로 페일오버하고 사용 가능한 데이터의 최신 사본으로 클러스터가 작동하도록 하는 것입니다. 이러한 오류 시나리오에서 복구하는 데 사용되는 솔루션은 애플리케이션을 통해 안내합니다.
- 복구 지점 목표 (RPO): 데이터 손실의 양으로, 애플리케이션이 최악의 경우 허용합니다.
- 복구 시간 목표 (RTO): 사용 가능한 데이터의 최신 복사본에 따라 애플리케이션을 다시 가져오는 데 걸린 시간입니다.
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage 블록 장치 가이드의 Ceph 블록 장치미러링 장을 참조하십시오.
- 암호화된 상태에서 유선 데이터 전송에 대한 자세한 내용은 Red Hat Ceph Storage Data Security and Hardening Guide 의 전송 시 암호화 섹션 을 참조하십시오.
6.6.3. 단방향 미러링으로 재해 복구
단방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 보조 클러스터로 장애 조치하는 방법과 다시 실패하는 방법을 보여줍니다. 종료는 순서에 따라 순서에 따라 정렬되지 않을 수 있습니다.
단방향 미러링은 여러 보조 사이트를 지원합니다. 추가 보조 클러스터를 사용하는 경우 보조 클러스터 중 하나를 선택하여 실패합니다. 다시 실패하는 동안 동일한 클러스터에서 동기화합니다.
6.6.4. 양방향 미러링으로 재해 복구
양방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 보조 클러스터에서 미러링된 데이터로 장애 조치하는 방법과 장애 복구 방법을 보여줍니다. 종료는 순서에 따라 순서에 따라 정렬되지 않을 수 있습니다.
6.6.5. 순서가 종료된 후 장애 조치
순서가 종료된 후 보조 스토리지 클러스터로 장애 조치(failover)합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터 2개 이상.
- 노드에 대한 루트 수준 액세스.
- 단방향 미러링으로 구성된 풀 미러링 또는 이미지 미러링.
절차
- 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다. 예를 들어 이미지를 사용하는 OpenStack 인스턴스에서 볼륨을 분리합니다.
site-a 클러스터의 모니터 노드에서 다음 명령을 실행하여
클러스터에 있는 기본 이미지를 강등합니다.site-a
구문
rbd mirror image demote POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image demote data/image1 [root@rbd-client ~]# rbd mirror image demote data/image2
site-
b 클러스터의 모니터 노드에서 다음 명령을 실행하여 site-b
클러스터에 있는 기본이 아닌 이미지를 승격합니다.구문
rbd mirror image promote POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image promote data/image1 [root@rbd-client ~]# rbd mirror image promote data/image2
잠시 후에
site-b
클러스터의 모니터 노드에서 이미지의 상태를 확인합니다.up+stopped
상태로 표시되고 primary로 나열되어야 합니다.[root@rbd-client ~]# rbd mirror image status data/image1 image1: global_id: 08027096-d267-47f8-b52e-59de1353a034 state: up+stopped description: local image is primary last_update: 2019-04-17 16:04:37 [root@rbd-client ~]# rbd mirror image status data/image2 image2: global_id: 596f41bc-874b-4cd4-aefe-4929578cc834 state: up+stopped description: local image is primary last_update: 2019-04-17 16:04:37
- 이미지에 대한 액세스를 재개합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다.
추가 리소스
- Red Hat OpenStack Platform 스토리지 가이드의 블록 스토리지 및 볼륨 장을 참조하십시오.
6.6.6. 순서가 아닌 종료 후 장애 조치
주문이 아닌 종료 후 보조 스토리지 클러스터로 장애 조치(failover)합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터 2개 이상.
- 노드에 대한 루트 수준 액세스.
- 단방향 미러링으로 구성된 풀 미러링 또는 이미지 미러링.
절차
- 기본 스토리지 클러스터가 다운되었는지 확인합니다.
- 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다. 예를 들어 이미지를 사용하는 OpenStack 인스턴스에서 볼륨을 분리합니다.
site-b
스토리지 클러스터의 Ceph Monitor 노드에서 기본이 아닌 이미지를 승격합니다. 강등이site-a
스토리지 클러스터로 전파될 수 없기 때문에--force
옵션을 사용합니다.구문
rbd mirror image promote --force POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image promote --force data/image1 [root@rbd-client ~]# rbd mirror image promote --force data/image2
site-b
스토리지 클러스터의 Ceph Monitor 노드에서 이미지의 상태를 확인합니다.up+stopping_replay
상태가 표시되어야 합니다. 설명은강제 승격
해야 합니다. 즉, 간헐적인 상태에 있습니다. 상태가up+stopped
가 될 때까지 기다린 후 사이트를 검증합니다.예제
[root@rbd-client ~]# rbd mirror image status data/image1 image1: global_id: 08027096-d267-47f8-b52e-59de1353a034 state: up+stopping_replay description: force promoted last_update: 2023-04-17 13:25:06 [root@rbd-client ~]# rbd mirror image status data/image1 image1: global_id: 08027096-d267-47f8-b52e-59de1353a034 state: up+stopped description: force promoted last_update: 2023-04-17 13:25:06
추가 리소스
- Red Hat OpenStack Platform 스토리지 가이드에서 블록 스토리지 및 볼륨 장을 참조하십시오.
6.6.7. 실패를 위한 준비
원래 두 스토리지 클러스터가 단방향 미러링용으로만 구성된 경우 이미지를 반대로 복제하기 위해 미러링을 위해 기본 스토리지 클러스터를 구성합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 클라이언트 노드에 대한 루트 수준 액세스.
절차
Cephadm 쉘에 로그인합니다.
예제
[root@rbd-client ~]# cephadm shell
site-a
스토리지 클러스터에서 다음 명령을 실행합니다.예제
[ceph: root@rbd-client /]# ceph orch apply rbd-mirror --placement=host01
피어 미러 풀과 동일한 이름으로 블록 장치 풀을 만듭니다.
rbd 풀을 만들려면 다음을 실행합니다.
구문
ceph osd pool create POOL_NAME PG_NUM ceph osd pool application enable POOL_NAME rbd rbd pool init -p POOL_NAME
예제
[root@rbd-client ~]# ceph osd pool create pool1 [root@rbd-client ~]# ceph osd pool application enable pool1 rbd [root@rbd-client ~]# rbd pool init -p pool1
Ceph 클라이언트 노드에서 스토리지 클러스터 피어를 부트스트랩합니다.
Ceph 사용자 계정을 생성하고 스토리지 클러스터 피어를 풀에 등록합니다.
구문
rbd mirror pool peer bootstrap create --site-name LOCAL_SITE_NAME POOL_NAME > PATH_TO_BOOTSTRAP_TOKEN
예제
[ceph: root@rbd-client-site-a /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a
참고이 예제 부트스트랩 명령은
client.rbd-mirror.site-a
및client.rbd-mirror-peer
Ceph 사용자를 생성합니다.-
부트스트랩 토큰 파일을
site-b
스토리지 클러스터에 복사합니다. site-b
스토리지 클러스터에서 부트스트랩 토큰을 가져옵니다.구문
rbd mirror pool peer bootstrap import --site-name LOCAL_SITE_NAME --direction rx-only POOL_NAME PATH_TO_BOOTSTRAP_TOKEN
예제
[ceph: root@rbd-client-site-b /]# rbd mirror pool peer bootstrap import --site-name site-b --direction rx-only data /root/bootstrap_token_site-a
참고단방향 RBD 미러링의 경우 부트스트랩 피어를 부트 스트랩할 때 양방향 미러링이 기본값이므로
--direction rx-only
인수를 사용해야 합니다.
site-a
스토리지 클러스터의 모니터 노드에서site-b 스토리지 클러스터가
피어로 성공적으로 추가되었는지 확인합니다.예제
[ceph: root@rbd-client /]# rbd mirror pool info -p data Mode: image Peers: UUID NAME CLIENT d2ae0594-a43b-4c67-a167-a36c646e8643 site-b client.site-b
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage 관리 가이드의 사용자 관리 장을 참조하십시오.
6.6.7.1. 기본 스토리지 클러스터로 다시 실패
이전의 기본 스토리지 클러스터가 복구되면 기본 스토리지 클러스터로 다시 실패합니다.
이미지 수준에 예약된 스냅샷이 있는 경우 이미지 재동기화 작업이 RBD 이미지 ID를 변경하고 이전 일정이 더 이상 사용되지 않을 때 일정을 다시 추가해야 합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터 2개 이상.
- 노드에 대한 루트 수준 액세스.
- 단방향 미러링으로 구성된 풀 미러링 또는 이미지 미러링.
절차
site-b
클러스터의 모니터 노드에서 이미지의 상태를 다시 확인합니다.up-stopped
상태를 표시해야 하며 설명에로컬 이미지가 primary
라고 표시되어야 합니다.예제
[root@rbd-client ~]# rbd mirror image status data/image1 image1: global_id: 08027096-d267-47f8-b52e-59de1353a034 state: up+stopped description: local image is primary last_update: 2019-04-22 17:37:48 [root@rbd-client ~]# rbd mirror image status data/image2 image2: global_id: 08027096-d267-47f8-b52e-59de1353a034 state: up+stopped description: local image is primary last_update: 2019-04-22 17:38:18
site-a
스토리지 클러스터의 Ceph Monitor 노드에서 이미지가 여전히 기본인지 확인합니다.구문
rbd mirror pool info POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd info data/image1 [root@rbd-client ~]# rbd info data/image2
명령의 출력에서
primary: true 또는
를 미러링하여 상태를 확인합니다.mirroring primary:
falsesite-a
스토리지 클러스터의 Ceph Monitor 노드에서 다음과 같은 명령을 실행하여 주로 나열된 이미지를 모두 강등합니다.구문
rbd mirror image demote POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image demote data/image1
순서가 지정되지 않은 종료인 경우만 이미지를 다시 동기화합니다.
site-a 스토리지 클러스터의 모니터 노드에서 다음 명령을 실행하여 site-
b에서
로 이미지를 다시 동기화합니다.site-
a구문
rbd mirror image resync POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image resync data/image1 Flagged image for resync from primary [root@rbd-client ~]# rbd mirror image resync data/image2 Flagged image for resync from primary
잠시 후에
up+replaying
상태인지 확인하여 이미지의 재동기화가 완료되었는지 확인합니다.site-a
스토리지 클러스터의 모니터 노드에서 다음 명령을 실행하여 해당 상태를 확인합니다.구문
rbd mirror image status POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image status data/image1 [root@rbd-client ~]# rbd mirror image status data/image2
site-b
스토리지 클러스터의 Ceph Monitor 노드에서 다음 명령을 실행하여site-b
스토리지 클러스터에서 이미지를 강등합니다.구문
rbd mirror image demote POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image demote data/image1 [root@rbd-client ~]# rbd mirror image demote data/image2
참고보조 스토리지 클러스터가 여러 개 있는 경우 승격된 보조 스토리지 클러스터에서만 이 작업을 수행해야 합니다.
site-a 스토리지 클러스터의 Ceph Monitor 노드에서 다음 명령을 실행하여
스토리지 클러스터에 있는 이전의 기본 이미지를 승격합니다.site-a
구문
rbd mirror image promote POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image promote data/image1 [root@rbd-client ~]# rbd mirror image promote data/image2
site-a
스토리지 클러스터의 Ceph Monitor 노드에서 이미지의 상태를 확인합니다.up+stopped
상태가 표시되고 설명에로컬 이미지가 primary
라고 표시되어야 합니다.구문
rbd mirror image status POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image status data/image1 image1: global_id: 08027096-d267-47f8-b52e-59de1353a034 state: up+stopped description: local image is primary last_update: 2019-04-22 11:14:51 [root@rbd-client ~]# rbd mirror image status data/image2 image2: global_id: 596f41bc-874b-4cd4-aefe-4929578cc834 state: up+stopped description: local image is primary last_update: 2019-04-22 11:14:51
6.6.8. 양방향 미러링 삭제
실패가 다시 완료되면 양방향 미러링을 제거하고 Ceph 블록 장치 미러링 서비스를 비활성화할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 노드에 대한 루트 수준 액세스.
절차
site-b
스토리지 클러스터를site-a
스토리지 클러스터에서 피어로 제거합니다.예제
[root@rbd-client ~]# rbd mirror pool peer remove data client.remote@remote --cluster local [root@rbd-client ~]# rbd --cluster site-a mirror pool peer remove data client.site-b@site-b -n client.site-a
site-a
클라이언트에서rbd-mirror
데몬을 중지하고 비활성화합니다.구문
systemctl stop ceph-rbd-mirror@CLIENT_ID systemctl disable ceph-rbd-mirror@CLIENT_ID systemctl disable ceph-rbd-mirror.target
예제
[root@rbd-client ~]# systemctl stop ceph-rbd-mirror@site-a [root@rbd-client ~]# systemctl disable ceph-rbd-mirror@site-a [root@rbd-client ~]# systemctl disable ceph-rbd-mirror.target