5.8. 재해 복구
스토리지 관리자는 미러링이 구성된 다른 스토리지 클러스터에서 데이터를 복구하는 방법을 알면 최종 하드웨어 장애에 대비할 수 있습니다.
예에서는 기본 스토리지 클러스터를 site-a
라고 하며 보조 스토리지 클러스터는 site-b
라고 합니다. 또한 스토리지 클러스터에는 image1
및 image2
라는 두 개의 이미지가 있는 데이터
풀이 있습니다.
5.8.1. 사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 단방향 또는 양방향 미러링이 구성되었습니다.
5.8.2. 재해 복구
두 개 이상의 Red Hat Ceph Storage 클러스터 간의 블록 데이터 비동기 복제는 다운타임을 줄이고 중요한 데이터 센터 장애 발생 시 데이터 손실을 방지합니다. 이러한 실패는 큰 폭발 반경이라고도하는 광범위한 영향을 미치며 전력망 및 자연 재해에 미치는 영향으로 발생할 수 있습니다.
이러한 시나리오에서는 고객 데이터를 보호해야 합니다. 볼륨은 일관성 및 효율성으로 복제되어야 하며 복구 지점 목표(RPO) 및 복구 시간 목표(RTO) 대상 내에서도 복제해야 합니다. 이 솔루션을 Wide Area Network- Disaster Recovery(WAN-DR)라고 합니다.
이러한 시나리오에서는 기본 시스템과 데이터 센터를 복원하기가 어렵습니다. 복구하는 가장 빠른 방법은 애플리케이션을 대체 Red Hat Ceph Storage 클러스터(재별 복구 사이트)로 장애 조치하고 최신 데이터 사본과 함께 클러스터를 작동하는 것입니다. 이러한 오류 시나리오에서 복구하는 데 사용되는 솔루션은 애플리케이션에 의해 안내됩니다.
- RPO(Recovery Point Objective): 최악의 경우 애플리케이션이 허용되는 데이터 손실의 양입니다.
- RTO(Recover Time Objective): 애플리케이션을 사용 가능한 최신 데이터 사본과 함께 사용하여 애플리케이션을 다시 얻는 데 걸린 시간입니다.
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage Block Device Guide의 Ceph 블록 장치 미러링 섹션을 참조하십시오.
- 암호화된 상태에서 유선을 통한 데이터 전송에 대한 자세한 내용은 Red Hat Ceph Storage Data Security 및 Hardening Guide 의 전송 중인 암호화를 참조하십시오.
5.8.3. 일방향 미러링으로 재해 복구
일방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 보조 클러스터에 장애 조치하는 방법과 다시 실패하는 방법을 보여줍니다. 종료는 순서가 지정되지 않거나 순서가 지정되지 않을 수 있습니다.
단방향 미러링은 여러 보조 사이트를 지원합니다. 추가 보조 클러스터를 사용하는 경우 장애 조치(failover)할 보조 클러스터 중 하나를 선택합니다. 오류가 발생한 동안 동일한 클러스터에서 동기화합니다.
5.8.4. 양방향 미러링을 사용하여 재해에서 복구
양방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 미러 클러스터에서 미러링된 데이터에 장애 조치하는 방법과 장애 조치 방법을 보여줍니다. 종료는 순서가 지정되지 않거나 순서가 지정되지 않을 수 있습니다.
추가 리소스
- 이미지 데모, 승격 및 재동기에 대한 자세 한 내용은 Red Hat Ceph Storage Block Device Guide 의 이미지 미러링 구성 섹션을 참조하십시오.
5.8.5. 순서 종료 후 장애 조치(failover)
순서를 종료한 후 보조 스토리지 클러스터로 장애 조치(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
클러스터의 모니터 노드에서 다음 명령을 실행하여 사이트-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
클러스터의 모니터 노드에서 이미지 상태를 확인합니다.위쪽+stopped
의 상태가 표시되고 기본 상태로 나열되어야 합니다.[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 스토리지 가이드의 블록 스토리지 및 볼륨 장을 참조하십시오.
5.8.6. 순서가 아닌 종료 후 장애 조치(failover)
순서가 지정되지 않은 경우 보조 스토리지 클러스터 장애 조치(failover)입니다.
사전 요구 사항
- Red Hat Ceph Storage 클러스터를 실행 중인 최소 2개 이상.
- 노드에 대한 루트 수준 액세스.
- 풀 미러링 또는 이미지 미러링은 단방향 미러링 으로 구성됩니다.
절차
- 기본 스토리지 클러스터가 다운되었는지 확인합니다.
- 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다. 예를 들어 이미지를 사용하는 모든 OpenStack 인스턴스에서 볼륨을 분리합니다.
site-b
스토리지 클러스터의 Ceph Monitor 노드에서 기본이 아닌 이미지를 승격합니다. demotion을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
의 상태를 표시해야 하며 설명은force promoted
:예제
[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: 2019-04-17 13:25:06 [root@rbd-client ~]# rbd mirror image status data/image2 image2: global_id: 596f41bc-874b-4cd4-aefe-4929578cc834 state: up+stopping_replay description: force promoted last_update: 2019-04-17 13:25:06
추가 리소스
- Red Hat OpenStack Platform 스토리지 가이드의 블록 스토리지 및 볼륨 장을 참조하십시오.
5.8.7. 실패에 대비하십시오.
두 스토리지 클러스터가 원래 일회성 미러링에 대해서만 구성된 경우 다시 실패하도록 기본 스토리지 클러스터를 구성하여 이미지를 반대 방향으로 복제하도록 미러링을 구성합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- 노드에 대한 루트 수준 액세스.
절차
site-a
스토리지 클러스터의 클라이언트 노드에rbd-mirror
패키지를 설치합니다.[root@rbd-client ~]# yum install rbd-mirror
참고패키지는 Red Hat Ceph Storage Tools 리포지토리에서 제공됩니다.
site-a
스토리지 클러스터의 클라이언트 노드에서CLUSTER
옵션을/etc/sysconfig/ceph
파일에 추가하여 스토리지 클러스터 이름을 지정합니다.CLUSTER=site-b
site-b
Ceph 구성 파일 및 인증 키 파일을site-b
Ceph Monitor 노드에서site-a
Ceph Monitor 및 클라이언트 노드로 복사합니다.구문
scp /etc/ceph/ceph.conf USER@SITE_A_MON_NODE_NAME:/etc/ceph/site-b.conf scp /etc/ceph/site-b.client.site-b.keyring root@SITE_A_MON_NODE_NAME:/etc/ceph/ scp /etc/ceph/ceph.conf user@SITE_A_CLIENT_NODE_NAME:/etc/ceph/site-b.conf scp /etc/ceph/site-b.client.site-b.keyring user@SITE_A_CLIENT_NODE_NAME:/etc/ceph/
참고site-b Ceph Monitor 노드에서
site-b
Ceph Monitor 노드에 Ceph 구성 파일을 전송하는scp
명령은 파일 이름을site-a
.confsite-a
인증 키 파일을site-a
Ceph Monitor 노드에서site-a
클라이언트 노드로 복사합니다.구문
scp /etc/ceph/site-a.client.site-a.keyring <user>@SITE_A_CLIENT_HOST_NAME:/etc/ceph/
site-a
클라이언트 노드에서rbd-mirror
데몬을 활성화하고 시작합니다.구문
systemctl enable ceph-rbd-mirror.target systemctl enable ceph-rbd-mirror@CLIENT_ID systemctl start ceph-rbd-mirror@CLIENT_ID
rbd-mirror
데몬이 사용할 Ceph Storage 클러스터 사용자로CLIENT_ID
를 변경합니다. 사용자에게 스토리지 클러스터에 대한 적절한cephx
액세스 권한이 있어야 합니다.예제
[root@rbd-client ~]# systemctl enable ceph-rbd-mirror.target [root@rbd-client ~]# systemctl enable ceph-rbd-mirror@site-a [root@rbd-client ~]# systemctl start ceph-rbd-mirror@site-a
site-a
클러스터의 클라이언트 노드에서site-b
클러스터를 피어로 추가합니다.예제
[root@rbd-client ~]# rbd --cluster site-a mirror pool peer add data client.site-b@site-b -n client.site-a
보조 스토리지 클러스터를 여러 개 사용하는 경우 장애 조치(failover)하도록 선택한 보조 스토리지 클러스터만 추가해야 합니다.
site-a
스토리지 클러스터의 모니터 노드에서site-b
스토리지 클러스터가 피어로 성공적으로 추가되었는지 확인합니다.구문
rbd mirror pool info POOL_NAME
예제
[root@rbd-client ~]# rbd mirror pool info data Mode: image Site Name: site-a Peer Sites: UUID: 950ddadf-f995-47b7-9416-b9bb233f66e3 Name: site-b Mirror UUID: 4696cd9d-1466-4f98-a97a-3748b6b722b3 Direction: rx-tx Client: client.site-b
추가 리소스
- 자세한 내용은 Red Hat Ceph Storage 관리 가이드의 사용자 관리 장을 참조하십시오.
5.8.7.1. 기본 스토리지 클러스터로 장애 복구
이전의 기본 스토리지 클러스터가 복구되면 기본 스토리지 클러스터로 다시 실패합니다.
사전 요구 사항
- Red Hat Ceph Storage 클러스터를 실행 중인 최소 2개 이상.
- 노드에 대한 루트 수준 액세스.
- 풀 미러링 또는 이미지 미러링은 단방향 미러링 으로 구성됩니다.
절차
site-b
클러스터의 모니터 노드에서 이미지의 상태를 다시 확인합니다.위쪽으로 표시된 상태를 표시해야 하며 설명에서
로컬 이미지가 기본
이라고 합니다.예제
[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
사이트-스토리지 클러스터의 Ceph Monitor 노드에서는
이미지가 여전히 기본 설정되어 있는지 확인합니다.구문
rbd info POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd info data/image1 [root@rbd-client ~]# rbd info data/image2
명령의 출력에서
primary: true 또는
를 사용하여 상태를 확인합니다.mirroring primary
: false스토리지 클러스터의 Ceph Monitor 노드에서 다음과 같이 명령을 실행하여 1차로 나열된 이미지를 시연합니다.
구문
rbd mirror image demote POOL_NAME/IMAGE_NAME
예제
[root@rbd-client ~]# rbd mirror image demote data/image1
순서가 지정되지 않은 경우에만 이미지를 다시 동기화합니다. site-b에서 site-b에서
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
참고보조 스토리지 클러스터가 여러 개인 경우 승격된 보조 스토리지 클러스터에서만 수행해야 합니다.
스토리지 클러스터의 Ceph Monitor 노드에서 다음 명령
을 실행하여 사이트-
스토리지 클러스터에 있는 이전 기본 이미지를
스토리지 클러스터에 승격합니다.구문
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
스토리지 클러스터의 Ceph Monitor 노드에서 이미지 상태를 확인합니다.
위쪽+stopped
의 상태를 표시해야 하며 설명은 로컬 이미지가 기본
이라고 합니다.구문
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
5.8.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