11.8. DPDK를 사용하는 HCI 오버클라우드 생성
최적화된 리소스 사용을 위해 Compute 및 Ceph Storage 서비스를 공동 배치하고 구성하여 하이퍼컨버지드 노드를 사용하여 NFV 인프라를 배포할 수 있습니다.
하이퍼 컨버지드 인프라(HCI)에 대한 자세한 내용은 하이퍼컨버지드 인프라 배포를 참조하십시오.
다음 섹션에서는 다양한 구성의 예를 제공합니다.
11.8.1. NUMA 노드 구성 예
성능 향상을 위해 NUMA-0 및 VNF와 같은 하나의 NUMA 노드에 테넌트 네트워크와 Ceph 개체 서비스 데몬(예: NUMA-1)을 다른 NUMA 노드에 배치하십시오.
CPU 할당:
NUMA-0 | NUMA-1 |
---|---|
Ceph OSD 수 * 4 HT | VNF 및 비NFV VM용 게스트 vCPU |
DPDK lcore - 2 HT | DPDK lcore - 2 HT |
DPDK PMD - 2 HT | DPDK PMD - 2 HT |
CPU 할당의 예:
NUMA-0 | NUMA-1 | |
---|---|---|
Ceph OSD | 32,34,36,38,40,42,76,78,80,82,84,86 | |
DPDK-lcore | 0,44 | 1,45 |
DPDK-pmd | 2,46 | 3,47 |
Nova | 5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87 |
11.8.2. Ceph 구성 파일 예
이 섹션에서는 샘플 Red Hat Ceph Storage 구성 파일에 대해 설명합니다. Red Hat OpenStack Platform 환경에 적합한 값을 대체하여 구성 파일을 모델링할 수 있습니다.
[osd] osd_numa_node = 0 # 1 osd_memory_target_autotune = true # 2 [mgr] mgr/cephadm/autotune_memory_target_ratio = 0.2 # 3
다음 매개 변수를 사용하여 Ceph OSD(오브젝트 스토리지 데몬) 프로세스의 CPU 리소스를 할당합니다. 여기에 표시된 값은 예입니다. 워크로드 및 하드웨어에 따라 값을 적절하게 조정합니다.
- 1
osd_numa_node
: Ceph 프로세스의 선호도를 NUMA 노드로 설정합니다(예:NUMA-0
의 경우0
,NUMA-1
의 경우1
등).-1
은 선호도를 NUMA 노드로 설정합니다.이 예에서
osd_numa_node
는NUMA-0
으로 설정됩니다. 11.8.3절. “DPDK 구성 파일의 예” 에 표시된 대로IsolCpusList
에는OvsPmdCoreList
의 요소가 제거된 후NUMA-1
의 홀수 CPU가 포함되어 있습니다. 대기 시간에 민감한 Compute 서비스(nova) 워크로드는NUMA-1
에서 호스팅되므로NUMA-0
에서 Ceph 워크로드를 격리해야 합니다. 이 예에서는 stroage 네트워크의 디스크 컨트롤러 및 네트워크 인터페이스가NUMA-0
에 있다고 가정합니다.- 2
osd_memory_target_autotune
: true로 설정하면 OSD 데몬이osd_memory_target
구성 옵션을 기반으로 메모리 사용을 조정합니다.- 3
autotune_memory_target_ratio
: OSD에 메모리를 할당하는 데 사용됩니다. 기본값은 Cryostat입니다
.시스템의 총 RAM의 70%는 시작점이며, 자동 조정되지 않은 Ceph 데몬이 사용하는 메모리는 모두 차감됩니다.
osd_memory_target_autotune
이 모든 OSD에 대해 true인 경우 나머지 메모리는 OSD로 나뉩니다. HCI 배포의 경우 Compute 서비스에 더 많은 메모리를 사용할 수 있도록mgr/cephadm/autotune_memory_target_ratio
를0.2
로 설정할 수 있습니다. 각 OSD에 5GB 이상의 메모리가 있는지 확인하기 위해 필요에 따라 조정합니다.
11.8.3. DPDK 구성 파일의 예
parameter_defaults: ComputeHCIParameters: KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=240 intel_iommu=on iommu=pt # 1 isolcpus=2,46,3,47,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87" TunedProfileName: "cpu-partitioning" IsolCpusList: # 2 ”2,46,3,47,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51, 53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87" VhostuserSocketGroup: hugetlbfs OvsDpdkSocketMemory: "4096,4096" # 3 OvsDpdkMemoryChannels: "4" OvsPmdCoreList: "2,46,3,47" # 4
- 1
- KernelArgs:
hugepages
를 계산하려면NovaReservedHostMemory
매개변수 값을 총 메모리에서 제거합니다. - 2
- IsolCpusList: 이 매개변수를 사용하여 호스트 프로세스에서 격리할 CPU 코어 세트를 할당합니다.
OvsPmdCoreList
매개변수의 값을NovaComputeCpuDedicatedSet
매개변수의 값에 추가하여IsolCpusList
매개변수 값을 계산합니다. - 3
- OvsDpdkSocketMemory:
OvsDpdkSocketMemory
매개변수를 사용하여 NUMA 노드당 hugepage 풀에서 사전 할당하기 위해 MB 단위로 메모리 양을 지정합니다. OVS-DPDK 매개변수 계산에 대한 자세한 내용은 OVS-DPDK 매개변수를 참조하십시오. - 4
- OvsPmdCoreList: 이 매개변수를 사용하여 DPDK 폴링 모드 드라이버(PMD)에 사용되는 CPU 코어를 지정합니다. DPDK 인터페이스의 로컬 NUMA 노드와 연결된 CPU 코어를 선택합니다. 각 NUMA 노드에 대해 2개의 HT 형제 스레드를 할당하여
OvsPmdCoreList
매개변수 값을 계산합니다.
11.8.4. nova 구성 파일의 예
parameter_defaults: ComputeHCIExtraConfig: nova::cpu_allocation_ratio: 16 # 2 NovaReservedHugePages: # 1 - node:0,size:1GB,count:4 - node:1,size:1GB,count:4 NovaReservedHostMemory: 123904 # 2 # All left over cpus from NUMA-1 NovaComputeCpuDedicatedSet: # 3 ['5','7','9','11','13','15','17','19','21','23','25','27','29','31','33','35','37','39','41','43','49','51','| 53','55','57','59','61','63','65','67','69','71','73','75','77','79','81','83','85','87
- 1
- NovaReservedHugePages:
NovaReservedHugePages
매개변수를 사용하여 hugepage 풀에서 메모리를 MB로 미리 할당합니다. 이는OvsDpdkSocketMemory
매개변수 값과 동일한 메모리 합계입니다. - 2
- NovaReservedHostMemory:
NovaReservedHostMemory
매개변수를 사용하여 호스트의 작업에 메모리를 MB로 예약합니다. 다음 지침을 사용하여 예약해야 하는 메모리 양을 계산합니다.- 각 OSD에 대해 5GB입니다.
- 각 VM에 대해 0.5GB 오버헤드입니다.
- 일반 호스트 처리를 위한 4GB. NUMA 간 OSD 작업으로 인한 성능 저하를 방지하기 위해 충분한 메모리를 할당해야 합니다.
- 3
- NovaComputeCpuDedicatedSet:
OvsPmdCoreList
또는NovaComputeCpuDedicatedSet
매개변수를 사용하여Ceph_osd_docker_cpuset_cpus
에서 찾을 수 없는 CPU를 나열합니다. CPU는 DPDK NIC와 동일한 NUMA 노드에 있어야 합니다.
11.8.5. HCI-DPDK 배포에 권장되는 구성
블록 장치 유형 | 장치당 OSD, 메모리, vCPU |
---|---|
NVMe |
메모리 : 장치당 OSD |
SSD |
메모리 : 장치당 OSD |
HDD |
메모리 : 장치당 OSD |
다음 기능에 동일한 NUMA 노드를 사용합니다.
- 디스크 컨트롤러
- 스토리지 네트워크
- 스토리지 CPU 및 메모리
DPDK 공급자 네트워크의 다음 기능에 대해 다른 NUMA 노드를 할당합니다.
- NIC
- PMD CPU
- 소켓 메모리
11.8.6. HCI-DPDK 오버클라우드 배포
DPDK를 사용하는 하이퍼컨버지드 오버클라우드를 배포하려면 다음 단계를 따르십시오.
사전 요구 사항
- RHOSP(Red Hat OpenStack Platform) 17.1 이상.
- Red Hat Ceph Storage 6.1의 최신 버전입니다.
프로세스
Controller 및 ComputeHCIOvsDpdk 역할에 대한
roles_data.yaml
파일을 생성합니다.$ openstack overcloud roles generate -o ~/<templates>/roles_data.yaml \ Controller ComputeHCIOvsDpdk
-
openstack flavor create
및openstack flavor set
명령을 사용하여 새 플레이버를 생성하고 구성합니다. RHOSP director 및 Ceph 구성 파일을 사용하여 Ceph를 배포합니다.
예제
$ openstack overcloud ceph deploy --config initial-ceph.conf
생성한 사용자 지정
roles_data.yaml
파일을 사용하여 오버클라우드를 배포합니다.예제
$ openstack overcloud deploy --templates \ --timeout 360 \ -r ~/<templates>/roles_data.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/\ cephadm/cephadm-rbd-only.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-ovs-dpdk.yaml \ -e ~/<templates>/<custom environment file>
중요이 예에서는 Ceph RGW(오브젝트 스토리지) 없이 Ceph RBD(블록 스토리지)를 배포합니다. 배포에 RGW를 포함하려면
cephadm-rbd-only.yaml
대신cephadm.yaml
을 사용합니다.
추가 리소스
- Red Hat OpenStack Platform 배포를 사용자 정의할 때 구성 가능 서비스 및 사용자 지정 역할
- 11.8.2절. “Ceph 구성 파일 예”
- director와 함께 Red Hat Ceph Storage 및 Red Hat OpenStack Platform 배포에서 Red Hat Ceph Storage 클러스터를 구성합니다.