오버클라우드와 기존 Red Hat Ceph Storage 클러스터 통합

Red Hat OpenStack Platform 16.2

독립 실행형 Red Hat Ceph Storage를 사용하도록 오버클라우드 구성

OpenStack Documentation Team

초록

RHOSP(Red Hat OpenStack Platform) director를 사용하여 오버클라우드를 기존 독립 실행형 Red Hat Ceph Storage 클러스터와 통합할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선하는지 알려주십시오.

DDF(직접 문서 피드백) 기능 사용

특정 문장, 단락 또는 코드 블록에 대한 직접 주석은 피드백 추가 DDF 기능을 사용하십시오.

  1. 다중 페이지 HTML 형식으로 설명서를 봅니다.
  2. 문서 오른쪽 상단에 Feedback (피드백) 버튼이 표시되는지 확인합니다.
  3. 주석 처리하려는 텍스트 부분을 강조 표시합니다.
  4. 피드백 추가를 클릭합니다.
  5. 주석을 사용하여 Add Feedback (피드백 추가) 필드를 작성합니다.
  6. 선택 사항: 설명서 팀이 문제에 대한 자세한 내용을 문의할 수 있도록 이메일 주소를 추가하십시오.
  7. Submit(제출)을 클릭합니다.

1장. 오버클라우드와 Ceph Storage 통합

Red Hat OpenStack Platform director는 오버클라우드라는 클라우드 환경을 생성합니다. director를 사용하여 Red Hat Ceph Storage와의 통합과 같은 오버클라우드의 추가 기능을 구성할 수 있습니다. 오버클라우드를 director 또는 기존 Ceph Storage 클러스터와 함께 생성된 Ceph Storage 클러스터와 통합할 수 있습니다.

Red Hat Ceph Storage에 대한 자세한 내용은 Red Hat Ceph Storage Architecture Guide를 참조하십시오.

1.1. 외부 CephFS를 사용하여 공유 파일 시스템 서비스 배포

RHOSP(Red Hat OpenStack Platform) director를 사용하여 CephFS와 함께 Shared File Systems 서비스(manila)를 배포할 수 있습니다. NFS 프로토콜 또는 기본 CephFS 프로토콜과 함께 공유 파일 시스템 서비스를 사용할 수 있습니다.

중요

CephFS 기본 드라이버와 함께 Shared File Systems 서비스를 Manila CSI를 통해 Red Hat OpenShift Container Platform에 공유를 제공할 수 없습니다. Red Hat은 이러한 유형의 배포를 지원하지 않습니다. 자세한 내용은 Red Hat 지원팀에 문의하십시오.

NFS를 통한 CephFS의 공유 파일 시스템 서비스는 Manila CSI를 통해 Red Hat OpenShift Container Platform에 공유 서비스를 완벽하게 지원합니다. 이 솔루션은 대규모 배포를 위한 것이 아닙니다. CSI 워크로드 권장 사항에 대한 자세한 내용은 https://access.redhat.com/articles/6667651 을 참조하십시오.

기본 CephFS 공유 파일 시스템을 사용하려면 클라이언트에 Ceph 공용 네트워크에 액세스해야 합니다. 오버클라우드를 기존 Ceph Storage 클러스터와 통합하면 director는 Ceph 공용 네트워크로 지정할 격리된 스토리지 네트워크를 생성하지 않습니다. 이 네트워크는 이미 존재하는 것으로 가정합니다. Ceph 공용 네트워크에 대한 직접 액세스 권한을 제공하지 마십시오. 대신 테넌트에서 Ceph 공용 네트워크에 연결할 라우터를 만들 수 있습니다.

nfs-Ganesha 게이트웨이

NFS 프로토콜을 통해 CephFS를 사용하는 경우 director는 Pacemaker(PCS)에서 관리하는 컨트롤러 노드에 NFS-Ganesha 게이트웨이를 배포합니다. PCS는 액티브-패시브 구성을 사용하여 클러스터 가용성을 관리합니다.

NFS-Ganesha 게이트웨이는 Red Hat Ceph Storage 4.x(Ceph 패키지 14.x) 및 Red Hat Ceph Storage 5.x(Ceph 패키지 16.x)에서 지원됩니다. 시스템에 설치된 Ceph Storage 릴리스를 확인하는 방법에 대한 자세한 내용은 Red Hat Ceph Storage 릴리스 및 해당 Ceph 패키지 버전을 참조하십시오.

ceph-anible 패키지 설치에 설명된 대로 언더클라우드에 최신 버전의 ceph-ansible 패키지를 설치해야 합니다.

사전 요구 사항

외부 Ceph Storage 클러스터를 사용하여 공유 파일 시스템 서비스를 구성하기 전에 다음 사전 요구 사항을 완료합니다.

  • 외부 Ceph Storage 클러스터에 활성 메타데이터 서버(MDS)가 있는지 확인합니다.

    $ ceph -s
  • 외부 Ceph Storage 클러스터에는 CephFS 데이터 및 메타데이터 풀에서 지원하는 CephFS 파일 시스템이 있어야 합니다.

    • CephFS 파일 시스템에서 풀을 확인합니다.

      $ ceph fs ls
    • 이러한 풀의 이름을 참조하여 director 매개변수, ManilaCephFSDataPoolNameManilaCephMetadataPoolName 을 구성합니다. 이 구성에 대한 자세한 내용은 사용자 지정 환경 파일 만들기를 참조하십시오.
  • 외부 Ceph Storage 클러스터에는 공유 파일 시스템 서비스의 cephx 클라이언트 이름과 키가 있어야 합니다.

    • 인증 키를 확인합니다.

      $ ceph auth get client.<client name>
      • <client name>을 cephx 클라이언트 이름으로 바꿉니다.

1.2. 외부 Ceph 개체 게이트웨이를 사용하도록 Ceph 오브젝트 저장소 구성

RHOSP(Red Hat OpenStack Platform) director는 외부 Ceph Object Gateway(RGW)를 오브젝트 스토어 서비스로 구성하는 작업을 지원합니다. 외부 RGW 서비스로 인증하려면 ID 서비스(keystone)에서 사용자와 해당 역할을 확인하도록 RGW를 구성해야 합니다.

외부 Ceph Object Gateway를 구성하는 방법에 대한 자세한 내용은 Ceph Object Gateway 사용 가이드에서 Keystone 인증을 사용하도록 Ceph Object Gateway 구성을 참조하십시오.

2장. 오버클라우드 노드 준비

Red Hat Ceph Storage 클러스터와 통합하는 데 사용되는 오버클라우드 배포는 워크로드 호스팅을 위한 고가용성 및 컴퓨팅 노드가 있는 컨트롤러 노드로 구성됩니다. Red Hat Ceph Storage 클러스터에는 director가 아닌 Ceph 관리 툴을 사용하여 오버클라우드와 독립적으로 관리하는 자체 노드가 있습니다. Red Hat Ceph Storage에 관한 자세한 내용은 Red Hat Ceph Storage를 참조하십시오.

2.1. 사용 가능한 Red Hat Ceph Storage 패키지 확인

오버클라우드 배포 실패를 방지하려면 서버에 필요한 패키지가 있는지 확인합니다.

2.1.1. ceph-ansible 패키지 버전 확인

언더클라우드에는 오버클라우드를 배포하기 전에 잠재적인 문제를 식별하기 위해 실행할 수 있는 Ansible 기반 검증이 포함되어 있습니다. 이러한 검증을 통해 일반적인 문제가 발생하기 전에 식별하여 오버클라우드 배포 실패를 방지할 수 있습니다.

절차

  • 설치하려는 ceph-ansible 패키지 버전이 있는지 확인합니다.

    $ ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/ansible/validation-playbooks/ceph-ansible-installed.yaml

2.1.2. 사전 프로비저닝된 노드의 패키지 확인

RHCS(Red Hat Ceph Storage)는 특정 패키지 세트가 있는 오버클라우드 노드만 서비스할 수 있습니다. 사전 프로비저닝된 노드를 사용하는 경우 이러한 패키지가 있는지 확인할 수 있습니다.

사전 프로비저닝된 노드에 대한 자세한 내용은 사전 프로비저닝된 노드 를 사용하여 기본 오버클라우드 구성을 참조하십시오.

절차

  • 사전 프로비저닝된 노드에 필수 패키지가 포함되어 있는지 확인합니다.

    ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/ansible/validation-playbooks/ceph-dependencies-installed.yaml

2.2. 기존 Red Hat Ceph Storage 클러스터 구성

Red Hat Ceph Storage 클러스터를 구성하려면 OSD(오브젝트 스토리지 데몬) 풀을 생성하고, 기능을 정의하고, Ceph Storage 클러스터에서 직접 키와 ID를 생성합니다. Ceph Storage 클러스터에 연결할 수 있으며 Ceph 명령줄 클라이언트가 설치된 모든 시스템에서 명령을 실행할 수 있습니다.

절차

  1. 사용자 환경과 관련된 Ceph Storage 클러스터에서 다음 풀을 생성합니다.

    • OpenStack 블록 스토리지(cinder):

      [root@ceph ~]# ceph osd pool create volumes <pgnum>
    • OpenStack Image Storage(glance)용 스토리지:

      [root@ceph ~]# ceph osd pool create images <pgnum>
    • 인스턴스의 스토리지:

      [root@ceph ~]# ceph osd pool create vms <pgnum>
    • OpenStack 블록 스토리지 백업용 스토리지(cinder-backup):

      [root@ceph ~]# ceph osd pool create backups <pgnum>
    • 선택 사항: OpenStack Telemetry Metrics(gnocchi)용 스토리지:

      [root@ceph ~]# ceph osd pool create metrics <pgnum>

      OpenStack을 통해 메트릭이 활성화된 경우에만 이 스토리지 옵션을 사용합니다. 오버클라우드에서 CephFS를 사용하여 OpenStack Telemetry Metrics를 배포하는 경우 CephFS 데이터 및 메타데이터 풀을 생성합니다.

  2. 오버클라우드에서 Red Hat Ceph 4(Ceph 패키지 14) 또는 이전 버전을 사용하여 Shared File Systems 서비스(manila)를 배포하는 경우 CephFS 데이터 및 메타데이터 풀을 생성합니다.

    [root@ceph ~]# ceph osd pool create manila_data <pgnum>
    [root@ceph ~]# ceph osd pool create manila_metadata <pgnum>

    <pgnum> 을 배치 그룹 수로 바꿉니다. 클러스터의 OSD당 약 100개의 배치 그룹을 복제 수(osd 풀 기본 크기)로 나누는 것이 좋습니다. 예를 들어 OSD가 10개 있고 클러스터에 osd 풀 기본 크기 가 3으로 설정된 경우 333 배치 그룹을 사용합니다. 풀 계산기당 Ceph PG(배치 그룹)를 사용하여 적절한 값을 결정할 수도 있습니다.

  3. 오버클라우드에서 Red Hat Ceph 5(Ceph 패키지 16) 이상을 사용하여 Shared File Systems 서비스(manila)를 배포하는 경우 CephFS에 대한 데이터 및 메타데이터 풀을 생성할 필요가 없습니다. 파일 시스템 볼륨을 생성할 수 있습니다. 자세한 내용은 Red Hat Ceph Storage Operations Guide 의 Ceph Orchestrator를 사용하여 MDS 서비스 관리 를 참조하십시오.
  4. 다음 기능을 사용하여 Ceph 클러스터에 client.openstack 사용자를 생성합니다.

    • cap_mgr: allow *
    • cap_mon: profile rbd
    • cap_osd: profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=backups

      [root@ceph ~]# ceph auth add client.openstack mgr allow * mon profile rbd osd profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups
  5. client. openstack 사용자에 대해 생성된 Ceph 클라이언트 키를 확인합니다.

    [root@ceph ~]# ceph auth list
    ...
    [client.openstack]
    	key = <AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw==>
    	caps mgr = allow *
    	caps mon = profile rbd
    	caps osd = profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups
    ...

    예의 값인 A✓+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw== 는 Ceph 클라이언트 키입니다.

  6. 오버클라우드에서 CephFS를 사용하여 공유 파일 시스템 서비스를 배포하는 경우 다음 기능을 사용하여 Ceph Storage 클러스터에 client.manila 사용자를 생성합니다.

    • cap_mds: allow *
    • cap_mgr: allow *
    • cap_mon: allow r, allow command "auth del", allow command "auth caps", allow command "auth get", allow command "auth get" command "auth get-or-create"'
    • cap_osd: allow rw

      [root@ceph ~]# ceph auth add client.manila mon allow r, allow command "auth del", allow command "auth caps", allow command "auth get", allow command "auth get-or-create"' osd 'allow rw' mds 'allow *' mgr 'allow *'
  7. manila 클라이언트 이름과 오버클라우드 배포 템플릿에서 사용할 키 값을 기록해 둡니다.

    [root@ceph ~]# ceph auth get-key client.manila
         <AQDQ991cAAAAABAA0aXFrTnjH9aO39P0iVvYyg==>
  8. Ceph Storage 클러스터의 파일 시스템 ID를 기록해 둡니다. 이 값은 클러스터 구성 파일의 [global] 섹션에 있는 fsid 필드에 지정됩니다.

    [global]
    fsid = <4b5c8c0a-ff60-454b-a1b4-9747aa737d19>
    ...
참고

사용자 지정 환경 파일을 생성할 때 Ceph 클라이언트 키 및 파일 시스템 ID와 공유 파일 시스템 서비스 클라이언트 ID 및 키를 사용합니다.

3장. 기존 Ceph Storage 클러스터와 통합

RHOSP(Red Hat OpenStack Platform)를 기존 Red Hat Ceph Storage 클러스터와 통합하려면 ceph-ansible 패키지를 설치해야 합니다. 그런 다음 사용자 지정 환경 파일을 생성하여 OpenStack 구성 요소 내의 구성 옵션에 대한 값을 재정의하고 제공할 수 있습니다.

3.1. ceph-ansible 패키지 설치

Red Hat OpenStack Platform director는 ceph-ansible 을 사용하여 기존 Ceph Storage 클러스터와 통합하지만 ceph-ansible 은 언더클라우드에 기본적으로 설치되지 않습니다.

절차

  • 다음 명령을 입력하여 언더클라우드에 ceph-ansible 패키지를 설치합니다.

    $ sudo dnf install -y ceph-ansible

3.2. 사용자 정의 환경 파일 생성

director는 환경 파일을 통해 외부 Red Hat Ceph Storage 클러스터와 통합하기 위해 ceph-ansible 에 매개변수를 제공합니다.

/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml

외부 CephFS를 사용하여 Shared File Systems 서비스(manila)를 배포하는 경우 별도의 환경 파일에서 추가 매개변수를 제공합니다.

  • 기본 CephFS의 경우 환경 파일은 /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsnative-config.yaml 입니다.
  • NFS를 통한 CephFS의 경우 환경 파일은 /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml 입니다.

기존 Ceph Storage 클러스터와 오버클라우드의 통합을 구성하려면 사용자 지정 환경 파일을 사용하여 Ceph Storage 클러스터의 세부 정보를 director에 제공해야 합니다. 배포 중에 director는 이러한 환경 파일을 호출합니다.

절차

  1. 사용자 정의 환경 파일을 생성합니다.

    /home/stack/templates/ceph-config.yaml

  2. 파일에 parameter_defaults: 섹션을 추가합니다.

    parameter_defaults:
  3. parameter_defaults 를 사용하여 /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml 에서 재정의하려는 모든 매개변수를 설정합니다. 다음 매개변수를 최소한 설정해야 합니다.

    • CephClientKey: Ceph Storage 클러스터의 client.openstack 사용자의 Ceph 클라이언트 키입니다. 기존 Ceph Storage 클러스터 구성에서 검색한 값입니다. 예를 들어 AQDLOh1VgE6FRAAFzT7Zw+Y9V6JJQAsRnRQ==.
    • CephClusterFSID: Ceph Storage 클러스터의 파일 시스템 ID입니다. 기존 Ceph Storage 클러스터 클러스터 구성에서 검색한 Ceph Storage 클러스터 구성 파일의 fsid 값입니다. 예를 들면 4b5c8c0a-ff60-454b-a1b4-9747aa737d19 입니다.
    • CephExternalMonHost: Ceph Storage 클러스터에 있는 모든 MON 호스트의 IP(예: 172.16.1.7, 172.16.1.8 )의 쉼표로 구분된 목록입니다.

      예를 들면 다음과 같습니다.

      parameter_defaults:
        CephClientKey: <AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==>
        CephClusterFSID: <4b5c8c0a-ff60-454b-a1b4-9747aa737d19>
        CephExternalMonHost: <172.16.1.7, 172.16.1.8>
  4. 선택 사항: RHOSP(Red Hat OpenStack Platform) 클라이언트 사용자 이름과 다음 기본 풀 이름을 Ceph Storage 클러스터와 일치하도록 덮어쓸 수 있습니다.

    • CephClientUserName: <openstack>
    • NovaRbdPoolName: <vms>
    • CinderRbdPoolName: <volumes>
    • GlanceRbdPoolName: <images>
    • CinderBackupRbdPoolName: <backups>
    • GnocchiRbdPoolName: <metrics>
  5. 선택 사항: CephFS를 사용하여 공유 파일 시스템 서비스를 배포하는 경우 다음 기본 데이터 및 메타데이터 풀 이름을 재정의할 수 있습니다.

      ManilaCephFSDataPoolName: <manila_data>
      ManilaCephFSMetadataPoolName: <manila_metadata>
    참고

    이러한 이름이 생성한 풀의 이름과 일치하는지 확인합니다.

  6. 공유 파일 시스템 서비스에 대해 생성한 클라이언트 키를 설정합니다. 해당 키의 기본 Ceph 클라이언트 사용자 이름을 덮어쓸 수 있습니다.

      ManilaCephFSCephFSAuthId: <manila>
      CephManilaClientKey: <AQDQ991cAAAAABAA0aXFrTnjH9aO39P0iVvYyg==>
    참고

    기본 클라이언트 사용자 이름 ManilaCephFSCephFSAuthIdmanila 입니다. CephManilaClientKey 가 항상 필요합니다.

사용자 지정 환경 파일을 생성한 후 오버클라우드를 배포할 때 포함해야 합니다.

추가 리소스

3.3. Ceph Storage를 사용하는 Red Hat OpenStack Platform용 Ceph 컨테이너

NFS Ganesha에서 Red Hat Ceph Storage를 사용하도록 RHOSP(Red Hat OpenStack Platform)를 구성하려면 Ceph 컨테이너가 있어야 합니다.

Red Hat Enterprise Linux 8과 호환되려면 RHOSP 16에 Red Hat Ceph Storage 4 또는 5(Ceph 패키지 14.x 또는 Ceph 패키지 16.x)가 필요합니다. Ceph Storage 4 및 5 컨테이너는 인증이 필요한 레지스트리인 registry.redhat.io 에서 호스팅됩니다. 자세한 내용은 컨테이너 이미지 준비 매개변수를 참조하십시오.

3.4. 오버클라우드 배포

생성한 환경 파일을 사용하여 오버클라우드를 배포합니다.

절차

  • 오버클라우드를 생성하려면 openstack overcloud deploy 명령에 추가 인수가 필요합니다.

    $ openstack overcloud deploy --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
      -e /home/stack/templates/ceph-config.yaml \
      -e --ntp-server pool.ntp.org \
      ...

    이 예제 명령은 다음 옵션을 사용합니다.

  • --templates - 기본 heat 템플릿 컬렉션 /usr/share/openstack-tripleo-heat-templates/ 에서 오버클라우드를 생성합니다.
  • -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml - director를 설정하여 기존 Ceph 클러스터를 오버클라우드에 통합합니다.
  • -e /home/stack/templates/ceph-config.yaml - 사용자 지정 환경 파일을 추가하여 -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml 로 설정된 기본값을 재정의합니다. 이 경우 ceph-ansible 패키지 설치에서 생성한 사용자 지정 환경 파일입니다.
  • --ntp-server pool.ntp.org - NTP 서버를 설정합니다.

3.4.1. CephFS를 사용하여 공유 파일 시스템 서비스의 환경 파일 추가

CephFS에서 Shared File Systems 서비스(manila)를 사용하는 오버클라우드를 배포하는 경우 추가 환경 파일을 추가해야 합니다.

절차

  1. 추가 환경 파일을 생성하고 추가합니다.

    • 기본 CephFS 백엔드 드라이버를 사용하는 오버클라우드를 배포하는 경우 /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsnative-config.yaml 을 추가합니다.
    • NFS를 통해 CephFS를 사용하는 오버클라우드를 배포하는 경우 /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml 을 추가합니다.

      공유를 내보내는 격리된 StorageNFS 네트워크를 사용하여 Ceph-through-NFS 드라이버를 배포하는 것이 좋습니다. 오버클라우드 컨트롤러 노드에 격리된 네트워크를 배포해야 합니다. 이 배포를 활성화하려면 director에 다음 파일 및 역할이 포함됩니다.

      • StorageNFS 네트워크(/usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml)가 포함된 사용자 지정 네트워크 구성 파일의 예입니다. 필요에 따라 이 파일을 검토하고 사용자 지정합니다.
      • ControllerStorageNFS 역할.
  2. 사용하는 CephFS 백엔드에 따라 openstack overcloud deploy 명령을 수정합니다.

    • 기본 CephFS의 경우:

       $ openstack overcloud deploy --templates \
         -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
         -e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsnative-config.yaml \
         -e /home/stack/templates/ceph-config.yaml \
         -e --ntp-server pool.ntp.org
         ...
    • NFS를 통한 CephFS의 경우:

        $ openstack overcloud deploy --templates \
            -n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml \
            -r /home/stack/custom_roles.yaml \
            -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
            -e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml \
            -e /home/stack/templates/ceph-config.yaml \
            -e --ntp-server pool.ntp.org
            ...
      참고

      사용자 지정 ceph-config.yaml 환경 파일은 ceph-ansible-external.yaml 파일의 매개 변수와 manila-cephfsnative-config.yaml 파일 또는 manila-cephfsganesha-config.yaml 파일의 매개변수를 재정의합니다. 따라서 ceph- ansible-external.yaml 및 manila- cephfsnative-config.yaml 또는 manila- cephfsganesha-config.yaml 다음에 배포 명령에 사용자 지정 ceph -config.yaml 환경 파일을 포함합니다.

      환경 파일 예

      parameter_defaults:
          CinderEnableIscsiBackend: false
          CinderEnableRbdBackend: true
          CinderEnableNfsBackend: false
          NovaEnableRbdBackend: true
          GlanceBackend: rbd
          CinderRbdPoolName: "volumes"
          NovaRbdPoolName: "vms"
          GlanceRbdPoolName: "images"
          CinderBackupRbdPoolName: "backups"
          GnocchiRbdPoolName: "metrics"
          CephClusterFSID: <cluster_ID>
          CephExternalMonHost: <IP_address>,<IP_address>,<IP_address>
          CephClientKey: "<client_key>"
          CephClientUserName: "openstack"
          ManilaCephFSDataPoolName: manila_data
          ManilaCephFSMetadataPoolName: manila_metadata
          ManilaCephFSCephFSAuthId: 'manila'
          CephManilaClientKey: '<client_key>'
          ExtraConfig:
              ceph::profile::params::rbd_default_features: '1'

      • < cluster_ID > , < IP_address > 및 < client_key >를 환경에 적합한 값으로 바꿉니다.

추가 리소스

3.4.2. 오브젝트 스토리지용 외부 Ceph Object Gateway(RGW)를 위한 추가 환경 파일 추가

오브젝트 스토리지에 기존 RGW 서비스를 사용하는 오버클라우드를 배포하는 경우 추가 환경 파일을 추가해야 합니다.

절차

  1. 다음 parameter_defaults 를 사용자 지정 환경 파일(예: swift-external-params.yaml )에 추가하고 배포에 맞게 값을 조정합니다.

    parameter_defaults:
       ExternalSwiftPublicUrl: 'http://<Public RGW endpoint or loadbalancer>:8080/swift/v1/AUTH_%(project_id)s'
       ExternalSwiftInternalUrl: 'http://<Internal RGW endpoint>:8080/swift/v1/AUTH_%(project_id)s'
       ExternalSwiftAdminUrl: 'http://<Admin RGW endpoint>:8080/swift/v1/AUTH_%(project_id)s'
       ExternalSwiftUserTenant: 'service'
       SwiftPassword: 'choose_a_random_password'
    참고

    예제 코드 스니펫에는 해당 환경에서 사용하는 값과 다를 수 있는 매개변수 값이 포함되어 있습니다.

    • 원격 RGW 인스턴스가 수신 대기하는 기본 포트는 8080 입니다. 포트는 외부 RGW 구성 방법에 따라 다를 수 있습니다.
    • Overcloud에서 생성된 swift 사용자는 SwiftPassword 매개 변수로 정의된 암호를 사용합니다. rgw_keystone_admin_password 를 사용하여 ID 서비스를 인증하도록 동일한 암호를 사용하도록 외부 RGW 인스턴스를 구성해야 합니다.
  2. 다음 코드를 Ceph 구성 파일에 추가하여 ID 서비스를 사용하도록 RGW를 구성합니다. 환경에 맞게 변수 값을 바꿉니다.

        rgw_keystone_api_version = 3
        rgw_keystone_url = http://<public Keystone endpoint>:5000/
        rgw_keystone_accepted_roles = member, Member, admin
        rgw_keystone_accepted_admin_roles = ResellerAdmin, swiftoperator
        rgw_keystone_admin_domain = default
        rgw_keystone_admin_project = service
        rgw_keystone_admin_user = swift
        rgw_keystone_admin_password = <password_as_defined_in_the_environment_parameters>
        rgw_keystone_implicit_tenants = true
        rgw_keystone_revocation_interval = 0
        rgw_s3_auth_use_keystone = true
        rgw_swift_versioning_enabled = true
        rgw_swift_account_in_url = true
    참고

    director는 기본적으로 ID 서비스에 다음 역할 및 사용자를 생성합니다.

    • rgw_keystone_accepted_admin_roles: ResellerAdmin, swiftoperator
    • rgw_keystone_admin_domain: default
    • rgw_keystone_admin_project: service
    • rgw_keystone_admin_user: swift
  3. 배포와 관련된 기타 환경 파일을 사용하여 추가 환경 파일을 사용하여 오버클라우드를 배포합니다.

    openstack overcloud deploy --templates \
    -e <your_environment_files>
    -e /usr/share/openstack-tripleo-heat-templates/environments/swift-external.yaml
    -e swift-external-params.yaml

4장. 외부 Red Hat Ceph Storage 클러스터 통합 확인

오버클라우드를 배포한 후 RHOSP(Red Hat OpenStack Platform) 서비스가 Red Hat Ceph Storage 클러스터에 쓸 수 있는지 확인합니다.

주의

RHOSP에서는 Ceph 복제 형식의 v2 이상을 사용하지 않습니다. Ceph clone 형식 v2가 활성화된 Ceph Storage 클러스터에서 이미지 또는 볼륨을 삭제하면 예기치 않은 동작이 발생하여 데이터가 손실될 수 있습니다. 따라서 Ceph 복제 형식 v2를 활성화하는 다음 방법 중 하나를 사용하지 마십시오.

  • rbd 기본 복제 형식 설정 = 2
  • ceph osd set-require-min-compat-client mimic 실행

4.1. ID 수집

Red Hat Ceph Storage 클러스터를 통합했는지 확인하려면 먼저 이미지, Compute 인스턴스, 블록 스토리지 볼륨, 파일 공유를 생성하고 해당 ID를 수집해야 합니다.

절차

  1. Image 서비스(glance)로 이미지를 만듭니다. 이미지 생성 방법에 대한 자세한 내용은 이미지 생성 및 관리 가이드의 이미지 가져오기 를 참조하십시오.
  2. 나중에 사용할 수 있도록 이미지 ID를 기록합니다.
  3. Compute(nova) 인스턴스를 만듭니다. 인스턴스를 만드는 방법에 대한 자세한 내용은 인스턴스 생성 및 관리 가이드의 인스턴스 생성을 참조하십시오.
  4. 나중에 사용할 수 있도록 인스턴스 ID를 기록합니다.
  5. 블록 스토리지(cinder) 볼륨을 만듭니다. 블록 스토리지 볼륨을 만드는 방법에 대한 자세 한 내용은 스토리지 가이드에 볼륨 만들기 를 참조하십시오.
  6. 나중에 사용할 수 있도록 볼륨 ID를 기록합니다.
  7. Shared File Systems 서비스(manila)를 사용하여 파일 공유를 생성합니다. 파일 공유를 만드는 방법에 대한 자세한 내용은 스토리지 가이드에서 공유 생성 을 참조하십시오.
  8. 공유의 내보내기 경로를 나열하고 나중에 사용할 접미사에 UUID를 기록합니다. 공유의 내보내기 경로를 나열하는 방법에 대한 자세한 내용은 스토리지 가이드의 공유 목록 및 내보내기 정보 를 참조하십시오.

4.2. Red Hat Ceph Storage 클러스터 확인

외부 Red Hat Ceph Storage 클러스터를 구성하면 풀과 client.openstack 사용자를 생성하여 해당 풀에 액세스합니다. 오버클라우드를 배포한 후 client.openstack 사용자의 자격 증명이 포함된 파일을 사용하여 RHOSP(Red Hat OpenStack Platform) 풀의 콘텐츠를 나열할 수 있습니다.

풀 콘텐츠를 나열하고 Image 서비스(glance) 이미지 ID, Compute(nova) 인스턴스, Block Storage(cinder) 볼륨, Shared File Systems 서비스(manila) 파일 공유가 Ceph Storage 클러스터에 존재하는지 확인합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인하고 stackrc 인증 정보 파일을 가져옵니다.

    $ source ~/stackrc
  2. 사용 가능한 서버를 나열하여 시스템에 있는 노드의 IP 주소를 검색합니다.

    $ openstack server list
    
    +---------------+----------------+---------------+
    | ID | Name | Status | Networks | Image | Flavor |
    +---------------+----------------+---------------+
    | d5a621bd-d109-41ae-a381-a42414397802 | compute-0 | ACTIVE | ctlplane=192.168.24.31 | overcloud-full | compute |
    | 496ab196-d6cb-447d-a118-5bafc5166cf2 | controller-0 | ACTIVE | ctlplane=192.168.24.37 | overcloud-full | controller |
    | c01e730d-62f2-426a-a964-b31448f250b3 | controller-2 | ACTIVE | ctlplane=192.168.24.55 | overcloud-full | controller |
    | 36df59b3-66f3-452e-9aec-b7e7f7c54b86 | controller-1 | ACTIVE | ctlplane=192.168.24.39 | overcloud-full | controller |
    | f8f00497-246d-4e40-8a6a-b5a60fa66483 | compute-1 | ACTIVE | ctlplane=192.168.24.10 | overcloud-full | compute |
  3. SSH를 사용하여 모든 컴퓨팅 노드에 로그인합니다.

    $ ssh heat-admin@192.168.24.31
  4. root 사용자로 전환합니다.

    [heat-admin@compute-0 ~]$ sudo su -
  5. /etc/ceph/ceph.conf/etc/ceph/ceph.client.openstack.keyring 파일이 있는지 확인합니다.

    [root@compute-0 ~]# ls -l /etc/ceph/ceph.conf
    
    -rw-r--r--. 1 root root 1170 Sep 29 23:25 /etc/ceph/ceph.conf
    [root@compute-0 ~]# ls -l /etc/ceph/ceph.client.openstack.keyring
    
    -rw-------. 1 ceph ceph 253 Sep 29 23:25 /etc/ceph/ceph.client.openstack.keyring
  6. 다음 명령을 입력하여 nova_compute 컨테이너가 rbd 명령을 사용하여 적절한 풀의 내용을 나열하도록 강제 적용합니다.

    # podman exec nova_compute /usr/bin/rbd --conf /etc/ceph/ceph.conf --keyring /etc/ceph/ceph.client.openstack.keyring --cluster ceph --id openstack ls vms

    풀 이름은 Ceph Storage 클러스터를 구성할 때 생성한 이미지, VM, 볼륨 및 공유의 풀 이름과 일치해야 합니다. 이미지, Compute 인스턴스, 볼륨 및 공유의 ID는 Gathering ID에 기록된 ID와 일치해야 합니다.

    참고

    ceph-common 패키지에서 제공하는 /usr/bin/rbd 가 기본적으로 오버클라우드 노드에 설치되지 않으므로 example 명령 앞에는 podman exec nova_compute 가 접두사가 있습니다. 그러나 nova_compute 컨테이너에서 사용할 수 있습니다. 명령은 블록 장치 이미지를 나열합니다. 블록 장치 이미지 나열에 대한 자세한 내용은 Ceph Storage 블록 장치 가이드의 블록 장치 이미지 목록 을 참조하십시오.

    다음 예제에서는 Gathering ID의 ID를 사용하여 각 풀에 대한 ID가 있는지 확인하는 방법을 보여줍니다.

    # podman exec nova_compute /usr/bin/rbd --conf /etc/ceph/ceph.conf --keyring /etc/ceph/ceph.client.openstack.keyring --cluster ceph --id openstack ls images | grep 4485d4c0-24c3-42ec-a158-4d3950fa020b
    
    # podman exec nova_compute /usr/bin/rbd --conf /etc/ceph/ceph.conf --keyring /etc/ceph/ceph.client.openstack.keyring --cluster ceph --id openstack ls vms | grep 64bcb731-e7a4-4dd5-a807-ee26c669482f
    
    # podman exec nova_compute /usr/bin/rbd --conf /etc/ceph/ceph.conf --keyring /etc/ceph/ceph.client.openstack.keyring --cluster ceph --id openstack ls volumes | grep aeac15e8-b67f-454f-9486-46b3d75daff4
  7. 공유 파일 시스템 서비스 공유가 있는지 확인하려면 컨트롤러 노드에 로그인해야 합니다.

    # podman exec openstack-manila-share-podman-0 ceph -n client.manila fs subvolume ls cephfs | grep ec99db3c-0077-40b7-b09e-8a110e3f73c1

4.3. 문제 해결 실패 확인

확인 절차가 실패하면 openstack.client 사용자 및 Red Hat Ceph Storage 모니터 IP 또는 호스트 이름의 Ceph 키를 함께 사용하여 RHOSP(Red Hat OpenStack Platform)용으로 생성한 Ceph Storage 풀에서 읽고 쓰고 삭제할 수 있는지 확인합니다.

절차

  1. 이 절차에서 수행해야 하는 입력 양을 줄이려면 컴퓨팅 노드에 로그인하고 rbd 명령의 별칭을 생성합니다.

    $ alias rbd="podman exec nova_compute /usr/bin/rbd --conf /etc/ceph/ceph.conf --keyring /etc/ceph/ceph.client.openstack.keyring --cluster ceph --id openstack"
  2. 테스트 데이터를 풀에 새 오브젝트로 작성할 수 있는지 확인합니다.

    $ rbd create --size 1024 vms/foo
  3. 테스트 데이터가 표시되는지 확인합니다.

    $ rbd ls vms | grep foo
  4. 테스트 데이터를 삭제합니다.

    $ rbd rm vms/foo
참고

이 절차가 실패하는 경우 Ceph Storage 관리자에게 문의하십시오. 이 절차에 성공하면 Compute(nova) 인스턴스, Image 서비스(glance) 이미지, Block Storage(cinder) 볼륨 또는 Shared File Systems 서비스(manila) 공유를 생성할 수 없는 경우 Red Hat 지원에 문의하십시오.

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.