4.7. 단방향 미러링을 통한 재해 복구
단방향 미러링을 사용하는 경우 재해에서 복구하려면 다음 절차를 사용하십시오. 기본 클러스터가 종료된 후 보조 클러스터로 장애 조치(failover)하는 방법 및 장애 복구 방법을 보여줍니다. 종료는 순서 또는 순서가 아닌 순서일 수 있습니다.
다음 예제에서는 기본 클러스터를 site-a
클러스터라고 하며 보조 클러스터를 site-b
클러스터라고 합니다. 또한 클러스터에는 두 개의 이미지 image1
및 image2
가 있는 데이터
풀이 있습니다.
단방향 미러링은 여러 보조 사이트를 지원합니다. 추가 보조 클러스터를 사용하는 경우 장애 조치할 보조 클러스터 중 하나를 선택합니다. 장애 복구 중에 동일한 클러스터에서 동기화합니다.
사전 요구 사항
- 실행 중인 클러스터 두 개 이상
- 풀 미러링 또는 이미지 미러링은 한 가지 방식으로 구성됩니다.
순서 종료 후 장애 조치(failover)
- 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 고객에 따라 다릅니다. 예를 들어 이미지를 사용하는 모든 OpenStack 인스턴스에서 볼륨을 분리합니다. Red Hat OpenStack Platform 13의 스토리지 가이드 의 블록 스토리지 및 볼륨 장을 참조하십시오.
site-a
클러스터의 모니터 노드에서 다음 명령을 실행하여site-a
클러스터에 있는 기본 이미지를 시연합니다.# rbd mirror image demote data/image1 # rbd mirror image demote data/image2
site-b
클러스터의 모니터 노드에서 다음 명령을 실행하여site-b
클러스터에 있는 비기본 이미지를 승격합니다.# rbd mirror image promote data/image1 # rbd mirror image promote data/image2
잠시 후
site-b
클러스터의 모니터 노드에서 이미지의 상태를 확인합니다.up+stopped
상태를 표시해야 하며 설명은primary
로 지정해야 합니다.# 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 13:18:36 # 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 13:18:36
Non-Orderlydown 이후 페일오버
- 기본 클러스터가 다운되었는지 확인합니다.
- 기본 이미지를 사용하는 모든 클라이언트를 중지합니다. 이 단계는 이미지를 사용하는 고객에 따라 다릅니다. 예를 들어 이미지를 사용하는 모든 OpenStack 인스턴스에서 볼륨을 분리합니다. Red Hat OpenStack Platform 10의 스토리지 가이드 의 블록 스토리지 및 볼륨 장을 참조하십시오.
site-b
클러스터의 모니터 노드에서 기본이 아닌 이미지를 승격합니다. demotion을site-a
클러스터로 전파할 수 없기 때문에--force
옵션을 사용합니다.# rbd mirror image promote --force data/image1 # rbd mirror image promote --force data/image2
site-b
클러스터의 모니터 노드에서 이미지 상태를 확인합니다.up+stopping_replay
상태가 표시되고 설명은force promoted
를 지정해야 합니다.# 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 # 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
failback 준비
이전 기본 클러스터가 복구되면 오류가 발생했습니다.
두 클러스터가 원래 단방향 미러링용으로만 구성된 경우 장애 조치를 위해 이미지를 반대 방향으로 복제하려면 미러링을 위해 기본 클러스터를 구성해야 합니다.
site-a
클러스터의 클라이언트 노드에rbd-mirror
패키지를 설치합니다. 패키지는 Red Hat Ceph Storage 3 Tools 리포지토리에서 제공합니다.Red Hat Enterprise Linux
# yum install rbd-mirror
Ubuntu
$ sudo apt-get install rbd-mirror
site-a
클러스터의 클라이언트 노드에서CLUSTER
옵션을 적절한 파일에 추가하여 클러스터 이름을 지정합니다. Red Hat Enterprise Linux에서/etc/sysconfig/ceph
파일을 업데이트하고 Ubuntu에서/etc/default/ceph
파일을 적절하게 업데이트합니다.CLUSTER=site-b
site-b
Ceph 구성 파일 및 RBD 키링 파일을site-b
모니터 및 클라이언트 노드로 복사합니다.# scp /etc/ceph/ceph.conf <user>@<site-a_mon-host-name>:/etc/ceph/site-b.conf # scp /etc/ceph/site-b.client.site-b.keyring root@<site-a_mon-host-name>:/etc/ceph/ # scp /etc/ceph/ceph.conf user@<site-a_client-host-name>:/etc/ceph/site-b.conf # scp /etc/ceph/site-b.client.site-b.keyring user@<site-a_client-host-name>:/etc/ceph/
참고Ceph 구성 파일을
site-b
모니터 노드에서site-a
.conf로 전송하는scp
명령은 파일의 이름을site-a.conf
로 변경합니다. 키링 파일 이름은 동일하게 유지됩니다.site-a
RBD 키링 파일을site-a
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>
&
lt;client-id
>를rbd-mirror
데몬이 사용할 Ceph Storage 클러스터 사용자로 변경합니다. 사용자에게 클러스터에 대한 적절한cephx
액세스 권한이 있어야 합니다. 자세한 내용은 Red Hat Ceph Storage 3 관리 가이드의 사용자 관리 장을 참조하십시오.site-a
를 사용한 선행 예제에 따라 명령은 다음과 같습니다.# systemctl enable ceph-rbd-mirror.target # systemctl enable ceph-rbd-mirror@site-a # systemctl start ceph-rbd-mirror@site-a
site-a
클러스터의 클라이언트 노드에서site-b
클러스터를 피어로 추가합니다.# rbd --cluster site-a mirror pool peer add data client.site-b@site-b -n client.site-a
여러 보조 클러스터를 사용하는 경우 보조 클러스터가 장애 조치(Failover)하도록 선택한 경우에만 장애 조치(failback)가 추가되어야 합니다.
site-a
클러스터의 모니터 노드에서site-b
클러스터가 피어로 성공적으로 추가되었는지 확인합니다.# rbd mirror pool info -p data Mode: image Peers: UUID NAME CLIENT d2ae0594-a43b-4c67-a167-a36c646e8643 site-b client.site-b
failback
이전 기본 클러스터가 복구되면 오류가 발생했습니다.
site-a
클러스터의 모니터 노드에서 이미지가 여전히 기본인지 확인합니다.# rbd info data/image1 # rbd info data/image2
명령의 출력에서
primary: true 또는
를 찾아 상태를 확인합니다.mirroring primary
: falsesite-a
클러스터의 모니터 노드에서 다음과 같이 명령을 실행하여 기본으로 나열된 이미지를 데모합니다.# rbd mirror image demote data/image1
순서가 아닌 종료가 있는 경우에만 이미지를 다시 동기화합니다. 사이트 - 클러스터의 모니터 노드에서 다음 명령을 실행하여
site-b
에서site-a
# rbd mirror image resync data/image1 Flagged image for resync from primary # rbd mirror image resync data/image2 Flagged image for resync from primary
잠시 후 이미지가
up+replaying
상태인지 확인하여 이미지를 다시 동기화해야 합니다.site-a
클러스터의 모니터 노드에서 다음 명령을 실행하여 상태를 확인합니다.# rbd mirror image status data/image1 # rbd mirror image status data/image2
site-b
클러스터의 모니터 노드에서 다음 명령을 실행하여site-b
클러스터의 이미지를 시연합니다.# rbd mirror image demote data/image1 # rbd mirror image demote data/image2
참고보조 클러스터가 여러 개인 경우 승격된 보조 클러스터에서만 수행해야 합니다.
site-a
클러스터의 모니터 노드에서 다음 명령을 실행하여site-a
클러스터에 있는 이전 기본 이미지를 승격합니다.# rbd mirror image promote data/image1 # rbd mirror image promote data/image2
클러스터의 모니터 노드에서 이미지 상태를 확인합니다.
up+stopped
상태를 표시해야 하며 설명은로컬 이미지가 기본
이미지라고 합니다.# 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 # 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
양방향 미러링 제거
위의 장애 조치 준비 섹션에서 양방향 미러링 기능에서는 site-b
클러스터에서 site-a
클러스터로 동기화할 수 있도록 구성되었습니다. failback이 완료되면 이러한 함수를 사용하지 않도록 설정할 수 있습니다.
site-a
클러스터에서 피어로site-b
클러스터를 제거합니다.$ rbd mirror pool peer remove data client.remote@remote --cluster local # 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
예를 들면 다음과 같습니다.
# systemctl stop ceph-rbd-mirror@site-a # systemctl disable ceph-rbd-mirror@site-a # systemctl disable ceph-rbd-mirror.target