9장. director를 사용하여 다양한 워크로드에 대한 성능 계층 정의
RHOSP(Red Hat OpenStack Platform) director는 Red Hat Ceph Storage 성능 계층을 배포합니다. Ceph Storage CRUSH 규칙은 CephPools 매개변수와 결합하여 장치 클래스 기능을 사용합니다. 이렇게 하면 성능 요구 사항이 다른 워크로드를 수용하기 위해 서로 다른 계층을 구축할 수 있습니다.
예를 들어 일반 워크로드에 대해 HDD 클래스와 고성능 로드를 위해 SSD를 통해서만 데이터를 배포하는 SSD 클래스를 정의할 수 있습니다. 이 시나리오에서는 새 블록 스토리지 볼륨을 생성할 때 HDD 또는 SSD 중 하나의 성능 계층을 선택할 수 있습니다.
CRUSH 규칙 생성에 대한 자세한 내용은 CRUSH 계층 구조 구성을 참조하십시오.
기존 환경에서 성능 계층을 정의하면 Ceph Storage 클러스터에서 데이터가 이동할 수 있습니다. director는 스택 업데이트 중에 cephadm 을 사용합니다. cephadm 애플리케이션에는 풀이 존재하고 데이터가 포함되어 있는지 확인하는 논리가 없습니다. 풀과 연결된 기본 CRUSH 규칙을 변경하면 데이터 이동이 발생합니다. 풀에 많은 양의 데이터가 포함된 경우 해당 데이터가 이동합니다.
노드 추가 또는 제거를 위한 지원 또는 권장 사항이 필요한 경우 Red Hat 지원에 문의하십시오.
Ceph Storage는 디스크 유형을 자동으로 감지하고 해당 장치 클래스에 할당합니다. Linux 커널에서 노출하는 하드웨어 속성에 따라 HDD, SSD 또는 NVMe 중 하나를 사용합니다.
사전 요구 사항
- 새 배포의 경우 RHCS(Red Hat Ceph Storage) 버전 5.2 이상을 사용하십시오.
9.1. 성능 계층 구성 링크 복사링크가 클립보드에 복사되었습니다!
다른 Red Hat Ceph Storage 성능 계층을 배포하려면 CRUSH 맵 세부 정보가 포함된 새 환경 파일을 생성하여 배포 명령에 포함합니다. director는 이 기능에 대한 특정 매개변수를 노출하지 않지만 tripleo-ansible 예상 변수를 생성할 수 있습니다.
성능 계층 구성은 CRUSH 계층 구조와 결합할 수 있습니다. CRUSH 규칙 생성에 대한 자세한 내용은 CRUSH 계층 구조 구성 을 참조하십시오.
예제 절차에서 각 Ceph Storage 노드에는 세 개의 OSD가 포함되어 있습니다. sdb 및 sdc 는 회전 디스크이고 sdc 는 SSD입니다. Ceph에서 올바른 디스크 유형을 자동으로 감지합니다. 그런 다음 두 개의 CRUSH 규칙인 HDD 및 SSD를 구성하여 두 개의 장치 클래스에 매핑합니다.
HDD 규칙은 기본값이며 다른 규칙으로 풀을 구성하지 않는 한 모든 풀에 적용됩니다.
마지막으로 fastpool 이라는 추가 풀을 생성하여 SSD 규칙에 매핑합니다. 이 풀은 궁극적으로 Block Storage(cinder) 백엔드를 통해 노출됩니다. 이 블록 스토리지 백엔드를 사용하는 모든 워크로드는 SSD에서 빠른 성능을 위해서만 지원합니다. 이를 활용하여 데이터 또는 볼륨에서 부팅할 수 있습니다.
- 경고
-
기존 환경에서 성능 계층을 정의하면 Ceph 클러스터에서 대규모 데이터가 이동할 수 있습니다. 스택 업데이트 중에 director가 트리거하는
cephadm에는 풀이 이미 Ceph 클러스터에 정의되어 있고 데이터가 포함되어 있는지 확인하는 논리가 없습니다. 즉, 풀과 연결된 기본 CRUSH 규칙을 변경하면 데이터 이동이 발생하기 때문에 기존 환경에서 성능 계층을 정의하는 것이 위험할 수 있습니다. 노드 추가 또는 제거를 위한 지원 또는 권장 사항이 필요한 경우 Red Hat 지원에 문의하십시오.
프로세스
-
stack사용자로 언더클라우드 노드에 로그인합니다. -
Ceph 구성 매개변수 및 장치 클래스 변수를 포함하도록
/home/stack/templates/ceph-config.yaml과 같은 환경 파일을 생성합니다. 또는 기존 환경 파일에 다음 구성을 추가할 수 있습니다. CephCrushRules매개변수를 추가합니다.crush_rules매개변수에는 사용자가 정의한 각 클래스에 대한 규칙이 포함되어야 합니다. 새 풀을 생성할 때 규칙이 지정되지 않은 경우 Ceph에서 기본값으로 사용할 규칙이 선택됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow CephPools매개변수를 추가합니다.-
rule_name매개변수를 사용하여 기본 규칙을 사용하지 않는 각 풀의 계층을 지정합니다. 다음 예에서fastpool풀은 빠른 계층으로 구성된 SSD 장치 클래스를 사용하여 블록 스토리지 볼륨을 관리합니다. CinderRbdExtraPools매개변수를 사용하여fastpool을 블록 스토리지 백엔드로 구성합니다.CephPools: - name: fastpool rule_name: SSD application: rbd CinderRbdExtraPools: fastpoolCephPools: - name: fastpool rule_name: SSD application: rbd CinderRbdExtraPools: fastpoolCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
다음 예제를 사용하여 환경 파일에 올바른 값이 포함되어 있는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud deploy명령에 새 환경 파일을 포함합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow &
lt;other_overcloud_environment_files>를 배포의 일부인 다른 환경 파일 목록으로 바꿉니다.
기존 Ceph 클러스터에 환경 파일을 적용하면 기존 Ceph 풀이 새 규칙으로 업데이트되지 않습니다. 따라서 배포가 완료된 후 다음 명령을 입력하여 규칙을 지정된 풀로 설정해야 합니다.
ceph osd pool set <pool> crush_rule <rule>
$ ceph osd pool set <pool> crush_rule <rule>
- <pool>을 새 규칙을 적용할 풀 이름으로 바꿉니다.
-
<rule>을
crush_rules매개변수로 지정한 규칙 이름 중 하나로 바꿉니다.
이 명령으로 변경하는 모든 규칙에 대해 기존 항목을 업데이트하거나 기존 템플릿의 CephPools 매개변수에 새 항목을 추가합니다.
CephPools:
- name: <pool>
rule_name: <rule>
application: rbd
CephPools:
- name: <pool>
rule_name: <rule>
application: rbd