Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

3.6. Ceph Object Gateway 설치

RADOS 게이트웨이라고도 하는 Ceph Object Gateway는 librados API 상단에 구축된 오브젝트 스토리지 인터페이스로, Ceph 스토리지 클러스터에 RESTful 게이트웨이를 제공합니다.

사전 요구 사항

절차

Ansible 관리 노드에서 다음 작업을 수행합니다.

  1. 게이트웨이 호스트를 [rgws] 섹션 아래의 /etc/ansible/hosts 파일에 추가하여 Ansible에 대한 역할을 확인합니다. 호스트에 순차적 이름 지정이 있는 경우 범위를 사용합니다. 예를 들면 다음과 같습니다.

    [rgws]
    <rgw_host_name_1>
    <rgw_host_name_2>
    <rgw_host_name[3..10]>
  2. Ansible 구성 디렉터리로 이동합니다.

    [root@ansible ~]# cd /usr/share/ceph-ansible
  3. 샘플 파일에서 rgws.yml 파일을 생성합니다.

    [root@ansible ~]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
  4. group_vars/rgws.yml 파일을 열고 편집합니다. 관리자 키를 Ceph Object Gateway 노드에 복사하려면 copy_admin_key 옵션의 주석을 제거합니다.

    copy_admin_key: true
  5. rgws.yml 파일은 기본 포트 7480 과 다른 기본 포트를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

    ceph_rgw_civetweb_port: 80
  6. all.yml 파일은 radosgw_interface 를 지정해야 합니다. 예를 들면 다음과 같습니다.

    radosgw_interface: eth0

    인터페이스를 지정하면 Civetweb이 동일한 호스트에서 여러 인스턴스를 실행할 때 다른 Civetweb 인스턴스와 동일한 IP 주소에 바인딩되지 않습니다.

  7. 일반적으로 기본 설정을 변경하려면 rgw.yml 파일의 설정 주석 처리를 해제하고 적절하게 변경합니다. rgw.yml 파일에 없는 설정을 추가로 변경하려면 all.yml 파일에서 ceph_conf_overrides: 를 사용합니다. 예를 들어 DNS 서버의 호스트를 사용하여 rgw_dns_name: 을 설정하고 와일드카드가 S3 하위 도메인을 사용하도록 클러스터의 DNS 서버를 구성해야 합니다.

    ceph_conf_overrides:
       client.rgw.rgw1:
          rgw_dns_name: <host_name>
          rgw_override_bucket_index_max_shards: 16
          rgw_bucket_default_quota_max_objects: 1638400

    고급 구성 정보는 Red Hat Ceph Storage 3 Ceph Object Gateway for Production 가이드를 참조하십시오. 고급 주제는 다음과 같습니다.

    • Ansible 그룹 구성
    • 스토리지 전략 개발. 풀을 생성하고 구성하는 방법에 대한 자세한 내용은 루트 생성, 시스템 풀 생성, 데이터 배치 전략 생성 섹션을 참조하십시오.

      버킷 샤딩에 대한 구성 정보는 Bucket Sharding 을 참조하십시오.

  8. group_vars/all.yml 파일의 radosgw_interface 매개변수의 주석을 제거합니다.

    radosgw_interface: <interface>

    교체:

    • Ceph Object Gateway 노드가 수신하는 인터페이스를 사용하여 <interface>

    자세한 내용은 all.yml 파일을 참조하십시오.

  9. Ansible Playbook을 실행합니다.

    [user@admin ceph-ansible]$ ansible-playbook site.yml --limit rgws
참고

Ansible은 각 Ceph Object Gateway가 실행 중인지 확인합니다.

단일 사이트 구성의 경우 Ansible 구성에 Ceph Object Gateway를 추가합니다.

다중 사이트 배포의 경우 각 영역에 대한 Ansible 구성이 있어야 합니다. 즉, Ansible은 Ceph 스토리지 클러스터 및 해당 영역의 게이트웨이 인스턴스를 만듭니다.

다중 사이트 클러스터에 대한 설치가 완료되면 Red Hat Enterprise Linux의 오브젝트 게이트웨이 가이드에 있는 다중 사이트 장으로 이동하여 다중 사이트용 클러스터를 구성하는 방법에 대해 자세히 알아보십시오.

추가 리소스

3.6.1. 다중 사이트 Ceph Object Gateway 구성

Ansible은 다중 사이트 환경에서 Ceph Object Gateway의 마스터 및 보조 영역과 함께 영역 zonegroup을 구성합니다.

사전 요구 사항

  • Red Hat Ceph Storage 클러스터를 실행하는 두 개.
  • Ceph Object Gateway 노드에서 Red Hat Ceph Storage 설치 가이드에 있는 Red Hat Ceph Storage 설치 요구 사항에 나열된 작업을 수행합니다.
  • 스토리지 클러스터당 하나의 Ceph Object Gateway를 설치하고 구성합니다.

절차

  1. 기본 스토리지 클러스터에 대해 Ansible 노드에서 다음 단계를 수행합니다.

    1. 시스템 키를 생성하고 다중 사이트-keys.txt 파일에서 출력을 캡처합니다.

      [root@ansible ~]# echo system_access_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) > multi-site-keys.txt
      [root@ansible ~]# echo system_secret_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) >> multi-site-keys.txt
    2. Ansible 구성 디렉터리 /usr/share/ceph-ansible 로 이동합니다.

      [root@ansible ~]# cd /usr/share/ceph-ansible
    3. group_vars/all.yml 파일을 열고 편집합니다. $ZONE_NAME,$ZONE_GROUP_NAME,$REALM_NAME,$ACCESS_KEY, 및 $SECRET_KEY 값을 업데이트하는 것과 함께 다음 옵션을 추가하여 다중 사이트 지원을 활성화합니다.

      Ceph Object Gateway가 두 개 이상 마스터 영역에 있는 경우 rgw_multisite_endpoints 옵션을 설정해야 합니다. rgw_multisite_endpoints 옵션의 값은 공백 없이 쉼표로 구분된 목록입니다.

      예제

      rgw_multisite: true
      rgw_zone: $ZONE_NAME
      rgw_zonemaster: true
      rgw_zonesecondary: false
      rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}"
      rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080
      rgw_zonegroup: $ZONE_GROUP_NAME
      rgw_zone_user: zone.user
      rgw_realm: $REALM_NAME
      system_access_key: $ACCESS_KEY
      system_secret_key: $SECRET_KEY

      참고

      ansible_fqdn 도메인 이름은 보조 스토리지 클러스터에서 확인할 수 있어야 합니다.

      참고

      새 오브젝트 게이트웨이를 추가할 때 Ansible 플레이북을 실행하기 전에 새 오브젝트 게이트웨이의 엔드포인트 URL을 사용하여 rgw_multisite_endpoints 목록 끝에 추가합니다.

    4. Ansible Playbook을 실행합니다.

      [user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
    5. Ceph Object Gateway 데몬을 다시 시작합니다.

      [root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
  2. 보조 스토리지 클러스터에 대해 Ansible 노드에서 다음 단계를 수행합니다.

    1. Ansible 구성 디렉터리 /usr/share/ceph-ansible 로 이동합니다.

      [root@ansible ~]# cd /usr/share/ceph-ansible
    2. group_vars/all.yml 파일을 열고 편집합니다. $ZONE_NAME,$ZONE_GROUP_NAME,$REALM_NAME,$ACCESS_KEY, 및 $SECRET_KEY 값을 업데이트하는 것과 함께 다음 옵션을 추가하여 다중 사이트 지원을 활성화합니다. rgw_zone_user,system_access_key, system_secret_key 는 마스터 영역 구성에 사용된 것과 동일한 값이어야 합니다. rgw_pullhost 옵션은 마스터 영역의 Ceph Object Gateway여야 합니다.

      Ceph Object Gateway가 보조 영역에 있는 경우 rgw_multisite_endpoints 옵션을 설정해야 합니다. rgw_multisite_endpoints 옵션의 값은 공백 없이 쉼표로 구분된 목록입니다.

      예제

      rgw_multisite: true
      rgw_zone: $ZONE_NAME
      rgw_zonemaster: false
      rgw_zonesecondary: true
      rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}"
      rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080
      rgw_zonegroup: $ZONE_GROUP_NAME
      rgw_zone_user: zone.user
      rgw_realm: $REALM_NAME
      system_access_key: $ACCESS_KEY
      system_secret_key: $SECRET_KEY
      rgw_pull_proto: http
      rgw_pull_port: 8080
      rgw_pullhost: $MASTER_RGW_NODE_NAME

      참고

      ansible_fqdn 도메인 이름은 기본 스토리지 클러스터에서 확인할 수 있어야 합니다.

      참고

      새 오브젝트 게이트웨이를 추가할 때 Ansible 플레이북을 실행하기 전에 새 오브젝트 게이트웨이의 엔드포인트 URL을 사용하여 rgw_multisite_endpoints 목록 끝에 추가합니다.

    3. Ansible Playbook을 실행합니다.

      [user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
    4. Ceph Object Gateway 데몬을 다시 시작합니다.

      [root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
  3. 마스터 및 보조 스토리지 클러스터에서 Ansible 플레이북을 실행하면 활성-활성 Ceph Object Gateway 구성이 실행됩니다.
  4. 다중 사이트 Ceph Object Gateway 구성을 확인합니다.

    1. 각 사이트의 Ceph Monitor 및 Object Gateway 노드에서 기본 및 보조 사이트를 컬링할 있어야 합니다.
    2. 두 사이트 모두에서 radosgw-admin 동기화 status 명령을 실행합니다.