9.7. 使用 HCI 和 DPDK 部署 overcloud


您可以通过共同定位和配置 Compute 和 Ceph Storage 服务以优化资源使用量来部署 NFV 基础架构。

有关超融合基础架构(HCI)的更多信息,请参阅: Hyper Converged Infrastructure Guide

前提条件
  • Red Hat OpenStack Platform 16.1.
  • Red Hat Ceph Storage 4 的最新版本。
  • 最新版本的 ceph-ansible 4,如 rhceph-4-tools-for-rhel-8-x86_64-rpms 存储库提供。
流程
  1. 在 undercloud 上安装 ceph-ansible

    $ sudo yum install ceph-ansible -y
    Copy to Clipboard Toggle word wrap
  2. 为 ComputeHCI 角色生成 roles_data.yaml 文件。

    $ openstack overcloud roles generate -o ~/<templates>/roles_data.yaml Controller \
     ComputeHCIOvsDpdk
    Copy to Clipboard Toggle word wrap
  3. 使用 openstack flavor createopenstack flavor set 命令创建和配置一个新类别。有关创建类别的更多信息,请参阅高级 Overcloud 自定义指南中的创建新角色
  4. 使用您生成的自定义 roles_data.yaml 文件部署 overcloud。

    # time openstack overcloud deploy --templates \
     --timeout 360 \
     -r ~/<templates>/roles_data.yaml \
     -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.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>
    Copy to Clipboard Toggle word wrap

9.7.1. NUMA 节点配置示例

为提高性能,将租户网络和 Ceph 对象服务守护进程(OSD)放在一个 NUMA-0 中,如 NUMA-0,以及 VNF 和另一个 NUMA 节点上的任何非 NFV 虚拟机,如 NUMA-1。

CPU 分配:
Expand
NUMA-0NUMA-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 分配示例:
Expand
 NUMA-0NUMA-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

9.7.2. ceph 配置文件示例

parameter_defaults:
  CephPoolDefaultSize: 3
  CephPoolDefaultPgNum: 64
  CephPools:
    - {"name": backups, "pg_num": 128, "pgp_num": 128, "application": "rbd"}
    - {"name": volumes, "pg_num": 256, "pgp_num": 256, "application": "rbd"}
    - {"name": vms, "pg_num": 64, "pgp_num": 64, "application": "rbd"}
    - {"name": images, "pg_num": 32, "pgp_num": 32, "application": "rbd"}
  CephConfigOverrides:
    osd_recovery_op_priority: 3
    osd_recovery_max_active: 3
    osd_max_backfills: 1
  CephAnsibleExtraConfig:
    nb_retry_wait_osd_up: 60
    delay_wait_osd_up: 20
    is_hci: true
    # 3 OSDs * 4 vCPUs per SSD = 12 vCPUs (list below not used for VNF)
    ceph_osd_docker_cpuset_cpus: "32,34,36,38,40,42,76,78,80,82,84,86" # 
1

    # cpu_limit 0 means no limit as we are limiting CPUs with cpuset above
    ceph_osd_docker_cpu_limit: 0                                       # 
2

    # numactl preferred to cross the numa boundary if we have to
    # but try to only use memory from numa node0
    # cpuset-mems would not let it cross numa boundary
    # lots of memory so NUMA boundary crossing unlikely
    ceph_osd_numactl_opts: "-N 0 --preferred=0"                        # 
3

  CephAnsibleDisksConfig:
    osds_per_device: 1
    osd_scenario: lvm
    osd_objectstore: bluestore
    devices:
      - /dev/sda
      - /dev/sdb
      - /dev/sdc
Copy to Clipboard Toggle word wrap

使用下列参数,为 ceph OSD 进程分配 CPU 资源。根据此超融合环境中的工作负载和硬件调整值。

1
ceph_osd_docker_cpuset_cpus:为 SSD 磁盘的每个 OSD 分配 4 个 CPU 线程,或者为 HDD 磁盘的每个 OSD 分配 1 个 CPU。包含与 ceph 关联的 NUMA 节点的内核数和同级线程列表,以及三个列表中未找到的 CPU: NovaComputeCpuDedicatedSetOvsPmdCoreList
2
ceph_osd_docker_cpu_limit:将此值设置为 0, 以将 ceph OSD 固定到 ceph_osd_docker_cpuset_cpus 中的 CPU 列表。
3
ceph_osd_numactl_opts:将此值设置为跨 NUMA 操作 的首选 值,作为 precaution。

9.7.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

    NumDpdkInterfaceRxQueues: 1
Copy to Clipboard Toggle word wrap
1
KernelArgs:要计算 大页,请从总内存中减去 NovaReservedHostMemory 参数的值。
2
IsolCpusList:分配您想要使用此参数与主机进程隔离的一组 CPU 核心。将 OvsPmdCoreList 参数的值添加到 NovaComputeCpuDedicatedSet 参数的值,以计算 IsolCpusList 参数的值。
3
OvsDpdkSocketMemory:指定以 MB 为单位的内存大小,以预先从每个 NUMA 节点的巨页池中分配,使用 OvsDpdkSocketMemory 参数进行预先分配。有关计算 OVS-DPDK 参数的更多信息,请参阅: ovsdpdk 参数
4
OvsPmdCoreList:指定用于 DPDK 轮询模式驱动程序(PMD)的 CPU 核心。选择与 DPDK 接口本地 NUMA 节点关联的 CPU 内核。为每个 NUMA 节点分配 2 HT 同级线程,以计算 OvsPmdCoreList 参数的值。

9.7.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
Copy to Clipboard Toggle word wrap
1
NovaReservedHugePages:从带有 NovaReservedHugePages 参数的巨页池中分配内存(以 MB 为单位)。它与 OvsDpdkSocketMemory 参数的值总量相同。
2
NovaReservedHostMemory:将内存(以 MB 为单位)用于带有 NovaReservedHostMemory 参数的主机上的任务。使用以下指南计算您必须保留的内存量:
  • 每个 OSD 5 GB。
  • 每个虚拟机的 0.5 GB 开销.
  • 4GB 用于常规主机处理。确保您分配足够的内存,以防止通过跨 NUMA OSD 操作导致潜在的性能下降。
3
NovaComputeCpuDedicatedSet:使用 NovaComputeCpuDedicatedSet 参数列出 OvsPmdCoreListCeph_osd_cpus 中未找到的 CPU。CPU 必须与 DPDK NIC 位于同一个 NUMA 节点。

9.7.5. 建议配置 HCI-DPDK 部署

Expand
表 9.1. 用于 HCI 部署的可调参数
块设备类型OSD、内存、vCPU 每个设备

NVMe

内存:5GB per OSD
OSDs per device: 4
vCPUs per device: 3

SSD

内存:5GB per OSD
OSDs per device: 1
vCPUs per device: 4

HDD

内存:5GB per OSD
OSDs per device: 1
vCPUs per device: 1

对以下功能使用相同的 NUMA 节点:

  • 磁盘控制器
  • 存储网络
  • 存储 CPU 和内存

为 DPDK 提供商网络的以下功能分配另一个 NUMA 节点:

  • NIC
  • PMD CPU
  • 套接字内存
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat