11.8. 创建使用 DPDK 的 HCI overcloud
您可以通过共置(co-locating)并配置计算和 Ceph Storage 服务来优化资源使用量,通过部署带有超融合节点的 NFV 基础架构。
有关超融合基础架构(HCI)的更多信息,请参阅部署超融合基础架构。
以下章节提供了各种配置示例。
11.8.1. NUMA 节点配置示例 复制链接链接已复制到粘贴板!
为提高性能,将租户网络和 Ceph 对象服务守护进程(OSD)放在一个 NUMA-0 中,如 NUMA-0,以及 VNF 和另一个 NUMA 节点上的任何非 NFV 虚拟机,如 NUMA-1。
CPU 分配:
| NUMA-0 | NUMA-1 |
|---|---|
| Ceph OSD 数量 * 4 HT | VNF 和非 NFV 虚拟机的客户机 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 环境的值来对配置文件建模。
使用以下参数,为 Ceph Object Storage Daemons (OSD)进程分配 CPU 资源。此处显示的值是示例。根据您的工作负载和硬件调整值。
- 1
osd_numa_node:将 Ceph 进程的关联性设置为 NUMA 节点,例如0代表NUMA-0,1代表NUMA-1,以此类推。-1将关联性设置为没有 NUMA 节点。在本例中,
osd_numa_node设置为NUMA-0。如 第 11.8.3 节 “DPDK 配置文件示例” 所示,IsolCpusList在NUMA-1上包含奇数的 CPU,在OvsPmdCoreList元素被删除后。由于对延迟敏感的 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 分配内存。默认值为0.7。系统中 RAM 总量的 70% 是起点,从中减去了非自动tuned Ceph 守护进程所消耗的任何内存。当所有 OSD 的
osd_memory_target_autotune为 true 时,剩余的内存被除以 OSD。对于 HCI 部署,mgr/cephadm/autotune_memory_target_ratio可以设置为0.2,以便更多内存可用于计算服务。根据需要调整,以确保每个 OSD 至少有 5 GB 内存。
11.8.3. DPDK 配置文件示例 复制链接链接已复制到粘贴板!
- 1
- KernelArgs :要计算
大页,请从总内存中减去NovaReservedHostMemory参数的值。 - 2
- IsolCpusList:分配您要使用此参数与主机进程隔离的一组 CPU 内核。将
OvsPmdCoreList参数的值添加到NovaComputeCpuDedicatedSet参数的值,以计算IsolCpusList参数的值。 - 3
- OvsDpdkSocketMemory :使用
OvsDpdkSocketMemory参数指定从每个 NUMA 节点的巨页池中预先分配的内存量(以 MB 为单位)。有关计算 OVS-DPDK 参数的更多信息,请参阅 OVS-DPDK 参数。 - 4
- OvsPmdCoreList:指定用于带有这个参数的 DPDK 轮询模式驱动程序(PMD)的 CPU 内核。选择与 DPDK 接口本地 NUMA 节点关联的 CPU 内核。为每个 NUMA 节点分配 2 个 HT 同级线程,以计算
OvsPmdCoreList参数的值。
11.8.4. nova 配置文件示例 复制链接链接已复制到粘贴板!
- 1
- NovaReservedHugePages:通过
NovaReservedHugePages参数,从巨页池中预先分配内存(以 MB 为单位)。它是与OvsDpdkSocketMemory参数的值相同的内存总量。 - 2
- NovaReservedHostMemory: 为带有
NovaReservedHostMemory参数的主机上的任务保留内存(以 MB 为单位)。使用以下准则计算您必须保留的内存量:- 每个 OSD 5 GB。
- 每个虚拟机的 0.5 GB 开销。
- 4GB 用于常规主机处理。确保分配足够的内存以防止跨 NUMA OSD 操作导致潜在的性能下降。
- 3
- NovaComputeCpuDedicatedSet :列出
OvsPmdCoreList中未找到的 CPU,或使用NovaComputeCpuDedicatedSet参数列出Ceph_osd_docker_cpuset_cpus。CPU 必须与 DPDK NIC 位于同一个 NUMA 节点上。
11.8.5. 推荐的 HCI-DPDK 部署配置 复制链接链接已复制到粘贴板!
| 块设备类型 | OSD、内存、vCPU 每个设备 |
|---|---|
| NVMe |
内存:5GB per OSD |
| SSD |
内存:5GB per OSD |
| HDD |
内存:5GB per OSD |
将相同的 NUMA 节点用于以下功能:
- 磁盘控制器
- 存储网络
- 存储 CPU 和内存
为 DPDK 提供商网络的以下功能分配另一个 NUMA 节点:
- NIC
- PMD CPU
- 套接字内存
11.8.6. 部署 HCI-DPDK overcloud 复制链接链接已复制到粘贴板!
按照以下步骤部署使用 DPDK 的超融合 overcloud。
先决条件
- Red Hat OpenStack Platform (RHOSP) 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 overcloud roles generate -o ~/<templates>/roles_data.yaml \ Controller ComputeHCIOvsDpdkCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
openstack flavor create和openstack flavor set命令创建和配置新类别。 使用 RHOSP director 和 Ceph 配置文件部署 Ceph。
Example
openstack overcloud ceph deploy --config initial-ceph.conf
$ openstack overcloud ceph deploy --config initial-ceph.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您生成的自定义
roles_data.yaml文件部署 overcloud。Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要本例在没有 Ceph RGW (对象存储)的情况下部署 Ceph RBD (块存储)。要在部署中包含 RGW,请使用
cephadm.yaml而不是cephadm-rbd-only.yaml。