6.5. 재해에서 복구
스토리지 관리자는 미러링이 구성된 다른 스토리지 클러스터에서 데이터를 복구하는 방법을 확인하여 최종 하드웨어 장애에 대비할 수 있습니다.
이 예에서 기본 스토리지 클러스터는 site-a
라고 하며 보조 스토리지 클러스터는 site-b
라고 합니다. 또한 스토리지 클러스터에는 두 개의 이미지 image1
및 image2
가 있는 데이터
풀이 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 단방향 또는 양방향 미러링이 구성되었습니다.
6.5.1. 재해 복구
두 개 이상의 Red Hat Ceph Storage 클러스터 간 블록 데이터를 비동기식으로 복제하면 다운타임을 줄이고 데이터 센터 장애 발생 시 데이터 손실을 방지합니다. 이러한 실패는 큰 blast (blast )으로도 광범위하게 영향을 미치며, 정전기 및 자연 재해에 미치는 영향으로 인해 발생할 수 있습니다.
이러한 경우 고객 데이터를 보호해야합니다. 볼륨은 일관성과 효율성을 통해 복제되어야 하며RPO(Ranky Point Objective) 및RTO(Generation Time Objective) 대상 내에서도 복제해야 합니다. 이 솔루션을WAN-DR(Wide Area Network- Disdeployment)이라고 합니다.
이러한 시나리오에서는 기본 시스템과 데이터 센터를 복원하기가 어렵습니다. 복구할 수 있는 가장 빠른 방법은 애플리케이션을 대체 Red Hat Ceph Storage 클러스터(또는 복구 사이트)로 장애 조치하고 최신 데이터 사본으로 클러스터를 작동시키는 것입니다. 이러한 오류 시나리오에서 복구하는 데 사용되는 솔루션은 애플리케이션에 의해 안내됩니다.
- recovery Point Objective (RPO): 데이터 손실의 양, 애플리케이션이 최악한 경우 허용
- 복구 시간 목표 (RTO): 사용 가능한 데이터의 최신 사본과 함께 애플리케이션을 다시 가져 오는 데 걸린 시간입니다.
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage 블록 장치 가이드의 Ceph 블록 장치미러링 을 참조하십시오.
- Red Hat Ceph Storage Data Security 및 Hardening Guide 의 전송 중 암호화 섹션을 참조하여 암호화된 상태에서의 데이터 전송에 대한 자세한 내용을 확인하십시오.
6.5.2. 단방향 미러링으로 재해 복구
단방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 보조 클러스터로 장애 조치하는 방법과 실패한 방법을 보여줍니다. 종료는 순서대로 또는 순서가 지정되지 않을 수 있습니다.
단방향 미러링은 여러 보조 사이트를 지원합니다. 추가 보조 클러스터를 사용하는 경우 장애 조치할 보조 클러스터 중 하나를 선택합니다. 실패 중에 동일한 클러스터에서 동기화합니다.
6.5.3. 양방향 미러링으로 재해 복구
양방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 보조 클러스터에서 미러링된 데이터로 장애 조치하는 방법과 장애 조치(failback) 방법을 보여줍니다. 종료는 순서대로 또는 순서가 지정되지 않을 수 있습니다.
6.5.4. 주문 종료 후 장애 조치(failover)
주문 종료 후 보조 스토리지 클러스터에 대한 장애 조치(failover)입니다.
사전 요구 사항
- Red Hat Ceph Storage 클러스터를 실행하는 최소 두 개
- 노드에 대한 루트 수준 액세스.
- 단방향 미러링으로 구성된 풀 미러링 또는 이미지 미러링.
절차
- 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다. 예를 들어 이미지를 사용하는 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.5.5. 순서가 없는 종료 후 장애 조치(failover) after a non-orderly shutdown
순서가 지정되지 않은 후 보조 스토리지 클러스터로 장애 조치(failover)됩니다.
사전 요구 사항
- Red Hat Ceph Storage 클러스터를 실행하는 최소 두 개
- 노드에 대한 루트 수준 액세스.
- 단방향 미러링으로 구성된 풀 미러링 또는 이미지 미러링.
절차
- 기본 스토리지 클러스터가 다운되었는지 확인합니다.
- 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다. 예를 들어 이미지를 사용하는 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.5.6. 장애 발생 준비
두 스토리지 클러스터가 원래 단방향 미러링에만 구성된 경우 이미지를 반대 방향으로 복제하도록 미러링을 위해 기본 스토리지 클러스터를 구성합니다.
실패 시나리오 중에 기존 피어를 기존 클러스터에 추가하기 전에 액세스할 수 없는 기존 피어를 제거해야 합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 클라이언트 노드에 대한 루트 수준 액세스.
절차
Cephadm 쉘에 로그인합니다.
예제
[root@rbd-client ~]# cephadm shell
site-a
스토리지 클러스터에서 다음 명령을 실행합니다.예제
[ceph: root@rbd-client /]# ceph orch apply rbd-mirror --placement=host01
액세스할 수 없는 피어를 제거합니다.
중요이 단계는 가동 및 실행 중인 피어 사이트에서 실행해야 합니다.
참고여러 피어는 한 가지 방법 미러링에만 지원됩니다.
풀 UUID를 가져옵니다.
구문
rbd mirror pool info POOL_NAME
예제
[ceph: root@host01 /]# rbd mirror pool info pool_failback
액세스할 수 없는 피어를 제거합니다.
구문
rbd mirror pool peer remove POOL_NAME PEER_UUID
예제
[ceph: root@host01 /]# rbd mirror pool peer remove pool_failback f055bb88-6253-4041-923d-08c4ecbe799a
피어 미러 풀과 동일한 이름으로 블록 장치 풀을 만듭니다.
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
참고이 예제 bootstrap 명령은
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
인수를 사용해야 합니다.
사이트-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.5.6.1. 기본 스토리지 클러스터로 장애 조치 (fail back to the primary storage cluster)
이전의 기본 스토리지 클러스터가 복구되면 기본 스토리지 클러스터로 다시 실패합니다.
이미지 수준에 예약된 스냅샷이 있는 경우 이미지 재동기화 작업이 RBD 이미지 ID를 변경하고 이전 일정이 더 이상 사용되지 않을 때 일정을 다시 추가해야 합니다.
사전 요구 사항
- Red Hat Ceph Storage 클러스터를 실행하는 최소 두 개
- 노드에 대한 루트 수준 액세스.
- 단방향 미러링으로 구성된 풀 미러링 또는 이미지 미러링.
절차
site-b
클러스터의 모니터 노드에서 이미지 상태를 다시 확인합니다.중지
됨 상태를 표시해야 하며 설명은로컬 이미지가 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
순서가 지정되지 않은 종료가 있는 경우 이미지를 다시 동기화합니다.
클러스터의 다른 노드와 일치하지 않는 이미지는 클러스터의 기본 이미지 전체 사본을 사용하여 다시 생성됩니다.
사이트-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.5.7. 양방향 미러링 제거
장애 조치가 완료되면 양방향 미러링을 제거하고 Ceph 블록 장치 미러링 서비스를 비활성화할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 노드에 대한 루트 수준 액세스.
절차
site-a
스토리지 클러스터에서 피어로site-b
스토리지 클러스터를 제거합니다.예제
[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