Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

공유 파일 시스템 서비스의 NFS 백엔드 가이드를 통한 CephFS

Red Hat OpenStack Platform 13

OpenStack의 NFS를 통한 CephFS를 사용하여 공유 파일 시스템 서비스 이해, 사용 및 관리

OpenStack Documentation Team

초록

이 가이드에서는 Red Hat OpenStack Platform 환경의 NFS를 통해 Red Hat Ceph File System(CephFS)을 사용하여 Shared File System 서비스(manila)를 설치, 구성 및 확인하는 다양한 절차에 대해 자세히 설명합니다.

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

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

1장. NFS를 통한 CephFS를 사용한 OpenStack Shared File Systems 서비스

RHOSP(Red Hat OpenStack Platform)는 Red Hat Enterprise Linux를 기반으로 프라이빗 또는 퍼블릭 IaaS(서비스로서의 인프라) 클라우드를 구축할 수 있는 기반을 제공합니다. 클라우드 지원 워크로드 개발을 위한 확장성과 내결함성 플랫폼입니다.

NFS를 통한 Ceph 파일 시스템(CephFS)을 사용하는 Shared File Systems 서비스(manila)를 사용하면 클라우드 관리자가 블록 및 오브젝트 스토리지에 사용되는 동일한 Ceph 클러스터를 사용하여 NFS 프로토콜을 통해 파일 공유를 제공할 수 있습니다. 자세한 내용은 스토리지 가이드공유 파일 시스템 서비스 장을 참조하십시오.

이 가이드에서는 NFS를 통한 CephFS 설치, 구성, 배포, 테스트와 관련된 개념 및 절차에 대해 설명합니다.

NFS를 통한 Ceph 파일 시스템(manila)을 사용하는 OpenStack Shared File Systems 서비스(manila)는 Red Hat OpenStack Platform에 내결함성 NFS 공유 서비스를 제공합니다. 자세한 내용은 스토리지 가이드공유 파일 시스템 서비스 장을 참조하십시오.

1.1. NFS를 통한 CephFS 소개

CephFS는 통합 분산 스토리지 플랫폼인 Ceph의 확장성이 뛰어난 오픈 소스 분산 파일 시스템 구성 요소입니다. Ceph는 RDOS(Reliable Autonomic Distributed Object Store)를 사용하여 개체, 블록 및 파일 스토리지를 구현합니다. POSIX 호환인 CephFS는 Ceph 스토리지 클러스터에 대한 파일 액세스를 제공합니다.

공유 파일 시스템 서비스를 사용하면 사용자가 CephFS에 공유를 생성하고 NFS-Ganesha를 통해 NFS 4.1을 사용하여 액세스할 수 있습니다. NFS-Ganesha는 NFS 4.1 프로토콜을 통해 공유 영역에 대한 액세스를 제어하고 클라이언트에 내보냅니다. 공유 파일 시스템 서비스는 OpenStack 내에서 이러한 공유의 라이프사이클을 관리합니다. 클라우드 관리자가 NFS를 통해 CephFS를 사용하도록 서비스를 설정하면 이러한 파일 공유는 CephFS 클러스터에서 제공되지만 익숙한 NFS 공유로 생성되어 액세스됩니다.

1.2. NFS를 통해 CephFS에서 공유 파일 시스템 서비스 사용의 이점

NFS를 통한 CephFS의 Shared File System 서비스(manila)를 사용하면 클라우드 관리자가 블록 및 오브젝트 스토리지에 사용하는 동일한 Ceph 클러스터를 사용하여 대부분의 운영 체제에서 기본적으로 사용할 수 있는 친숙한 NFS 프로토콜을 통해 파일 공유를 제공할 수 있습니다. CephFS는 블록 스토리지(cinder), 오브젝트 스토리지 등과 같은 OpenStack 클라우드의 다른 서비스에 이미 스토리지 백엔드로 사용되는 Ceph 클러스터를 최대화합니다.

참고

Red Hat OpenStack director에서 구성되지 않은 외부에 배포된 Ceph 클러스터에 CephFS를 추가하는 것은 현재 지원되지 않습니다. 현재 director에 하나의 CephFS 백엔드만 정의할 수 있습니다.

Red Hat OpenStack Platform 13은 기술 프리뷰 기능인 CephFS 기본 드라이버와 달리 CephFS NFS 드라이버(NFS-Ganesha)를 완전히 지원합니다.

중요

Red Hat CephFS 기본 드라이버는 기술 프리뷰로만 사용 가능하므로 Red Hat에서 완전히 지원되지 않습니다.

기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.

NFS 배포를 통한 CephFS에서는 Ceph 스토리지 백엔드가 사용자 네트워크와 분리되므로 기본 Ceph 스토리지가 악성 공격 및 예기치 않은 실수에 덜 취약합니다.

공유 파일 시스템 서비스와 같은 컨트롤 플레인 서비스와 통신하는 데 사용되는 데이터 플레인 트래픽 및 API 네트워크에 사용되는 별도의 네트워크는 파일 스토리지를 보다 안전하게 만듭니다.

Ceph 클라이언트는 관리 제어에 있습니다. 최종 사용자는 Ceph 클러스터 스토리지 백엔드에 직접 액세스할 수 없는 NFS 클라이언트(예: 격리된 사용자 VM)를 제어합니다.

1.3. Ceph 파일 시스템 아키텍처

Ceph 파일 시스템(CephFS)은 NFS-Ganesha(NFS v4 프로토콜) 또는 CephFS 기본 드라이버(기술 프리뷰)를 사용하여 NFS-Ganesha와 함께 사용할 수 있는 분산 파일 시스템입니다.

1.3.1. 기본 드라이버가 있는 CephFS

CephFS 기본 드라이버는 OpenStack Shared File System 서비스(manila) 및 Red Hat Ceph Storage를 결합합니다. director를 통해 배포되는 경우 컨트롤러 노드는 manager, metadata servers(MDS) 및 모니터(MON) 및 공유 파일 시스템 서비스와 같은 Ceph 데몬을 호스팅합니다.

컴퓨팅 노드는 하나 이상의 테넌트를 호스팅할 수 있습니다. 사용자 관리 VM(두 개의 NIC가 있는 Gray 박스)이 포함된 흰색 박스로 표시되는 테넌트는 공용 Ceph 스토리지 네트워크를 통해 연결하여 cephmanila 데몬에 액세스합니다. 이 네트워크를 사용하면 Ceph OSD(Object Storage Daemon)에서 제공하는 스토리지 노드의 데이터에 액세스할 수도 있습니다. 두 개의 NIC로 테넌트 부팅 시 호스팅되는 인스턴스(VM)입니다. 하나는 스토리지 공급자 네트워크 전용이고 두 번째는 외부 공급자 네트워크에 대한 테넌트 소유 라우터입니다.

스토리지 공급자 네트워크는 테넌트에서 실행 중인 VM을 공용 Ceph 스토리지 네트워크에 연결합니다. Ceph 공용 네트워크는 Ceph 오브젝트 스토리지 노드, 메타데이터 서버(MDS) 및 컨트롤러 노드에 대한 백엔드 액세스를 제공합니다. CephFS는 네이티브 드라이버를 사용하여 클라이언트 및 서버와 협력하여 할당량을 적용하고 테넌트 격리를 보장하며 보안을 위해 사용합니다. 기본 드라이버가 있는 CephFS는 프라이빗 클라우드의 신뢰할 수 있는 최종 사용자가 있는 환경에서 잘 작동합니다. 이 구성에는 사용자 제어 하에서 실행 중인 소프트웨어가 있어야 제대로 협력하고 작동합니다.

CephFS nfs 토폴로지 기본 드라이버

1.3.2. NFS를 통한 CephFS

OpenStack Shared File Systems 서비스(manila)의 NFS 백엔드를 통한 CephFS는 Ceph 메타데이터 서버(MDS), NFS 게이트웨이(NFS-Ganesha)를 통한 CephFS, Ceph 클러스터 서비스 구성 요소로 구성됩니다. 공유 파일 시스템 서비스의 CephFS NFS 드라이버는 NFS-Ganesha 게이트웨이를 사용하여 CephFS 공유에 대한 NFSv4 프로토콜 액세스를 제공합니다. Ceph MDS 서비스는 파일 시스템의 디렉터리 및 파일 이름을 RADOS 클러스터에 저장된 오브젝트에 매핑합니다. NFS 게이트웨이는 Ceph와 같은 다양한 스토리지 백엔드에서 NFS 파일 공유를 제공할 수 있습니다. NFS-Ganesha 서비스는 Ceph 서비스와 함께 컨트롤러 노드에서 실행됩니다.

두 개 이상의 NIC로 부팅됩니다. 하나는 테넌트 라우터에 연결되고 두 번째 NIC는 NFS-Ganesha 게이트웨이에 직접 연결하는 StorageNFS 네트워크에 연결됩니다. 인스턴스는 NFS 프로토콜을 사용하여 공유를 마운트합니다. Ceph OSD 노드에서 호스팅되는 CephFS 공유는 NFS 게이트웨이를 통해 제공됩니다.

NFS-Ganesha는 사용자 인스턴스가 MDS 및 기타 Ceph 서비스에 직접 액세스할 수 없도록 하여 보안을 향상시킵니다. 인스턴스는 Ceph 데몬에 직접 액세스할 수 없습니다.

CephFS nfs 토폴로지 nfs 드라이버

1.3.2.1. Ceph 서비스 및 클라이언트 액세스

Ceph가 개체 및/또는 블록 스토리지를 제공할 때 배포된 모니터, OSD, Rados Gateway(RGW) 및 관리자 서비스 외에도 CephFS에 Ceph 메타데이터 서비스(MDS)가 필요하며 NFS 프로토콜을 사용하는 기본 CephFS에 대한 게이트웨이로 필요합니다. (사용자를 향한 오브젝트 스토리지의 경우 RGW 서비스도 배포됩니다. 게이트웨이는 CephFS 클라이언트를 실행하여 Ceph 공용 네트워크에 액세스할 수 있으며 최종 사용자 제어가 아닙니다.

NFS-Ganesha는 자체 Docker 컨테이너에서 실행되며, Ceph 공용 네트워크 및 새 격리된 네트워크인 StorageNFS에 모두 인터페이스를 지정합니다. OpenStack director의 구성 가능 네트워크 기능은 이 네트워크를 배포하고 컨트롤러 노드에 연결하는 데 사용됩니다. 그런 다음 클라우드 관리자는 네트워크를 Neutron 공급자 네트워크로 구성합니다.

NFS-Ganesha는 Ceph 공용 네트워크를 통해 CephFS에 액세스하고 StorageNFS 네트워크의 주소를 사용하여 NFS 서비스를 바인딩합니다.

NFS 공유에 액세스하기 위해 스토리지 NFS 네트워크에 연결하는 추가 NIC를 사용하여 사용자 VM(nova 인스턴스)이 프로비저닝됩니다. CephFS 공유의 내보내기 위치는 StorageNFS 네트워크에서 NFS-Ganesha 서버 VIP를 사용하는 표준 NFS IP:<path > 튜플으로 표시됩니다. 사용자 VM에 대한 액세스 제어는 해당 네트워크의 사용자 VM IP를 사용하여 수행됩니다.

Neutron 보안 그룹은 테넌트 1에 속하는 사용자 VM이 StorageNFS 네트워크를 통해 테넌트 2에 속하는 사용자 VM에 액세스하지 못하도록 합니다. 테넌트는 동일한 CephFS 파일 시스템을 공유하지만 사용자 VM은 내보내기 트리의 파일에만 액세스할 수 있으므로 /path/to/share1/ …​. , /path/to/share2/…​.

1.3.2.2. NFS 내결함성을 통한 CephFS의 공유 파일 시스템 서비스

OpenStack director가 Ceph 서비스 데몬을 시작하면 자체 HA(고가용성) 상태를 관리하며 일반적으로 이러한 데몬의 인스턴스가 여러 개 실행됩니다. 반면 이 릴리스에서는 하나의 NFS-Ganesha 인스턴스만 한 번에 파일 공유를 제공할 수 있습니다.

NFS 공유를 통한 CephFS 데이터 경로에서 단일 실패 지점을 방지하기 위해 NFS-Ganesha는 Pacemaker-Corosync 클러스터에서 관리하는 액티브-패시브 설정의 OpenStack 컨트롤러 노드에서 실행됩니다. NFS-Ganesha는 컨트롤러 노드에서 가상 서비스 IP 주소를 사용하는 가상 서비스로 작동합니다.

컨트롤러가 실패하거나 특정 컨트롤러 노드의 서비스가 실패하고 해당 노드에서 복구할 수 없는 경우 Pacemaker-Corosync는 동일한 가상 IP를 사용하여 다른 컨트롤러에서 새 NFS-Ganesha 인스턴스를 시작합니다. 기존 클라이언트 마운트는 공유의 내보내기 위치에 가상 IP를 사용하므로 보존됩니다.

실패 후 기본 NFS 마운트 옵션 설정과 NFS 4.1 이상을 사용하면 TCP 연결이 재설정되고 클라이언트가 다시 연결됩니다. I/O 작업은 장애 조치 중 응답을 일시적으로 중지하지만 실패하지 않습니다. 애플리케이션 I/O도 응답을 중지하지만 장애 조치(failover)가 완료된 후 다시 시작됩니다.Application I/O also stops responding, but resumes after failover completes.

새로운 연결, 새로운 lock-state 등은 서버가 클라이언트가 잠금을 회수할 때까지 대기할 때까지 최대 90초의 유예 기간이 될 때까지 거부됩니다. NFS-Ganesha는 클라이언트 목록을 유지하고 모든 클라이언트가 잠금을 회수한 경우 유예 기간을 일찍 종료합니다.

참고

grace period의 기본값은 90초입니다. 이 값은 NFSv4 Grace_Period 설정 옵션을 통해 튜닝할 수 있습니다.

2장. NFS 설치를 통한 CephFS

2.1. NFS-Ganesha 배포가 포함된 CephFS

OpenStack 환경의 NFS 설치를 통한 일반 Ceph 파일 시스템(CephFS)에는 다음이 포함됩니다.

  • 컨테이너화된 Ceph 메타데이터 서버(MDS), Ceph 모니터(MON), manila, NFS-Ganesha 서비스를 실행하는 OpenStack 컨트롤러 노드. 이러한 서비스 중 일부는 동일한 노드에 공존하거나 하나 이상의 전용 노드가 있을 수 있습니다.
  • Ceph 스토리지 노드에서 실행되는 컨테이너화된 OSD(오브젝트 스토리지 데몬)를 사용하는 Ceph 스토리지 클러스터.
  • NFS 공유 프로비저닝을 위해 테넌트에서 NFS-Ganesha 서비스로의 액세스를 제공하는 격리된 StorageNFS 네트워크입니다.

Shared File System(manila) 서비스는 테넌트가 드라이버 모듈에서 이행하는 파일 시스템 공유를 요청할 수 있는 API를 제공합니다. Red Hat CephFS 드라이버(예: manila.share.drivers.cephfs.driver.CephFSDriver)를 사용하면 공유 파일 시스템 서비스에서 CephFS를 백엔드로 사용할 수 있습니다. Red Hat OpenStack Platform director는 CephFS 공유가 NFS 4.1 프로토콜을 통해 제공되도록 NFS-Ganesha 게이트웨이를 배포하도록 드라이버를 구성합니다. 이 문서에서는 이 구성을 NFS를 통해 CephFS라고 합니다.

OpenStack director를 사용하여 오버클라우드에 CephFS 백엔드로 공유 파일 시스템을 배포하면 필요한 스토리지 네트워크( heat 템플릿에 정의된)가 자동으로 생성됩니다. 네트워크 계획에 대한 자세한 내용은 Director Installation and Usage GuidePlanning Networks 섹션을 참조하십시오.

노드의 /etc/manila/manila.conf 파일을 편집하여 수동으로 공유 파일 시스템 서비스를 구성할 수 있지만 향후 오버클라우드 업데이트에서 Red Hat OpenStack Platform director에서 모든 설정을 덮어쓸 수 있습니다. 공유 파일 시스템 백엔드를 구성하는 데 권장되는 방법은 director를 사용하는 것입니다.

이 섹션에서는 director에서 관리하는 통합 배포에 NFS를 통해 CephFS를 설치하는 방법을 설명합니다.

참고

Red Hat OpenStack director에서 구성되지 않은 외부에 배포된 Ceph 클러스터에 CephFS를 추가하는 것은 현재 지원되지 않습니다. 현재 한 번에 하나의 CephFS 백엔드만 director에 정의할 수 있습니다.

2.1.1. 요구 사항

NFS를 통해 CephFS를 사용하려면 기존 또는 새 OpenStack 환경일 수 있는 Red Hat OpenStack Platform 버전 13 이상이 필요합니다. CephFS는 Red Hat Ceph Storage 버전 3에서 작동합니다. 이러한 환경을 배포하는 방법에 대한 자세한 내용은 Deploying an Overcloud with Containerized Red Hat Ceph 가이드 를 참조하십시오.

이 문서에서는 다음을 가정합니다.

  • 기본 동작과 마찬가지로 공유 파일 시스템 서비스가 컨트롤러 노드에 설치됩니다.
  • NFS-Ganesha 게이트웨이 서비스는 컨트롤러의 노드 Pacemaker 클러스터에 설치됩니다.
  • 공유 파일 시스템 서비스에서 CephFS 백엔드의 단일 인스턴스만 사용됩니다. 단일 CephFS 백엔드와 함께 CephFS 이외의 다른 백엔드를 사용할 수 있습니다.
  • 스토리지 트래픽에 사용되는 OpenStack Platform director에서 생성한 추가 네트워크(StorageNFS)입니다.
  • NFS를 통해 CephFS와 동시에 새로운 Red Hat Ceph Storage 버전 3 클러스터가 구성되어 있습니다.

2.1.2. 파일 공유

파일 공유는 NFS를 통해 OpenStack Shared File System 서비스(manila), Ceph 파일 시스템(CephFS) 및 Ceph 간에 약간 다릅니다.

공유 파일 시스템 서비스는 공유가 개별 파일 시스템 네임스페이스이고 스토리지 단위 또는 공유 및 정의된 크기(예: 할당량을 사용하는 하위 디렉터리)를 제공합니다. 공유 파일 시스템 스토리지는 액세스가 요청될 때 파일 시스템이 설정되기 전에 여러 클라이언트를 활성화합니다(요청할 때 설정된 블록 스토리지).

CephFS를 사용하면 공유는 정의된 할당량과 특정 스토리지 풀 또는 네임스페이스를 가리키는 레이아웃이 있는 디렉터리로 간주됩니다. CephFS 할당량은 디렉터리 크기를 공유 파일 시스템 서비스에서 생성하는 크기 공유로 제한합니다. Ceph 공유에 대한 액세스는 MDS 인증 기능에 따라 결정됩니다.

NFS를 통해 CephFS를 사용하면 파일 공유가 프로비저닝되어 NFS 프로토콜을 통해 액세스할 수 있습니다. NFS 프로토콜에서는 보안도 처리합니다.

2.1.3. NFS를 통해 CephFS에서 사용하는 격리된 네트워크

NFS 배포를 통한 CephFS는 별도의 격리된 네트워크 스토리지 NFS를 사용합니다. 이 네트워크는 사용자가 인프라 트래픽용으로 예약된 스토리지 또는 스토리지 관리 네트워크에 액세스하지 않고도 해당 네트워크의 NFS를 통해 공유를 마운트할 수 있도록 배포됩니다.

네트워크 격리에 대한 자세한 내용은 Director 설치 및 사용 가이드의 https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/13/html/advanced_overcloud_customization/basic-network-isolation 참조하십시오.

2.2. NFS를 통해 CephFS를 사용하여 OpenStack 설치 및 사용자 지정 network_data 파일

NFS를 통해 CephFS를 설치하려면 다음이 포함됩니다.

  1. ceph-ansible 패키지 설치.
  2. openstack overcloud image prepare 명령을 사용하여 오버클라우드 컨테이너 이미지 준비
  3. 사용자 지정 역할 파일(roles_data.yaml) 및 network_data.yaml 파일을 생성합니다.
  4. 사용자 지정 역할 및 환경과 함께 openstack overcloud deploy 명령을 사용하여 Ceph, Shared File System 서비스(manila) 및 CephFS 배포.
  5. 격리된 스토리지 NFS 네트워크 구성 및 기본 공유 유형 생성.

예를 들어 OpenStack 환경에서 표준 stack 사용자를 사용합니다.

작업은 OpenStack 설치 또는 환경 업데이트와 함께 수행해야 합니다.

2.2.1. ceph-ansible 패키지 설치

OpenStack director를 사용하려면 컨테이너화된 Ceph를 배포하기 위해 ceph-ansible 패키지를 언더클라우드 노드에 설치해야 합니다.

절차

  1. 언더클라우드 노드에 로그인합니다.
  2. 상승된 권한으로 yum install 을 사용하여 ceph-ansible 패키지를 설치합니다.

    [stack@undercloud-0 ~]$ sudo yum install -y ceph-ansible
    [stack@undercloud-0 ~]$ sudo yum list ceph-ansible
    ...
    Installed Packages
    ceph-ansible.noarch 3.1.0-0.1.el7 rhelosp-13.

2.2.2. 오버클라우드 컨테이너 이미지 준비

OpenStack에서 모든 서비스가 컨테이너화되므로 openstack overcloud image prepare 명령을 사용하여 Docker 이미지를 오버클라우드에 대비해야 합니다. 추가 옵션으로 이 명령을 실행하면 cephmanila 서비스의 기본 이미지가 Docker 레지스트리에 추가됩니다. Ceph MDS 및 NFS-Ganesha 서비스는 동일한 Ceph 기본 컨테이너 이미지를 사용합니다.

컨테이너 이미지에 대한 자세한 내용은 Director Installation and Usage Guide 의 추가 서비스용 컨테이너 이미지 를 참조하십시오.

절차

  1. 언더클라우드에서 -e 를 사용하여 openstack overcloud image prepare 명령을 실행하여 환경 파일을 포함합니다.

    $ openstack overcloud container image prepare \
      ...
      -e  /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
      -e  /usr/share/openstack-tripleo-heat-templates/environments/services-docker/manila.yaml \
      ...
  2. grep을 사용하여 containers-default-parameters.yaml 파일에서 cephmanila 서비스의 기본 이미지를 사용할 수 있는지 확인합니다.

    [stack@undercloud-0 ~]$ grep -E 'ceph|manila' composable_roles/docker-images.yaml
    DockerCephDaemonImage: 192.168.24.1:8787/rhceph:3-12
    DockerManilaApiImage: 192.168.24.1:8787/rhosp13/openstack-manila-api:2018-08-22.2
    DockerManilaConfigImage: 192.168.24.1:8787/rhosp13/openstack-manila-api:2018-08-22.2
    DockerManilaSchedulerImage: 192.168.24.1:8787/rhosp13/openstack-manila-scheduler:2018-08-22.2
    DockerManilaShareImage: 192.168.24.1:8787/rhosp13/openstack-manila-share:2018-08-22.2

2.2.2.1. 사용자 정의 역할 파일 생성

ControllerStorageNFS 사용자 지정 역할은 격리된 StorageNFS 네트워크를 설정하는 데 사용됩니다. 이 역할은 StorageNFS 네트워크 및 CephNfs 서비스( OS::TripleO::Services:CephNfs로 표시됨)를 추가하는 기본 Controller.yaml 역할 파일과 유사합니다.

[stack@undercloud ~]$ cd /usr/share/openstack-tripleo-heat-templates/roles
[stack@undercloud roles]$ diff Controller.yaml ControllerStorageNfs.yaml
16a17
> 	- StorageNFS
50a45
> 	- OS::TripleO::Services::CephNfs

openstack overcloud roles generate 명령에 대한 자세한 내용은 Advanced Overcloud Customization GuideRoles 섹션 을 참조하십시오.

절차

openstack overcloud roles generate 명령은 -o 뒤에 지정된 서비스를 포함하여 사용자 지정 roles_data.yaml 파일을 생성합니다. 아래 예제에서 생성된 roles_data.yaml 파일에는 ControllerStorageNfs,Compute, CephStorage의 서비스가 있습니다.

참고

기존 roles_data.yaml 파일이 있는 경우 이를 수정하여 ControllerStorageNfs,Compute, CephStorage 서비스를 구성 파일에 추가합니다. Advanced Overcloud Customization 가이드의 Roles 섹션 을 참조하십시오.

  1. 언더클라우드 노드에 로그인합니다.
  2. openstack overcloud roles generate 명령을 사용하여 roles_data.yaml 파일을 생성합니다.

    [stack@undercloud ~]$ openstack overcloud roles generate --roles-path /usr/share/openstack-tripleo-heat-templates/roles -o /home/stack/roles_data.yaml ControllerStorageNfs Compute CephStorage

2.2.3. 업데이트된 환경 배포

환경을 배포할 준비가 되면 NFS-Ganesha를 사용하여 CephFS를 실행하는 데 필요한 사용자 지정 환경 및 역할과 함께 openstack overcloud deploy 명령을 사용합니다. 이러한 환경 및 역할은 아래에 설명되어 있습니다.

오버클라우드 배포 명령에는 다른 필수 옵션 외에 아래 옵션이 있습니다.

동작옵션추가 정보

오버클라우드 컨테이너 이미지 prepare 명령에서 업데이트된 기본 컨테이너를 추가합니다.

-e /home/stack/containers-default-parameters.yaml

2.2.2절. “오버클라우드 컨테이너 이미지 준비”

network_data_ganesha.yaml을 사용하여 추가 스토리지 NFS 네트워크를 추가합니다.

-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml

2.2.3.1절. “StorageNFS 및 network_data_ganesha.yaml 파일”

이전 섹션의 roles_data.yaml 파일에 정의된 사용자 지정 역할을 추가합니다.

-r /home/stack/roles_data.yaml

2.2.2.1절. “사용자 정의 역할 파일 생성”

ceph-ansible.yaml을 사용하여 Ceph 데몬 배포

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

Containzerized Red Hat Ceph로 Overcloud 배포 시작 https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/13/html-single/deploying_an_overcloud_with_containerized_red_hat_ceph/#Creating_the_Overcloud

ceph-mds.yaml을 사용하여 Ceph 메타데이터 서버 배포

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

Containzerized Red Hat Ceph로 Overcloud 배포 시작 https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/13/html-single/deploying_an_overcloud_with_containerized_red_hat_ceph/#Creating_the_Overcloud

NFS 백엔드를 통해 CephFS를 사용하여 manila 서비스를 배포합니다. director를 통해 NFS-Ganesha를 구성합니다.

-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

2.2.3.2절. “manila-cephfsganesha-config.yaml

아래 예는 NFS-Ganesha, Ceph 클러스터, Ceph MDS 및 isolated StorageNFS 네트워크를 통해 CephFS를 배포하는 옵션을 통합하는 openstack overcloud deploy 명령 을 보여줍니다.

[stack@undercloud ~]$ openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates  \
-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml \
-r /home/stack/roles_data.yaml \
-e /home/stack/containers-default-parameters.yaml   \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml   \
-e  /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml  \
-e /home/stack/network-environment.yaml  \
-e/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

openstack overcloud deploy 명령에 대한 자세한 내용은 Director 설치 및 사용 가이드 의 CLI 툴을 사용하여 Overcloud 생성 섹션을 참조하십시오.

2.2.3.1. StorageNFS 및 network_data_ganesha.yaml 파일

구성 가능 네트워크를 사용하면 사용자 지정 네트워크를 정의하고 모든 역할에 할당할 수 있습니다. 표준 network_data.yaml 파일을 사용하는 대신 network_data_ganesha.yaml 파일을 사용하여 StorageNFS 구성 가능 네트워크를 구성합니다. 이러한 두 역할은 모두 /usr/share/openstack-tripleo-heat-templates 디렉터리에서 사용할 수 있습니다.

network_data_ganesha.yaml 파일에는 격리된 StorageNFS 네트워크를 정의하는 추가 섹션이 포함되어 있습니다. 기본 설정은 대부분의 설치에서 작동하지만 VLAN ID, 서브넷 등 네트워크 설정을 추가하려면 YAML 파일을 계속 편집해야 합니다.

name: StorageNFS
enabled: true
vip: true
ame_lower: storage_nfs
vlan: 70
ip_subnet: '172.16.4.0/24'
allocation_pools: [{'start': '172.16.4.4', 'end': '172.16.4.250'}]
ipv6_subnet: 'fd00:fd00:fd00:7000::/64'
ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::10', 'end': 'fd00:fd00:fd00:7000:ffff:ffff:ffff:fffe'}]

구성 가능 네트워크에 대한 자세한 내용은 Advanced Overcloud Customization Guide 의 Composable Networks 사용 섹션을 참조하십시오.

2.2.3.2. manila-cephfsganesha-config.yaml

CephFS 백엔드를 정의하는 통합 환경 파일은 언더클라우드 노드의 다음 경로에 있습니다.

/usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

manila-cephfsganesha-config.yaml 환경 파일에는 공유 파일 시스템 서비스와 관련된 설정이 포함되어 있습니다. 백엔드 기본 설정은 대부분의 환경에서 작동해야 합니다. 이 예에서는 공유 파일 시스템 서비스를 배포할 때 director에서 사용하는 기본값을 보여줍니다.

[stack@undercloud ~]$ cat /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
# A Heat environment file which can be used to enable a
# a Manila CephFS-NFS driver backend.
resource_registry:
  OS::TripleO::Services::ManilaApi: ../docker/services/manila-api.yaml
  OS::TripleO::Services::ManilaScheduler: ../docker/services/manila-scheduler.yaml
  # Only manila-share is pacemaker managed:
  OS::TripleO::Services::ManilaShare: ../docker/services/pacemaker/manila-share.yaml
  OS::TripleO::Services::ManilaBackendCephFs: ../puppet/services/manila-backend-cephfs.yaml
  # ceph-nfs (ganesha) service is installed and configured by ceph-ansible
  # but it's still managed by pacemaker
  OS::TripleO::Services::CephNfs: ../docker/services/ceph-ansible/ceph-nfs.yaml

parameter_defaults:
  ManilaCephFSBackendName: cephfs 1
  ManilaCephFSDriverHandlesShareServers: false 2
  ManilaCephFSCephFSAuthId: 'manila' 3
  ManilaCephFSCephFSEnableSnapshots: false 4
  # manila cephfs driver supports either native cephfs backend - 'CEPHFS'
  # (users mount shares directly from ceph cluster), or nfs-ganesha backend -
  # 'NFS' (users mount shares through nfs-ganesha server)
  ManilaCephFSCephFSProtocolHelperType: 'NFS'

parameter_defaults 헤더는 구성의 시작을 나타냅니다. 특히 이 헤더 아래의 설정을 사용하면 resource_registry 에 설정된 기본값을 재정의할 수 있습니다. 여기에는 CephFS 백엔드의 기본값을 설정하는 OS::Tripleo::Services::ManilaBackendCephFs 에서 설정한 값이 포함됩니다.

1
ManilaCephFSBackendName 은 CephFS 백엔드의 manila 구성 이름을 설정합니다. 이 경우 기본 백엔드 이름은 cephfs 입니다.
2
ManilaCephFSDriverHandlesShareServers 는 공유 서버의 라이프사이클을 제어합니다. false 로 설정하면 드라이버가 라이프사이클을 처리하지 않습니다. 이 옵션이 지원되는 유일한 옵션입니다.
3
ManilaCephFSAuthId 는 director에서 manila 서비스에서 Ceph 클러스터에 액세스할 수 있도록 생성한 Ceph 인증 ID를 정의합니다.
4
ManilaCephFSEnableSnapshots는 스냅샷 활성화를 제어합니다. false 값은 스냅샷이 활성화되지 않음을 나타냅니다. 이 기능은 현재 지원되지 않습니다.

환경 파일에 대한 자세한 내용은 Advanced Overcloud Customization 가이드의 환경 파일 을 참조하십시오.

2.2.4. 배포 후 구성 완료

사용자가 액세스할 수 있도록 하려면 두 개의 배포 후 구성 항목을 완료해야 합니다.

  • neutron StorageNFS 네트워크는 격리된 데이터 센터 스토리지 NFS 네트워크에 매핑되어야 하며,
  • 기본 공유 유형을 생성해야 합니다.

이러한 단계가 완료되면 테넌트 컴퓨팅 인스턴스에서 NFS 공유를 생성하고, 액세스할 수 있으며 마운트할 수 있습니다.

2.2.4.1. 격리된 네트워크 구성

새 isolated StorageNFS 네트워크를 neutron-shared 공급자 네트워크에 매핑해야 합니다. Compute VM은 이 neutron 네트워크에 연결하여 NFS-Ganesha 게이트웨이에서 제공하는 공유 내보내기 위치에 액세스합니다.

공유 파일 시스템 서비스를 통한 네트워크 보안에 대한 자세한 내용은 보안 및 Hardening 가이드의 공유 파일 시스템 서비스 섹션을 참조하십시오.

절차

openstack network create 명령은 StorageNFS neutron 네트워크의 구성을 정의합니다. 다음 옵션을 사용하여 이 명령을 실행합니다.

  • --provider-physical-network 의 경우 tripleo-heat-templates의 NeutronBridgeMappings를 통해 br-isolated 브릿지에 대해 다른 태그를 설정하지 않은 경우 기본값 datacentre 를 사용합니다.
  • --provider-segment 값의 경우 Heat 템플릿에서 StorageNFS isolated 네트워크에 설정된 vlan 값을 사용합니다. /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml 이 값은 배포자가 격리된 네트워크 정의를 수정하지 않은 한 70입니다.
  • --provider-network-type 의 경우 vlan 값을 사용합니다.

이 명령을 사용하려면 다음을 수행합니다.

  1. 언더클라우드 노드에서 다음을 수행합니다.

    [stack@undercloud ~]$ source ~/overcloudrc
  2. 언더클라우드 노드에서 openstack network create 명령을 실행하여 StorageNFS 네트워크를 생성합니다.

    [stack@undercloud-0 ~]$ openstack network create StorageNFS --share --provider-network-type vlan --provider-physical-network datacentre  --provider-segment 70
    +---------------------------+--------------------------------------+
    | Field                   	| Value
    +---------------------------+--------------------------------------+
    | admin_state_up          	| UP
    | availability_zone_hints   |
    | availability_zones      	|
    | created_at              	| 2018-09-17T21:12:49Z
    | description             	|
    | dns_domain              	| None
    | id                      	| cd272981-0a5e-4f3d-83eb-d25473f5176e
    | ipv4_address_scope       	| None
    | ipv6_address_scope      	| None
    | is_default              	| False
    | is_vlan_transparent   	  | None
    | mtu                   	  | 1500
    | name                    	| StorageNFS
    | port_security_enabled   	| True
    | project_id            	  | 3ca3408d545143629cd0ec35d34aea9c
    | provider-network-type 	  | vlan
    | provider-physical-network | datacentre
    | provider-segment          | 70
    | qos_policy_id         	  | None
    | revision_number       	  | 3
    | router:external       	  | Internal
    | segments                	| None
    | shared                  	| True
    | status                  	| ACTIVE
    | subnets                 	|
    | tags                    	|
    | updated_at              	| 2018-09-17T21:12:49Z
    +---------------------------+--------------------------------------+

2.2.4.2. 공유 공급자 스토리지 NFS 네트워크 설정

neutron 공유 공급자 네트워크에 해당 StorageNFSSubnet을 생성합니다. 서브넷이 언더클라우드의 storage_nfs_subnet과 동일하지만 이 서브넷의 할당 범위와 해당 언더클라우드 서브넷의 할당 범위가 겹치지 않는지 확인합니다. 이 서브넷은 NFS 공유를 제공하기 위해 전용되므로 게이트웨이가 필요하지 않습니다.

요구 사항

  • 할당 풀의 시작 및 종료 IP 범위
  • 서브넷 IP 범위

절차

  1. 오버클라우드 노드에 로그인합니다.
  2. 샘플 명령을 사용하여 네트워크를 프로비저닝하고 필요한 경우 값을 업데이트합니다.

    1. start=172.16.4.150,end=172.16.4.250 IP 값을 네트워크용 IP 값으로 바꿉니다.
    2. 172.16.4.0/24 서브넷 범위를 네트워크에 대한 올바른 서브넷 범위로 바꿉니다.
[stack@undercloud-0 ~]$ openstack subnet create --allocation-pool start=172.16.4.150,end=172.16.4.250 --dhcp --network StorageNFS --subnet-range 172.16.4.0/24 --gateway none StorageNFSSubnet
+-------------------+--------------------------------------+
| Field         	  | Value
+-------------------+--------------------------------------+
| allocation_pools  | 172.16.4.150-172.16.4.250
| cidr            	| 172.16.4.0/24
| created_at    	  | 2018-09-17T21:22:14Z
| description   	  |
| dns_nameservers   |
| enable_dhcp   	  | True
| gateway_ip    	  | None
| host_routes   	  |
| id            	  | 8c696d06-76b7-4d77-a375-fd2e71e3e480
| ip_version    	  | 4
| ipv6_address_mode | None
| ipv6_ra_mode  	  | None
| name          	  | StorageNFSSubnet
| network_id      	| cd272981-0a5e-4f3d-83eb-d25473f5176e
| project_id      	| 3ca3408d545143629cd0ec35d34aea9c
| revision_number   | 0
| segment_id    	  | None
| service_types 	  |
| subnetpool_id 	  | None
| tags          	  |
| updated_at    	  | 2018-09-17T21:22:14Z
+-------------------+--------------------------------------+

2.2.4.3. 기본 공유 유형 설정

공유 파일 시스템 서비스를 사용하면 특정 설정으로 공유를 생성하는 데 사용할 수 있는 공유 유형을 정의할 수 있습니다. Block Storage 볼륨 유형과 같은 공유 유형이 작동합니다. 각 유형에는 연결된 설정(예: 추가 사양)이 있으며 공유 생성 중에 유형을 호출하는 경우 해당 설정이 적용됩니다.

OpenStack director에는 기본 공유 유형이 필요합니다. 사용자가 액세스할 수 있도록 클라우드를 열기 전에 이 기본 공유 유형을 만들어야 합니다. NFS가 있는 CephFS의 경우 manila type-create 명령을 사용합니다.

manila type-create default false

공유 유형에 대한 자세한 내용은 스토리지 가이드의 공유 유형 만들기 및 관리 섹션을 참조하십시오.

3장. NFS 배포를 통한 CephFS 확인

NFS를 통해 CephFS를 OpenStack Shared File System 서비스(manila)의 백엔드로 배포하면 오버클라우드 환경에 새 요소가 추가됩니다.

새 오버클라우드 요소는 다음과 같습니다.

  • StorageNFS 네트워크
  • 컨트롤러의 Ceph MDS 서비스
  • 컨트롤러의 NFS-Ganesha 서비스

NFS를 통해 CephFS에서 공유 파일 시스템 서비스 를 사용하는 방법에 대한 자세한 내용은 스토리지 가이드 의 공유 파일 시스템 서비스 장을 참조하십시오.

클라우드 관리자는 서비스 사용자가 사용할 수 있도록 하기 전에 NFS 환경을 통해 CephFS의 안정성을 확인해야 합니다.

사전 요구 사항

3.1. 격리된 StorageNFS 네트워크 생성 확인

NFS를 통해 CephFS를 공유 파일 서비스 시스템 백엔드로 배포하는 데 사용되는 network_data_ganesha.yaml 파일은 StorageNFS VLAN을 생성합니다.

- name: StorageNFS
  enabled: true
  vip: true
  name_lower: storage_nfs
  vlan: 310
  ip_subnet: '172.16.4.0/24'
  allocation_pools: [{'start': '172.16.4.4', 'end': '172.16.4.250'}]
  ipv6_subnet: 'fd00:fd00:fd00:7000::/64'
  IPv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::10', 'end': 'fd00:fd00:fd00:7000:ffff:ffff:ffff:fffe'}]

isolated StorageNFS 네트워크가 있는지 확인하려면 다음 단계를 완료합니다.

절차

  1. 오버클라우드의 컨트롤러 중 하나에 로그인합니다.
  2. 다음 명령을 실행하여 연결된 네트워크를 확인하고 network_data_ganesha.yaml 에 설정된 VLAN의 존재를 확인합니다.

    $ ip a
    15: vlan310: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ether 32:80:cf:0e:11:ca brd ff:ff:ff:ff:ff:ff
        inet 172.16.4.4/24 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet 172.16.4.7/32 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet6 fe80::3080:cfff:fe0e:11ca/64 scope link
           valid_lft forever preferred_lft forever

3.2. Ceph MDS 서비스 확인

systemctl status 명령을 사용하여 Ceph MDS 서비스 상태를 확인합니다.

절차

  1. 모든 컨트롤러에서 다음 명령을 실행하여 MDS Docker 컨테이너의 상태를 확인합니다.

    $ systemctl status ceph-mds@<CONTROLLER-HOST>

    예제:

    ceph-mds@controller-0.service - Ceph MDS
       Loaded: loaded (/etc/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2018-09-18 20:11:53 UTC; 6 days ago
     Main PID: 65066 (docker-current)
       CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@controller-0.service
               └─65066 /usr/bin/docker-current run --rm --net=host --memory=4g --cpu-quota=100000 -v /var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v /var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/...

3.3. Ceph 클러스터 상태 확인

Ceph 클러스터 상태를 확인하려면 다음 단계를 완료합니다.

절차

  1. 활성 컨트롤러에 로그인합니다.
  2. 다음 명령을 실행합니다.

    $ sudo ceph -s
    
    cluster:
        id: 3369e280-7578-11e8-8ef3-801844eeec7c
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum overcloud-controller-1,overcloud-controller-2,overcloud-controller-0
        mgr: overcloud-controller-1(active), standbys: overcloud-controller-2, overcloud-controller-0
        mds: cephfs-1/1/1 up  {0=overcloud-controller-0=up:active}, 2 up:standby
        osd: 6 osds: 6 up, 6 in
    참고

    대기 중 하나의 활성 MDS 및 두 개의 MDS가 있습니다.

  3. Ceph 파일 시스템의 상태를 자세히 확인하려면 < cephfs >가 Ceph 파일 시스템의 이름인 다음 명령을 실행합니다.

    $ sudo ceph fs ls
    
    name: cephfs, metadata pool: manila_metadata, data pools: [manila_data]

3.4. NFS-Ganesha 및 manila-share 서비스 상태 확인

NFS-Ganesha 및 manila-share 서비스의 상태를 확인하려면 다음 단계를 완료합니다.

절차

  1. 컨트롤러 중 하나에서 다음 명령을 실행하여 ceph-nfsopenstack-manila-share 가 시작되었는지 확인합니다.

    $ pcs status
    
    ceph-nfs       (systemd:ceph-nfs@pacemaker):   Started overcloud-controller-1
    
    Docker container: openstack-manila-share [192.168.24.1:8787/rhosp13/openstack-manila-share:pcmklatest]
       openstack-manila-share-docker-0      (ocf::heartbeat:docker):        Started overcloud-controller-1

3.5. manila-api 서비스 확인 스케줄러 및 서비스 공유

manila-api 서비스에서 스케줄러 및 서비스를 승인하는지 확인하려면 다음 단계를 완료합니다.

절차

  1. 언더클라우드에 로그인합니다.
  2. 다음 명령을 실행합니다.

    $ source /home/stack/overcloudrc
  3. 다음 명령을 실행하여 manila-schedulermanila-share 가 활성화되었는지 확인합니다.

    $ manila service-list
    
    | Id | Binary          | Host             | Zone | Status | State | Updated_at |
    
    | 2 | manila-scheduler | hostgroup        | nova | enabled | up | 2018-08-08T04:15:03.000000 |
    | 5 | manila-share | hostgroup@cephfs | nova | enabled | up | 2018-08-08T04:15:03.000000 |

법적 공지

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.