HyperConverged 基础架构指南


Red Hat OpenStack Platform 16.2

在 Red Hat OpenStack Platform overcloud 上了解并配置超融合基础架构

OpenStack Documentation Team

摘要

本文档描述了超线程的 Red Hat OpenStack Platform 实施,它将计算和 Ceph Storage 服务在同一主机上并置。

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。

在 JIRA 中提供文档反馈

使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。

  1. 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
  2. 点击以下链接打开 Create Issue 页面: Create Issue
  3. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  4. Create

Red Hat OpenStack Platform (RHOSP)超融合基础架构(HCI)由超融合节点组成。服务在这些超融合节点上在一起,以优化资源使用量。在 RHOSP HCI 中,计算和存储服务在超融合节点上在一起。您可以部署仅使用超融合节点的 overcloud,或使用普通 Compute 和 Ceph Storage 节点混合部署超融合节点。

注意

您必须使用 Red Hat Ceph Storage 作为存储供应商。

提示
  • 使用 ceph-ansible 3.2 及之后的版本自动调整 Ceph 内存设置。
  • 使用 BlueStore 作为 HCI 部署的后端,以使用 BlueStore 内存处理功能。

要在 overcloud 上创建和部署 HCI,请将 overcloud 中的其他功能(如网络功能虚拟化)集成,并确保超融合节点上计算和 Red Hat Ceph Storage 服务的最佳性能,您必须完成以下操作:

  1. 为超融合节点 ComputeHCI 准备预定义的自定义 overcloud 角色。
  2. 配置资源隔离。
  3. 验证可用的 Red Hat Ceph Storage 软件包。
  4. 部署 HCI overcloud。

有关 HCI 配置指导,请参阅 配置指南

1.1. 先决条件

  • 您已部署了 undercloud。有关如何部署 undercloud 的说明,请参阅 Director 安装和使用
  • 您的环境可以置备满足 RHOSP Compute 和 Red Hat Ceph Storage 要求的节点。有关更多信息,请参阅 基本的 Overcloud 部署
  • 您已注册了环境中的所有节点。如需更多信息,请参阅 注册节点
  • 您已标记了环境中的所有节点。如需更多信息,请参阅 手动标记节点
  • 您已在计划用于 Compute 和 Ceph OSD 服务的节点上清理了磁盘。有关更多信息,请参阅 清理 Ceph Storage 节点磁盘
  • 您已准备了 overcloud 节点,以使用 Red Hat Content Delivery Network 或 Red Hat Satellite 服务器注册。有关更多信息,请参阅 基于 Ansible 的 Overcloud 注册

1.2. 为超融合节点准备 overcloud 角色

要将节点指定为超融合,您需要定义一个超融合角色。Red Hat OpenStack Platform (RHOSP)为超融合节点提供预定义的角色 ComputeHCI。此角色并置计算和 Ceph 对象存储守护进程(OSD)服务,允许您将它们部署到同一超融合节点上。

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  3. 生成包含 ComputeHCI 角色的新自定义角色数据文件,以及其他要用于 overcloud 的角色。以下示例生成角色数据文件 roles_data_hci.yaml,其中包括角色 Controller, ComputeHCI, Compute, 和 CephStorage

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_hci.yaml \
      Controller ComputeHCI Compute CephStorage
    Copy to Clipboard Toggle word wrap
    注意

    生成的自定义角色数据文件中为 ComputeHCI 角色列出的网络包括 Compute 和 Storage 服务所需的网络,例如:

    - name: ComputeHCI
      description: |
        Compute node role hosting Ceph OSD
      tags:
        - compute
      networks:
        InternalApi:
          subnet: internal_api_subnet
        Tenant:
          subnet: tenant_subnet
        Storage:
          subnet: storage_subnet
        StorageMgmt:
          subnet: storage_mgmt_subnet
    Copy to Clipboard Toggle word wrap
  4. 创建 network_data.yaml 文件的本地副本,来将可组合网络添加到您的 overcloud 中。network_data.yaml 文件与默认网络环境文件 /usr/share/openstack-tripleo-heat-templates/environments Provisioning 进行交互,以将您为 ComputeHCI 角色定义的网络与超融合节点相关联。有关更多信息,请参阅高级 Overcloud 自定义指南中的 添加可组合网络
  5. 为提高 Red Hat Ceph Storage 的性能,请在 network_data.yaml 本地副本中将 StorageStorageMgmt 网络的 MTU 设置更新为 9000。如需更多信息,请参阅 Configuring MTU Settings in DirectorConfiguring jumbo frames
  6. 为超融合节点创建 computeHCI overcloud 类别:

    (undercloud)$ openstack flavor create --id auto \
     --ram <ram_size_mb> --disk <disk_size_gb> \
     --vcpus <no_vcpus> computeHCI
    Copy to Clipboard Toggle word wrap
    • <ram_size_mb> 替换为裸机节点的 RAM,以 MB 为单位。
    • <disk_size_gb> 替换为裸机节点中的磁盘大小(以 GB 为单位)。
    • <no_vcpus> 替换为裸机节点中的 CPU 数量。
    注意

    这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。

  7. 检索节点列表来识别它们的 UUID:

    (undercloud)$ openstack baremetal node list
    Copy to Clipboard Toggle word wrap
  8. 使用自定义 HCI 资源类标记您要指定为超融合的每个裸机节点:

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.HCI <node>
    Copy to Clipboard Toggle word wrap

    <node> 替换为裸机节点的 ID。

  9. computeHCI 类别与自定义 HCI 资源类关联:

    (undercloud)$ openstack flavor set \
    --property resources:CUSTOM_BAREMETAL_HCI=1 \
    computeHCI
    Copy to Clipboard Toggle word wrap

    要确定与 Bare Metal 服务节点的资源类型对应的自定义资源类的名称,请将资源类转换为大写,请将所有标点替换为下划线,并将 prefix 替换为 CUSTOM_

    注意

    类别只能请求一个裸机资源类实例。

  10. 设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:

    (undercloud)$ openstack flavor set \
     --property resources:VCPU=0 \
     --property resources:MEMORY_MB=0 \
     --property resources:DISK_GB=0 computeHCI
    Copy to Clipboard Toggle word wrap
  11. 将以下参数添加到 node-info.yaml 文件中,以指定超融合和 Controller 节点的数量,以及用于超融合和控制器指定的类别:

    parameter_defaults:
      OvercloudComputeHCIFlavor: computeHCI
      ComputeHCICount: 3
      Controller: control
      ControllerCount: 3
    Copy to Clipboard Toggle word wrap

1.2.1. 为多磁盘集群定义根磁盘

如果节点使用多个磁盘,则 Director 在置备过程上必须识别根磁盘。例如,大多数 Ceph Storage 节点使用多个磁盘。默认情况下,director 在置备过程中将 overcloud 镜像写入根磁盘

您可以定义多个属性以帮助 director 识别根磁盘:

  • model(字符串):设备识别码。
  • vendor(字符串):设备厂商。
  • serial(字符串):磁盘序列号。
  • hctl(字符串):SCSI 的 Host:Channel:Target:Lun。
  • size(整数):设备的大小(以 GB 为单位)。
  • wwn(字符串):唯一的存储 ID。
  • wwn_with_extension(字符串):唯一存储 ID 附加厂商扩展名。
  • wwn_vendor_extension(字符串):唯一厂商存储标识符。
  • rotational(布尔值):旋转磁盘设备为 true (HDD),否则为 false (SSD)。
  • name(字符串):设备名称,例如:/dev/sdb1。
重要

仅对具有持久名称的设备使用 name 属性。不要使用 name 来设置任何其他设备的根磁盘,因为此值在节点引导时可能会改变。

您可以使用其序列号指定根设备。

步骤

  1. 从每个节点的硬件内省检查磁盘信息。运行以下命令以显示节点的磁盘信息:

    (undercloud)$ openstack baremetal introspection data save 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 | jq ".inventory.disks"
    Copy to Clipboard Toggle word wrap

    例如,一个节点的数据可能会显示 3 个磁盘:

    [
      {
        "size": 299439751168,
        "rotational": true,
        "vendor": "DELL",
        "name": "/dev/sda",
        "wwn_vendor_extension": "0x1ea4dcc412a9632b",
        "wwn_with_extension": "0x61866da04f3807001ea4dcc412a9632b",
        "model": "PERC H330 Mini",
        "wwn": "0x61866da04f380700",
        "serial": "61866da04f3807001ea4dcc412a9632b"
      }
      {
        "size": 299439751168,
        "rotational": true,
        "vendor": "DELL",
        "name": "/dev/sdb",
        "wwn_vendor_extension": "0x1ea4e13c12e36ad6",
        "wwn_with_extension": "0x61866da04f380d001ea4e13c12e36ad6",
        "model": "PERC H330 Mini",
        "wwn": "0x61866da04f380d00",
        "serial": "61866da04f380d001ea4e13c12e36ad6"
      }
      {
        "size": 299439751168,
        "rotational": true,
        "vendor": "DELL",
        "name": "/dev/sdc",
        "wwn_vendor_extension": "0x1ea4e31e121cfb45",
        "wwn_with_extension": "0x61866da04f37fc001ea4e31e121cfb45",
        "model": "PERC H330 Mini",
        "wwn": "0x61866da04f37fc00",
        "serial": "61866da04f37fc001ea4e31e121cfb45"
      }
    ]
    Copy to Clipboard Toggle word wrap
  2. 输入 openstack baremetal node set --property root_device=,为节点设置根磁盘。包括用于定义根磁盘的最合适的硬件属性值。

    (undercloud)$ openstack baremetal node set --property root_device='{"serial":"<serial_number>"}' <node-uuid>
    Copy to Clipboard Toggle word wrap

    例如:要将根设备设定为磁盘 2,其序列号为 61866da04f380d001ea4e13c12e36ad6,输入以下命令:

    (undercloud)$ openstack baremetal node set --property root_device='{"serial": "61866da04f380d001ea4e13c12e36ad6"}' 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0
    Copy to Clipboard Toggle word wrap
    注意

    确保配置每个节点的 BIOS 以包括从您选择的根磁盘引导。将引导顺序配置为首先从网络引导,然后从根磁盘引导。

    director 识别特定磁盘以用作根磁盘。运行 openstack overcloud deploy 命令时,director 置备 overcloud 镜像并将其写入根磁盘。

1.3. 在超融合节点上配置资源隔离

在超融合节点上并置 Ceph OSD 和计算服务会面临 Red Hat Ceph Storage 和计算服务之间的资源争用,因为不清楚同一主机上彼此存在。资源争用可能会导致服务降级,这会降低超融合的好处。

您必须为 Ceph 和计算服务配置资源隔离,以防止争用。

流程

  1. 可选:通过在 Compute 环境文件中添加以下参数来覆盖自动生成的计算设置:

    parameter_defaults:
      ComputeHCIParameters:
        NovaReservedHostMemory: <ram>
        NovaCPUAllocationRatio: <ratio>
    Copy to Clipboard Toggle word wrap
  2. 要为 Red Hat Ceph Storage 保留内存资源,请在 /home/stack/templates/storage-container-config.yaml 中将 is_hci 设置为 true

    parameter_defaults:
      CephAnsibleExtraConfig:
        is_hci: true
    Copy to Clipboard Toggle word wrap

    这允许 ceph-ansible 为 Red Hat Ceph Storage 保留内存资源,并通过自动调整 HCI 部署的 osd_memory_target 参数设置来减少 Ceph OSD 的内存增长。

    警告

    红帽不推荐直接覆盖 ceph_osd_docker_memory_limit 参数。

    注意

    从 ceph-ansible 3.2 开始,无论使用 FileStore 或 BlueStore 后端,ceph_osd_docker_memory_limit 会自动设置为主机的最大内存,无论是否使用 FileStore 或 BlueStore 后端。

  3. 可选: 默认情况下,ceph-ansible 为每个 Ceph OSD 保留一个 vCPU。如果每个 Ceph OSD 需要多个 CPU,请将以下配置添加到 /home/stack/templates/storage-container-config.yaml 中:

    parameter_defaults:
      CephAnsibleExtraConfig:
        ceph_osd_docker_cpu_limit: <cpu_limit>
    Copy to Clipboard Toggle word wrap

    <cpu_limit > 替换为为每个 Ceph OSD 保留的 CPU 数量。

    有关如何根据硬件和工作负载调整 CPU 资源的更多信息,请参阅 Red Hat Ceph Storage Hardware Selection Guide

  4. 可选:通过在 Ceph 环境文件中添加以下参数,在移除 Ceph OSD 时降低 Red Hat Ceph Storage 回填和恢复操作的优先级:

    parameter_defaults:
      CephConfigOverrides:
        osd_recovery_op_priority: <priority_value>
        osd_recovery_max_active: <no_active_recovery_requests>
        osd_max_backfills: <max_no_backfills>
    Copy to Clipboard Toggle word wrap
    • <priority_value> 替换为与 OSD 客户端 OP 优先级相关的恢复操作的优先级。
    • <no_active_recovery_requests > 替换为每个 OSD 的活动恢复请求数。
    • <max_no_backfills > 替换为允许进出单个 OSD 的最大回填数。

      有关默认 Red Hat Ceph Storage 回填和恢复选项的更多信息,请参阅 Red Hat Ceph Storage backfill 和 restore 操作

director 提供了一个默认的计划环境文件,用于在部署期间在超融合节点上配置资源限制。此计划环境文件指示 OpenStack 工作流完成以下过程:

  1. 检索在检查硬件节点期间收集的硬件内省数据。
  2. 根据这些数据,计算超融合节点上的 Compute 的最佳 CPU 和内存分配工作负载。
  3. 自动生成配置这些限制所需的参数,并为 Compute 保留 CPU 和内存资源。这些参数在 plan-environment-derived-params.yaml 文件的 hci_profile_config 部分下定义。
注意

每个工作负载配置集中的 average_guest_memory_size_in_mb he average_guest_cpu_utilization_percentage 参数用于计算 Compute 的 reserved_host_memorycpu_allocation_ratio 设置的值。

您可以通过在 Compute 环境文件中添加以下参数来覆盖自动生成的 Compute 设置:

Expand
自动生成的 nova.conf 参数计算环境文件覆盖描述

reserved_host_memory

parameter_defaults:
  ComputeHCIParameters:
    NovaReservedHostMemory: 181000
Copy to Clipboard Toggle word wrap

设置应为 Ceph OSD 服务和超融合节点上的每个客户机实例开销保留多少 RAM。

cpu_allocation_ratio

parameter_defaults:
  ComputeHCIParameters:
    NovaCPUAllocationRatio: 8.2
Copy to Clipboard Toggle word wrap

设置计算调度程序在选择要在其上部署实例的 Compute 节点时应使用的比率。

这些覆盖应用于使用 ComputeHCI 角色的所有节点,即所有超融合节点。有关手动确定 NovaReservedHostMemoryNovaCPUAllocationRatio 的最佳值的更多信息,请参阅 OpenStack Workflow Compute CPU 和内存计算器

提示

您可以使用以下脚本为您的超融合节点计算合适的基准 NovaReservedHostMemoryNovaCPUAllocationRatio 值。

nova_mem_cpu_calc.py

1.3.2. Red Hat Ceph Storage 回填和恢复操作

移除 Ceph OSD 后,Red Hat Ceph Storage 使用回填和恢复操作来重新平衡集群。Red Hat Ceph Storage 根据放置组策略保留多个数据副本。这些操作使用系统资源。如果 Red Hat Ceph Storage 集群负载不足,则其性能会下降,因为它将资源用于回填和恢复。

要在 OSD 移除过程中减少此性能影响,您可以降低回填和恢复操作的优先级。这样做的代价是较长的时间有较少的数据副本,这会稍微增加数据的风险。

下表中详述的参数用于配置回填和恢复操作的优先级。

Expand
参数描述默认值

osd_recovery_op_priority

设置恢复操作的优先级,相对于 OSD 客户端 OP 优先级。

3

osd_recovery_max_active

设置每个 OSD 的活动恢复请求数。更多请求可以加快恢复速度,但请求会增加集群的负载。如果要缩短延迟,请将其设置为 1。

3

osd_max_backfills

设置允许单个 OSD 或单个 OSD 的最大回填数量。

1

1.4. 验证可用的 Red Hat Ceph Storage 软件包

为了帮助避免 overcloud 部署失败,请验证您的服务器上是否存在必要的软件包。

1.4.1. 验证 ceph-ansible 软件包版本

undercloud 包含基于 Ansible 的验证,您可以运行这些验证来识别部署 overcloud 前的潜在问题。这些验证可以帮助您通过在发生之前发现常见问题来避免 overcloud 部署失败。

流程

  • 验证您要的 ceph-ansible 软件包版本是否已安装:

    $ ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/ansible/validation-playbooks/ceph-ansible-installed.yaml
    Copy to Clipboard Toggle word wrap

1.4.2. 验证预置备节点的软件包

Red Hat Ceph Storage (RHCS)只能服务具有特定软件包集的 overcloud 节点。使用预置备节点时,您可以验证这些软件包是否存在。

有关预置备节点的更多信息,请参阅 使用预置备节点配置基本的 overcloud

流程

  • 验证预置备节点是否包含所需的软件包:

    ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/ansible/validation-playbooks/ceph-dependencies-installed.yaml
    Copy to Clipboard Toggle word wrap

1.5. 部署 HCI overcloud

完成 HCI 配置后,您必须部署 overcloud。

重要

RHOSP HCI 环境中不支持实例 HA。要在 RHOSP HCI 环境中使用 Instance HA,您必须使用 ComputeInstanceHA 角色指定 Compute 节点的子集才能使用实例 HA。Red Hat Ceph Storage 服务不能托管在托管实例 HA 的 Compute 节点上。

先决条件

流程

  • 使用其他环境文件将新角色和环境文件添加到堆栈中,并部署您的 HCI overcloud:

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files] \
      -r /home/stack/templates/roles_data_hci.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/network-environment.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml
      -e /home/stack/templates/storage-config.yaml \
      -e /home/stack/templates/storage-container-config.yaml \
      -n /home/stack/templates/network_data.yaml \
      [-e /home/stack/templates/ceph-backfill-recovery.yaml \ ]
      --ntp-server pool.ntp.org
    Copy to Clipboard Toggle word wrap

    在部署命令中包含 /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml,添加部署容器化 Red Hat Ceph 集群的基础环境文件,以及所有默认设置。有关更多信息,请参阅使用容器化 Red Hat Ceph 部署 Overcloud

注意

如果您的部署使用单一根输入/输出虚拟化(SR-IOV),请在部署命令中包括以下选项。

如果您在部署中使用 ML2/OVS 机制驱动程序,请指定以下选项:

-e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml
-e /home/stack/templates/network-environment.yaml
Copy to Clipboard Toggle word wrap

如果您在部署中使用 ML2/OVN 机制驱动程序,请指定以下选项:

-e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-sriov.yaml
-e /home/stack/templates/network-environment.yaml
Copy to Clipboard Toggle word wrap
提示

您还可以使用 回答文件 来指定要在部署中包含哪些环境文件。如需更多信息,请参阅 Director 安装和使用 指南中的将 overcloud 部署包含环境文件

1.5.1. 限制运行 ceph-ansible 的节点

您可以通过限制 ceph-ansible 运行的节点来减少部署更新时间。当 Red Hat OpenStack Platform (RHOSP)使用 config-download 配置 Ceph 时,您可以使用- limit 选项指定节点列表,而不是在整个部署中运行 config-downloadceph-ansible。此功能可用于扩展 overcloud 或替换失败的磁盘。在这些情况下,部署只能在添加到环境中的新节点上运行。

在故障磁盘替换中使用 --limit 的示例

在以下示例中,Ceph 存储节点 oc0-cephstorage-0 有一个磁盘故障,因此它收到一个新的工厂清理磁盘。Ansible 需要在 oc0-cephstorage-0 节点上运行,以便新磁盘可以用作 OSD,但不需要在所有其他 Ceph 存储节点上运行。将示例环境文件和节点名称替换为适合您的环境。

流程

  1. stack 用户身份登录 undercloud 节点,再提供 stackrc 凭证文件:

    # source stackrc
    Copy to Clipboard Toggle word wrap
  2. 完成以下步骤之一,以便使用新磁盘启动缺少的 OSD。

    • 运行堆栈更新,并包含- limit 选项,以指定您希望 ceph-ansible 运行的节点:

      $ openstack overcloud deploy --templates \
        -r /home/stack/roles_data.yaml \
        -n /usr/share/openstack-tripleo-heat-templates/network_data_dashboard.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
        -e ~/my-ceph-settings.yaml \
        -e <other-environment_files> \
        --limit oc0-controller-0:oc0-controller-2:oc0-controller-1:oc0-cephstorage-0:undercloud
      Copy to Clipboard Toggle word wrap

      在本例中,包含 Controller,因为 Ceph mons 需要 Ansible 更改其 OSD 定义。

    • 如果 config-download 生成了 ansible-playbook-command.sh 脚本,您还可以使用- limit 选项运行脚本,将指定节点传递给 ceph-ansible

      ./ansible-playbook-command.sh --limit oc0-controller-0:oc0-controller-2:oc0-controller-1:oc0-cephstorage-0:undercloud
      Copy to Clipboard Toggle word wrap
      警告
      您必须始终将 undercloud 包含在限制列表中,否则在使用-limit 时无法执行 ceph-ansible这是必要的,因为 ceph-ansible 执行通过 external_deploy_steps_tasks playbook 进行,该 playbook 仅在 undercloud 上运行。

1.6. OpenStack Workflow Compute CPU 和内存计算器

OpenStack Workflow 计算 CPU 和内存的最佳设置,并使用结果填充 NovaReservedHostMemoryNovaCPUAllocationRatio 参数。

NovaReservedHostMemory

NovaReservedHostMemory 参数设置为主机节点保留的内存量(以 MB 为单位)。要确定超融合节点的适当值,假设每个 OSD 消耗 3 GB 内存。假设有 256 GB 内存和 10 个 OSD 的节点,您可以为 Ceph 分配 30 GB 内存,为 Compute 保留 226 GB。使用该节点可以托管最多的内存,例如,113 个实例分别使用 2 GB 内存。

但是,您仍然需要为 虚拟机监控程序 考虑每个实例的额外开销。假设这个开销为 0.5 GB,则同一节点只能托管 90 个实例,其中 226 GB 的帐户除以 2.5 GB。为主机节点保留的内存量(即 Compute 服务不应该使用的内存)是:

(在 * Ov 中)+(Os * RA)

其中:

  • 中:实例数量
  • OV: 每个实例所需的开销内存量
  • OS :节点上的 OSD 数量
  • RA: 每个 OSD 应该具有的 RAM 量

对于 90 个实例,这给我们(90*0.5)+(10*3)= 75 GB。计算服务预期这个值以 MB 为单位,即 75000。

以下 Python 代码提供这个计算:

left_over_mem = mem - (GB_per_OSD * osds)
number_of_guests = int(left_over_mem /
    (average_guest_size + GB_overhead_per_guest))
nova_reserved_mem_MB = MB_per_GB * (
    (GB_per_OSD * osds) +
    (number_of_guests * GB_overhead_per_guest))
Copy to Clipboard Toggle word wrap

NovaCPUAllocationRatio

在选择要在其上部署实例的 Compute 节点时,计算调度程序使用 NovaCPUAllocationRatio。默认情况下,这是 16.0 (如 16:1)。这意味着,如果节点上有 56 个内核,则计算调度程序会调度足够的实例在节点上消耗 896 个 vCPU,然后考虑节点无法托管。

要为超融合节点确定合适的 NovaCPUAllocationRatio,假设每个 Ceph OSD 至少使用一个内核(除非工作负载是 I/O 密集型,且在没有 SSD 的节点上)。在有 56 个内核和 10 个 OSD 的节点上,这会为 Compute 保留 46 个内核。如果每个实例在收到的 CPU 的每个 CPU 使用 100,那么比率将只是实例 vCPU 数量除以内核数除;即 46 / 56 = 0.8。但是,由于实例通常不会消耗其分配的 CPU 数量,因此您可以在决定所需客户机 vCPU 数量时考虑预期百分比来引发 NovaCPUAllocationRatio

因此,如果我们可以预测,实例将只使用每个 vCPU 的 10%(或 0.1),则实例的 vCPU 数量可以表示为 46 / 0.1 = 460。当此值除以内核数(56))时,比率增加到大约 8。

以下 Python 代码提供这个计算:

cores_per_OSD = 1.0
average_guest_util = 0.1 # 10%
nonceph_cores = cores - (cores_per_OSD * osds)
guest_vCPUs = nonceph_cores / average_guest_util
cpu_allocation_ratio = guest_vCPUs / cores
Copy to Clipboard Toggle word wrap

1.7. 其他资源

有关 Red Hat OpenStack Platform (RHOSP)的详细信息,请参阅以下指南:

第 2 章 扩展超融合节点

要扩展或缩减 HCI 节点,请应用相同的扩展 Compute 节点或 Red Hat Ceph Storage 节点的原则和方法。

2.1. 在 HCI 环境中扩展超融合节点

要在 HCI 环境中扩展超融合节点,请按照相同的流程扩展非超融合节点。有关更多信息,请参阅 添加节点到 overcloud

注意

在标记新节点时,请记得使用正确的类别。

有关如何通过将 OSD 添加到 Red Hat Ceph Storage 集群来扩展 HCI 节点的信息,请参阅 Deploying an Overcloud with Containerized Red Hat Ceph 中的 Adding an OSD to a Ceph Storage node 部分。

2.2. 在 HCI 环境中缩减超融合节点

要在 HCI 环境中缩减超融合节点,您必须重新平衡 HCI 节点上的 Ceph OSD 服务,从 HCI 节点迁移实例,并从 overcloud 中删除计算节点。

流程

  1. 在 HCI 节点上禁用和重新平衡 Ceph OSD 服务。此步骤是必需的,因为 director 在删除 HCI 或 Red Hat Ceph Storage 节点时不会自动重新平衡 Red Hat Ceph Storage 集群。
  2. 从 HCI 节点迁移实例。有关更多信息,请参阅配置实例创建指南中的在 Compute 节点之间迁移虚拟机
  3. 从 overcloud 移除 Compute 节点。如需更多信息,请参阅 删除计算节点

附录 A. 附加信息

A.1. 配置指南

以下配置指导旨在为创建超融合基础架构环境提供框架。此指南不适用于为每个 Red Hat OpenStack Platform 安装提供确定的配置参数。有关适合您的特定环境的具体指导和建议,请联系红帽客户体验和参与团队

A.1.1. 集群大小并横向扩展

Red Hat Ceph Storage 硬件指南 为 IOPS 优化、吞吐量优化、成本和优化 Ceph 部署场景提供建议。按照最能代表您的部署场景的建议,并添加支持计算工作负载所需的 NIC、CPU 和 RAM。

一个由 7 个节点组成的最佳的、小型配置。除非需要在环境中优化 IOPS 性能且您使用所有闪存存储的要求,否则应使用优化吞吐量的部署场景。

有三个节点 Ceph Storage 集群配置。在这个配置中,您应该:

  • 使用所有闪存存储。
  • ceph.conf 文件中,将 replica_count 参数设置为 3。
  • ceph.conf 文件中,将 min_size 参数设置为 2。

如果节点在这个配置中保留了服务,IOPS 将继续。要保留 3 个数据副本,请复制到第三个节点,直到它返回到服务为止。然后,将数据回填到第三个节点。

注意

最多 64 个节点的 HCI 配置已被测试。一些 HCI 环境示例已记录最多 128 个节点。此类大型集群可以通过 Support Exception 和 Consulting Services 服务参与来考虑。请联系红帽 客户体验与参与团队 以获取指导。

有两个 NUMA 节点的部署可以在一个 NUMA 节点上托管对延迟敏感的计算工作负载,以及另一个 NUMA OSD 服务。如果两个节点上都有网络接口,且磁盘控制器在节点 0 上,请为存储网络使用网络接口,并在节点 0 上托管 Ceph OSD 工作负载。在节点 1 上托管计算工作负载,并将其配置为使用节点 1 上的网络接口。当您需要部署硬件时,请注意哪个 NIC 将使用哪些节点,并尝试在存储和工作负载之间分割它们。

A.1.2. 容量规划和大小

Red Hat Ceph Storage 硬件指南中定义的吞吐量优化 Ceph 解决方案为不需要 IOPS 优化的大多数部署提供平衡解决方案。除了解决方案提供的配置指南外,在创建环境时请注意以下几点:

  • 每个 OSD 的 5 GB RAM 的分配可确保 OSD 具有足够的操作内存。确保您的硬件可以支持这一要求。
  • CPU 速度应与使用中的存储介质匹配。更快的存储介质(如 SSD)的优点可能会被 CPU 识别得太慢,以支持它们。同样,快速 CPU 可以被更快的存储介质更有效地使用。平衡 CPU 和存储介质速度,以便不会成为另一个 CPU 瓶颈。

法律通告

Copyright © 2025 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.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部