5.6. 명령줄 인터페이스를 사용하여 양방향 미러링 구성

다음 절차에서는 기본 스토리지 클러스터와 보조 스토리지 클러스터 간에 풀의 양방향 복제를 구성합니다.

참고

양방향 복제를 사용하는 경우 두 스토리지 클러스터 간에만 미러링할 수 있습니다.

참고

이 섹션의 예는 기본 이미지를 site-a 로 참조하며 이미지를 site-b 로 복제하는 보조 스토리지 클러스터를 참조하여 두 스토리지 클러스터를 구분합니다. 이 예제에서 사용되는 풀 이름을 data 라고 합니다.

사전 요구 사항

  • Red Hat Ceph Storage 클러스터 최소 2개 이상 정상 및 실행 중인.
  • 각 스토리지 클러스터의 Ceph 클라이언트 노드에 대한 루트 수준 액세스.
  • 관리자 수준의 기능이 있는 CephX 사용자.
  • 풀 내의 이미지에는 저널 기반 미러링에 사용할 수 있는 독점 잠금 및 저널링이 활성화되어 있어야 합니다.

절차

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

    Red Hat Enterprise Linux 7

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

    Red Hat Enterprise Linux 8

    [root@rbd-client ~]# dnf install rbd-mirror

    참고

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

  2. 이미지에서 배타적 잠금 및 저널링 기능을 활성화합니다.

    1. 새 이미지 의 경우 --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

    2. 기존 이미지 의 경우 rbd 기능 enable 명령을 사용합니다.

      구문

      rbd feature enable POOL_NAME/IMAGE_NAME FEATURE [,FEATURE]

      예제

      [root@rbd-client ~]# rbd feature enable data/image1 exclusive-lock,journaling

    3. 기본적으로 모든 새 이미지에서 배타적 잠금 및 저널링을 활성화하려면 Ceph 구성 파일에 다음 설정을 추가합니다.

      rbd_default_features = 125
  3. 미러링 모드(풀 또는 이미지 모드)를 선택합니다.

    중요

    스냅샷 기반 미러링에 이미지 모드를 사용합니다.

    1. 풀 모드 활성화:

      구문

      rbd mirror pool enable POOL_NAME MODE

      예제

      [root@rbd-client ~]# rbd mirror pool enable data pool

      이 예제에서는 data 라는 전체 풀을 미러링할 수 있습니다.

    2. 이미지 모드 활성화:

      구문

      rbd mirror pool enable POOL_NAME MODE

      예제

      [root@rbd-client ~]# rbd mirror pool enable data image

      이 예제에서는 data 라는 풀에서 이미지 모드 미러링을 활성화합니다.

    3. 미러링이 성공적으로 활성화되었는지 확인합니다.

      구문

      rbd mirror pool info POOL_NAME

      예제

      [root@rbd-client ~]# rbd mirror pool info data
      Mode: image
      Site Name: 94cbd9ca-7f9a-441a-ad4b-52a33f9b7148
      
      Peer Sites: none

  4. site-a 클러스터에서 다음 단계를 완료합니다.

    1. Ceph 클라이언트 노드에서 사용자를 생성합니다.

      구문

      ceph auth get-or-create client.PRIMARY_CLUSTER_NAME mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.PRIMARY_CLUSTER_NAME.keyring

      예제

      [root@rbd-client-site-a ~]# ceph auth get-or-create client.rbd-mirror.site-a mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.client.rbd-mirror.site-a.keyring

    2. 인증 키를 site-b 클러스터에 복사합니다.

      구문

      scp /etc/ceph/ceph.PRIMARY_CLUSTER_NAME.keyring root@SECONDARY_CLUSTER:_PATH_

      예제

      [root@rbd-client-site-a ~]# scp /etc/ceph/ceph.client.rbd-mirror.site-a.keyring root@rbd-client-site-b:/etc/ceph/

    3. Ceph 클라이언트 노드에서 스토리지 클러스터 피어를 부트스트랩합니다.

      1. 스토리지 클러스터 피어를 풀에 등록합니다.

        구문

        rbd mirror pool peer bootstrap create --site-name LOCAL_SITE_NAME POOL_NAME > PATH_TO_BOOTSTRAP_TOKEN

        예제

        [root@rbd-client-site-a ~]# rbd mirror pool peer bootstrap create --site-name rbd-mirror.site-a data > /root/bootstrap_token_rbd-mirror.site-a

        참고

        이 예제 bootstrap 명령은 client.rbd-mirror-peer Ceph 사용자를 생성합니다.

      2. 부트스트랩 토큰 파일을 site-b 스토리지 클러스터에 복사합니다.

        구문

        scp PATH_TO_BOOTSTRAP_TOKEN root@SECONDARY_CLUSTER:/root/

        예제

        [root@rbd-client-site-a ~]# scp /root/bootstrap_token_site-a root@ceph-rbd2:/root/

  5. site-b 클러스터에서 다음 단계를 완료합니다.

    1. 클라이언트 노드에서 사용자를 생성합니다.

      구문

      ceph auth get-or-create client.SECONDARY_CLUSTER_NAME mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.SECONDARY_CLUSTER_NAME.keyring

      예제

      [root@rbd-client-site-b ~]# ceph auth get-or-create client.rbd-mirror.site-b mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.client.rbd-mirror.site-b.keyring

    2. 인증 키를 Ceph 클라이언트 노드인 site-a 클러스터에 복사합니다.

      구문

      scp /etc/ceph/ceph.SECONDARY_CLUSTER_NAME.keyring root@PRIMARY_CLUSTER:_PATH_

      예제

      [root@rbd-client-site-b ~]# scp /etc/ceph/ceph.client.rbd-mirror.site-b.keyring root@rbd-client-site-a:/etc/ceph/

    3. 부트스트랩 토큰을 가져옵니다.

      구문

      rbd mirror pool peer bootstrap import --site-name LOCAL_SITE_NAME --direction rx-tx POOL_NAME PATH_TO_BOOTSTRAP_TOKEN

      예제

      [root@rbd-client-site-b ~]# rbd mirror pool peer bootstrap import --site-name rbd-mirror.site-b --direction rx-tx data /root/bootstrap_token_rbd-mirror.site-a

      참고

      양방향 미러링은 피어를 부트 스트랩할 때 기본 설정이므로 --direction 인수는 선택 사항입니다.

  6. 기본 및 보조 클라이언트 노드에서 rbd-mirror 데몬을 활성화하고 시작합니다.

    구문

    systemctl enable ceph-rbd-mirror.target
    systemctl enable ceph-rbd-mirror@rbd-mirror.CLIENT_ID
    systemctl start ceph-rbd-mirror@rbd-mirror.CLIENT_ID

    CLIENT_ID 를 이전에 만든 Ceph 사용자로 교체합니다.

    예제

    [root@rbd-client-site-a ~]# systemctl enable ceph-rbd-mirror.target
    [root@rbd-client-site-a ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-a ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-a ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-b
    [root@rbd-client-site-a ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-b

    위의 예에서 사용자는 기본 클러스터 사이트-a에서 사용하도록 설정되어 있습니다.

    예제

    [root@rbd-client-site-b ~]# systemctl enable ceph-rbd-mirror.target
    [root@rbd-client-site-b ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-b ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-b ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-b
    [root@rbd-client-site-b ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-b

    위의 예에서 사용자는 보조 클러스터 site-b에서 사용하도록 설정되어 있습니다.

    중요

    rbd-mirror 데몬에는 고유한 클라이언트 ID가 있어야 합니다.

  7. 미러링 상태를 확인하려면 site-asite-b 클러스터의 Ceph Monitor 노드에서 다음 명령을 실행합니다.

    구문

    rbd mirror image status POOL_NAME/IMAGE_NAME

    예제

    저널 기반 미러링:

    [root@mon-site-a ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped 1
      description: local image is primary
      last_update: 2021-04-22 13:45:31

    스냅샷 기반 미러링:

    [root@mon-site-a ~]# rbd mirror image status data/image1
    image1:
      global_id:   47fd1aae-5f19-4193-a5df-562b5c644ea7
      state:       up+stopped 1
      description: local image is primary
      service:     admin on ceph-rbd1-vasi-43-5hwia4-node2
      last_update: 2022-01-20 12:42:54
      peer_sites:
        name: rbd-mirror.site-b
        state: up+replaying
        description: replaying, {"bytes_per_second":0.0,"bytes_per_snapshot":0.0,"local_snapshot_timestamp":1642693094,"remote_snapshot_timestamp":1642693094,"replay_state":"idle"}
        last_update: 2022-01-20 12:42:59
      snapshots:
        5 .mirror.primary.47fd1aae-5f19-4193-a5df-562b5c644ea7.dda146c6-5f21-4e75-ba93-660f6e57e301 (peer_uuids:[bfd09289-c9c9-40c8-b2d3-ead9b6a99a45])
    1 1
    여기서 uprbd-mirror 데몬이 실행 중이며 중지된 것은 이 이미지가 다른 스토리지 클러스터의 복제 대상이 아님을 의미합니다. 이는 이미지가 이 스토리지 클러스터에서 기본 설정이기 때문입니다.

    예제

    저널 기반 미러링:

    [root@mon-site-b ~]# 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: 2021-04-22 14:19:27

    스냅샷 기반 미러링:

    [root@mon-site-b ~]# 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
    1 1
    이미지가 up+replaying 에 있는 경우 미러링이 제대로 작동합니다. 여기서 uprbd-mirror 데몬이 실행 중이며 재생을 통해 이 이미지가 다른 스토리지 클러스터에서 복제 대상임을 의미합니다.
    참고

    사이트 간 연결에 따라 미러링은 이미지를 동기화하는 데 시간이 오래 걸릴 수 있습니다.

추가 리소스