5.3. Ansible을 사용하여 단방향 미러링 구성
이 절차에서는 ceph-ansible
을 사용하여 site-b라는 기본 스토리지 클러스터에서 일방향 이미지 복제 를
라고 하는 보조 스토리지 클러스터에 구성합니다. 다음 예에서 site-
b데이터
는 미러링할 이미지를 포함하는 풀의 이름입니다.
사전 요구 사항
- Red Hat Ceph Storage 클러스터가 실행 중인 2개입니다.
- Ceph 클라이언트 노드.
- 동일한 이름의 풀이 두 클러스터에 있습니다.
- 풀 내의 이미지에는 저널 기반 미러링에 사용할 수 있는 독점 잠금 및 저널링이 활성화되어 있어야 합니다.
단방향 복제를 사용하는 경우 여러 보조 스토리지 클러스터에 미러링할 수 있습니다.
절차
이미지가 시작된 클러스터에서 이미지에서 배타적 잠금 및 저널링 기능을 활성화합니다.
새 이미지 의 경우
--image-feature
옵션을 사용합니다.구문
rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE[,FEATURE]
예제
[root@rbd-client ~]# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling
기존 이미지 의 경우
rbd 기능 enable 명령을
사용합니다.구문
rbd feature enable POOL_NAME/IMAGE_NAME FEATURE_NAME
예제
[root@rbd-client ~]# rbd feature enable data/image1 exclusive-lock,journaling
기본적으로 모든 새 이미지에서 배타적 잠금 및 저널링을 활성화하려면 Ceph 구성 파일에 다음 설정을 추가합니다.
rbd_default_features = 125
site-a
클러스터에서 다음 단계를 완료합니다.모니터 노드에서
rbd-mirror
데몬이 클러스터에 연결하는 데 사용할 사용자를 만듭니다. 이 예제에서는site-a
사용자를 생성하고 이 키를site-a.client.site-a.keyring
이라는 파일에 출력합니다.구문
ceph auth get-or-create client.CLUSTER_NAME mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/CLUSTER_NAME.client.USER_NAME.keyring
예제
[root@mon ~]# ceph auth get-or-create client.site-a mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/site-a.client.site-a.keyring
-
모니터링 노드에서 Ceph 구성 파일 및 새로 생성된 키 파일을
site-b
모니터 및 클라이언트 노드로 복사합니다. -
Ceph 구성 파일의 이름을
ceph.conf
에서 CLUSTER-NAME.conf로 변경합니다. 이 예제에서 파일은/etc/ceph/site-a.conf
입니다.
site-b
클러스터에서 다음 단계를 완료합니다.-
Ansible 관리 노드에서 Ansible 인벤토리 파일에
[rbdmirrors]
그룹을 추가합니다. 일반적인 인벤토리 파일은/etc/ansible/hosts
입니다. [rbdmirrors]
그룹에서rbd
-mirrors 데몬을 실행할site-b
클라이언트 노드의 이름을 추가합니다. 데몬은site-a
에서site-b
로 이미지 변경 사항을 가져옵니다.[rbdmirrors] ceph-client
/usr/share/ceph-ansible/
디렉터리로 이동합니다.[root@admin ~]# cd /usr/share/ceph-ansible
group_vars/
rbdmirrors.yml
.sample을 group_vars/rbdmirrors.yml
에 복사하여 새rbdmirrors.yml 파일을 만듭니다.
[root@admin ceph-ansible]# cp group_vars/rbdmirrors.yml.sample group_vars/rbdmirrors.yml
-
편집할
group_vars/rbdmirrors.yml
파일을 엽니다. ceph_rbd_mirror_configure
를true
로 설정합니다.ceph_rbd_mirror_pool
을 이미지를 미러링할 풀로 설정합니다. 이 예제에서데이터
는 풀 이름입니다.ceph_rbd_mirror_configure: true ceph_rbd_mirror_pool: "data"
기본적으로
ceph-ansible
은 풀의 모든 이미지를 미러링하는 풀 모드를 사용하여 미러링을 구성합니다. 미러링이 명시적으로 활성화된 이미지만 미러링된 이미지만 활성화하는 이미지 모드를 활성화합니다. 이미지 모드를 활성화하려면ceph_rbd_mirror_mode
를image
로 설정합니다.ceph_rbd_mirror_mode: image
rbd-mirror
에서 가져올 클러스터의 이름을 설정합니다. 이 예제에서 다른 클러스터는site-a
입니다.ceph_rbd_mirror_remote_cluster: "site-a"
Ansible 관리 노드에서
ceph_rbd_mirror_remote_user
를 사용하여 키의 사용자 이름을 설정합니다. 키를 만들 때 사용한 것과 동일한 이름을 사용합니다. 이러한 예에서 사용자는client.site-a
라는 이름으로 지정됩니다.ceph_rbd_mirror_remote_user: "client.site-a"
ceph-ansible 사용자로 Ansible 플레이북을 실행합니다.
베어 메탈 배포:
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit rbdmirrors -i hosts
컨테이너 배포:
[ansible@admin ceph-ansible]$ ansible-playbook site-container.yml --limit rbdmirrors -i hosts
-
Ansible 관리 노드에서 Ansible 인벤토리 파일에
site-a
및site-b
클러스터 모두에서 원하는 이미지에서 미러링을 명시적으로 활성화합니다.구문
저널 기반 미러링:
rbd mirror image enable POOL/IMAGE
스냅샷 기반 미러링:
rbd mirror image enable POOL/IMAGE snapshot
예제
[root@mon ~]# rbd mirror image enable data/image1 [root@mon ~]# rbd mirror image enable data/image1 snapshot
참고새 이미지를 피어 클러스터에 미러링할 때마다 이 단계를 반복합니다.
미러링 상태를 확인합니다.
site-b
클러스터의 Ceph Monitor 노드에서 다음 명령을 실행합니다.예제
저널 기반 미러링:
[root@mon ~]# rbd mirror image status data/image1 image1: global_id: 7d486c3f-d5a1-4bee-ae53-6c4f1e0c8eac state: up+replaying 1 description: replaying, master_position=[object_number=3, tag_tid=1, entry_tid=3], mirror_position=[object_number=3, tag_tid=1, entry_tid=3], entries_behind_master=0 last_update: 2019-04-22 13:19:27
스냅샷 기반 미러링:
[root@mon ~]# rbd mirror image status data/image1 image1: global_id: 06acc9e6-a63d-4aa1-bd0d-4f3a79b0ae33 state: up+replaying 1 description: replaying, {"bytes_per_second":0.0,"bytes_per_snapshot":0.0,"local_snapshot_timestamp":1642689843,"remote_snapshot_timestamp":1642689843,"replay_state":"idle"} service: admin on ceph-rbd2-vasi-43-5hwia4-node2 last_update: 2022-01-20 12:41:57
참고사이트 간 연결에 따라 미러링은 이미지를 동기화하는 데 시간이 오래 걸릴 수 있습니다.