5.8. 재해 복구

스토리지 관리자는 미러링이 구성된 다른 스토리지 클러스터에서 데이터를 복구하는 방법을 알면 최종 하드웨어 장애에 대비할 수 있습니다.

예에서는 기본 스토리지 클러스터를 site-a 라고 하며 보조 스토리지 클러스터는 site-b 라고 합니다. 또한 스토리지 클러스터에는 image1image2 라는 두 개의 이미지가 있는 데이터 풀이 있습니다.

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): 애플리케이션을 사용 가능한 최신 데이터 사본과 함께 사용하여 애플리케이션을 다시 얻는 데 걸린 시간입니다.

5.8.3. 일방향 미러링으로 재해 복구

일방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 보조 클러스터에 장애 조치하는 방법과 다시 실패하는 방법을 보여줍니다. 종료는 순서가 지정되지 않거나 순서가 지정되지 않을 수 있습니다.

중요

단방향 미러링은 여러 보조 사이트를 지원합니다. 추가 보조 클러스터를 사용하는 경우 장애 조치(failover)할 보조 클러스터 중 하나를 선택합니다. 오류가 발생한 동안 동일한 클러스터에서 동기화합니다.

5.8.4. 양방향 미러링을 사용하여 재해에서 복구

양방향 미러링을 사용할 때 재해에서 복구하려면 다음 절차를 사용합니다. 기본 클러스터가 종료된 후 미러 클러스터에서 미러링된 데이터에 장애 조치하는 방법과 장애 조치 방법을 보여줍니다. 종료는 순서가 지정되지 않거나 순서가 지정되지 않을 수 있습니다.

추가 리소스

5.8.5. 순서 종료 후 장애 조치(failover)

순서를 종료한 후 보조 스토리지 클러스터로 장애 조치(failover)합니다.

사전 요구 사항

  • Red Hat Ceph Storage 클러스터를 실행 중인 최소 2개 이상.
  • 노드에 대한 루트 수준 액세스.
  • 풀 미러링 또는 이미지 미러링은 단방향 미러링 으로 구성됩니다.

절차

  1. 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다. 예를 들어 이미지를 사용하는 모든 OpenStack 인스턴스에서 볼륨을 분리합니다.
  2. 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

  3. 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

  4. 잠시 후 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
  5. 이미지에 대한 액세스를 재개합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다.

추가 리소스

5.8.6. 순서가 아닌 종료 후 장애 조치(failover)

순서가 지정되지 않은 경우 보조 스토리지 클러스터 장애 조치(failover)입니다.

사전 요구 사항

  • Red Hat Ceph Storage 클러스터를 실행 중인 최소 2개 이상.
  • 노드에 대한 루트 수준 액세스.
  • 풀 미러링 또는 이미지 미러링은 단방향 미러링 으로 구성됩니다.

절차

  1. 기본 스토리지 클러스터가 다운되었는지 확인합니다.
  2. 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 클라이언트에 따라 다릅니다. 예를 들어 이미지를 사용하는 모든 OpenStack 인스턴스에서 볼륨을 분리합니다.
  3. 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

  4. 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

추가 리소스

5.8.7. 실패에 대비하십시오.

두 스토리지 클러스터가 원래 일회성 미러링에 대해서만 구성된 경우 다시 실패하도록 기본 스토리지 클러스터를 구성하여 이미지를 반대 방향으로 복제하도록 미러링을 구성합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준 액세스.

절차

  1. site-a 스토리지 클러스터의 클라이언트 노드에 rbd-mirror 패키지를 설치합니다.

    [root@rbd-client ~]# yum install rbd-mirror
    참고

    패키지는 Red Hat Ceph Storage Tools 리포지토리에서 제공됩니다.

  2. site-a 스토리지 클러스터의 클라이언트 노드에서 CLUSTER 옵션을 /etc/sysconfig/ceph 파일에 추가하여 스토리지 클러스터 이름을 지정합니다.

    CLUSTER=site-b
  3. 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.conf 로 변경합니다. 인증 키 파일 이름은 동일하게 유지됩니다.

  4. site-a 인증 키 파일을 site-a Ceph Monitor 노드에서 site-a 클라이언트 노드로 복사합니다.

    구문

    scp /etc/ceph/site-a.client.site-a.keyring <user>@SITE_A_CLIENT_HOST_NAME:/etc/ceph/

  5. 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

  6. 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)하도록 선택한 보조 스토리지 클러스터만 추가해야 합니다.

  7. 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

추가 리소스

5.8.7.1. 기본 스토리지 클러스터로 장애 복구

이전의 기본 스토리지 클러스터가 복구되면 기본 스토리지 클러스터로 다시 실패합니다.

사전 요구 사항

  • Red Hat Ceph Storage 클러스터를 실행 중인 최소 2개 이상.
  • 노드에 대한 루트 수준 액세스.
  • 풀 미러링 또는 이미지 미러링은 단방향 미러링 으로 구성됩니다.

절차

  1. 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

  2. 사이트-스토리지 클러스터의 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 를 사용하여 상태를 확인합니다.

  3. 스토리지 클러스터의 Ceph Monitor 노드에서 다음과 같이 명령을 실행하여 1차로 나열된 이미지를 시연합니다.

    구문

    rbd mirror image demote POOL_NAME/IMAGE_NAME

    예제

    [root@rbd-client ~]# rbd mirror image demote data/image1

  4. 순서가 지정되지 않은 경우에만 이미지를 다시 동기화합니다. 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

  5. 잠시 후 이미지 재동화가 완료되었는지 확인하여 이미지가 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

  6. 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

    참고

    보조 스토리지 클러스터가 여러 개인 경우 승격된 보조 스토리지 클러스터에서만 수행해야 합니다.

  7. 스토리지 클러스터의 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

  8. 스토리지 클러스터의 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 클러스터.
  • 노드에 대한 루트 수준 액세스.

절차

  1. 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

  2. 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