10.4. Ceph Orchestrator를 사용하여 다중 사이트 Ceph Object Gateway 배포

Ceph Orchestrator는 Ceph Object Gateway에 대한 다중 사이트 구성 옵션을 지원합니다.

기본이 아닌 영역에 쓰기를 허용하는 활성-활성 영역 구성에서 작동하도록 각 오브젝트 게이트웨이를 구성할 수 있습니다. 다중 사이트 구성은 영역이라는 컨테이너 내에 저장됩니다.

영역은 영역 그룹, 영역, 및 기간을 저장합니다. rgw 데몬은 동기화를 처리하여 별도의 동기화 에이전트의 필요성을 제거하여 활성-활성 구성으로 작동합니다.

CLI(명령줄 인터페이스)를 사용하여 다중 사이트 영역을 배포할 수도 있습니다.

참고

다음 구성에서는 두 개 이상의 Red Hat Ceph Storage 클러스터가 지리적으로 분리된 위치에 있다고 가정합니다. 그러나 구성은 동일한 사이트에서도 작동합니다.

사전 요구 사항

  • Red Hat Ceph Storage 클러스터를 두 개 이상 실행합니다.
  • 각 Red Hat Ceph Storage 클러스터에 대해 각각 하나씩 두 개 이상의 Ceph Object Gateway 인스턴스.
  • 모든 노드에 대한 루트 수준의 액세스.
  • 노드 또는 컨테이너가 스토리지 클러스터에 추가됩니다.
  • 모든 Ceph Manager, 모니터 및 OSD 데몬이 배포됩니다.

절차

  1. cephadm 쉘에서 기본 영역을 구성합니다.

    1. 영역을 생성합니다.

      구문

      radosgw-admin realm create --rgw-realm=REALM_NAME --default

      예제

      [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default

      스토리지 클러스터에 단일 영역이 있는 경우 --default 플래그를 지정합니다.

    2. 기본 영역 그룹을 생성합니다.

      구문

      radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --master --default

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=us --endpoints=http://rgw1:80 --master --default

    3. 기본 영역을 생성합니다.

      구문

      radosgw-admin zone create --rgw-zonegroup=PRIMARY_ZONE_GROUP_NAME --rgw-zone=PRIMARY_ZONE_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY

      예제

      [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-1 --endpoints=http://rgw1:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

    4. 선택 사항: 기본 영역, 영역 그룹 및 관련 풀을 삭제합니다.

      중요

      데이터를 저장하기 위해 기본 영역 및 영역 그룹을 사용하는 경우 기본 영역과 해당 풀을 삭제하지 마십시오. 또한 기본 영역 그룹을 제거하면 시스템 사용자가 삭제됩니다.

      기본 영역 및 영역 그룹의 이전 데이터에 액세스하려면 radosgw-admin 명령에서 --rgw-zone default--rgw-zonegroup default 를 사용합니다.

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup delete --rgw-zonegroup=default
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it

    5. 시스템 사용자를 생성합니다.

      구문

      radosgw-admin user create --uid=USER_NAME --display-name="USER_NAME" --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY --system

      예제

      [ceph: root@host01 /]# radosgw-admin user create --uid=zone.user --display-name="Zone user" --system

      access_keysecret_key 를 기록해 둡니다.

    6. 기본 영역에 액세스 키와 시스템 키를 추가합니다.

      구문

      radosgw-admin zone modify --rgw-zone=PRIMARY_ZONE_NAME --access-key=ACCESS_KEY --secret=SECRET_KEY

      예제

      [ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=us-east-1 --access-key=NE48APYCAODEPLKBCZVQ --secret=u24GHQWRE3yxxNBnFBzjM4jn14mFIckQ4EKL6LoW

    7. 변경 사항을 커밋합니다.

      구문

      radosgw-admin period update --commit

      예제

      [ceph: root@host01 /]# radosgw-admin period update --commit

    8. cephadm 쉘 외부에서 스토리지 클러스터 및 프로세스의 FSID 를 가져옵니다.

      예제

      [root@host01 ~]#  systemctl list-units | grep ceph

    9. Ceph Object Gateway 데몬을 시작합니다.

      구문

      systemctl start ceph-FSID@DAEMON_NAME
      systemctl enable ceph-FSID@DAEMON_NAME

      예제

      [root@host01 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service
      [root@host01 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service

  2. Cephadm 쉘에서 보조 영역을 구성합니다.

    1. 호스트에서 기본 영역 구성을 가져옵니다.

      구문

      radosgw-admin realm pull --rgw-realm=PRIMARY_REALM --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY --default

      예제

      [ceph: root@host04 /]# radosgw-admin realm pull --rgw-realm=test_realm --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ --default

    2. 호스트에서 기본 기간 구성을 가져옵니다.

      구문

      radosgw-admin period pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY

      예제

      [ceph: root@host04 /]# radosgw-admin period pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

    3. 보조 영역을 구성합니다.

      구문

      radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME \
                   --rgw-zone=SECONDARY_ZONE_NAME --endpoints=http://RGW_SECONDARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 \
                   --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY \
                   --endpoints=http://FQDN:80 \
                   [--read-only]

      예제

      [ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-2 --endpoints=http://rgw2:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

    4. 선택 사항: 기본 영역을 삭제합니다.

      중요

      데이터를 저장하기 위해 기본 영역 및 영역 그룹을 사용하는 경우 기본 영역과 해당 풀을 삭제하지 마십시오.

      기본 영역 및 영역 그룹의 이전 데이터에 액세스하려면 radosgw-admin 명령에서 --rgw-zone default--rgw-zonegroup default 를 사용합니다.

      예제

      [ceph: root@host04 /]# radosgw-admin zone rm --rgw-zone=default
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it

    5. Ceph 구성 데이터베이스를 업데이트합니다.

      구문

      ceph config set SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME

      예제

      [ceph: root@host04 /]# ceph config set rgw rgw_zone us-east-2

    6. 변경 사항을 커밋합니다.

      구문

      radosgw-admin period update --commit

      예제

      [ceph: root@host04 /]# radosgw-admin period update --commit

    7. Cephadm 쉘 외부에서 스토리지 클러스터 및 프로세스의 FSID를 가져옵니다.

      예제

      [root@host04 ~]#  systemctl list-units | grep ceph

    8. Ceph Object Gateway 데몬을 시작합니다.

      구문

      systemctl start ceph-FSID@DAEMON_NAME
      systemctl enable ceph-FSID@DAEMON_NAME

      예제

      [root@host04 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
      [root@host04 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service

  3. 선택 사항: 배치 사양을 사용하여 다중 사이트 Ceph 오브젝트 게이트웨이를 배포합니다.

    구문

    ceph orch apply rgw NAME --realm=REALM_NAME --zone=PRIMARY_ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"

    예제

    [ceph: root@host04 /]# ceph orch apply rgw east --realm=test_realm --zone=us-east-1 --placement="2 host01 host02"

검증

  • 동기화 상태를 확인하여 배포를 확인합니다.

    예제

    [ceph: root@host04 /]# radosgw-admin sync status