Menu Close
Settings Close

Language and Page Formatting Options

超融合基础架构指南

Red Hat OpenStack Platform 16.1

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

摘要

本文档描述了 hyperconvergence 的 Red Hat OpenStack Platform 实现,它将计算和 Ceph Storage 服务统一在同一主机上。

前言

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

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

使用直接文档反馈(DDF)功能

使用 添加反馈 DDF 功能,用于特定句子、段落或代码块上的直接注释。

  1. Multi-page HTML 格式查看文档。
  2. 请确定您看到文档右上角的 反馈 按钮。
  3. 用鼠标指针高亮显示您想评论的文本部分。
  4. 添加反馈
  5. 使用您的评论 完成 Add feedback 字段。
  6. 可选:添加您的电子邮件地址,以便文档团队可以联系您的问题。
  7. Submit

第 1 章 配置和部署 Red Hat OpenStack Platform 超融合基础架构

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 中的其他功能(如网络功能虚拟化)集成,并确保在超融合节点上具有 Compute 和 Red Hat Ceph Storage 服务的最佳性能,您必须完成以下操作:

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

1.1. 先决条件

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

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

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

流程

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

    [stack@director ~]$ source ~/stackrc
  3. 生成一个新的自定义角色数据文件,其中包含 ComputeHCI 角色,以及其他要用于 overcloud 的角色。以下示例生成角色数据文件 roles_data_hci.yaml,其中包括角色控制器、ComputeHCIComputeCephStorage

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

    生成的自定义角色数据文件中为 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
  4. 创建 network_data.yaml 文件的本地副本,以将可组合网络添加到您的 overcloud 中。network_data.yaml 文件与默认网络环境文件 /usr/share/openstack-tripleo-heat-templates/environments/* 交互,将您为 ComputeHCI 角色定义的网络与超融合节点相关联。有关更多信息,请参阅高级 Overcloud 自定义指南中的 添加可组合网络
  5. 为提高 Red Hat Ceph Storage 的性能,将 StorageStorageMgmt 网络的 MTU 设置更新为 9000,表示巨型帧,位于 network_data.yaml 的本地副本中。如需更多信息,请参阅 Director 和 配置巨型帧 中的配置 MTU 设置
  6. 为超融合节点创建 computeHCI overcloud 类别:

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

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

  7. 检索节点列表以标识其 UUID:

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

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.HCI <node>

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

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

    (undercloud)$ openstack flavor set \
    --property resources:CUSTOM_BAREMETAL_HCI=1 \
    computeHCI

    要确定与裸机恢复服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,将所有标点为下划线,并将前缀替换为 CUSTOM_

    注意

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

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

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

    parameter_defaults:
      OvercloudComputeHCIFlavor: computeHCI
      ComputeHCICount: 3
      OvercloudControlFlavor: baremetal
      ControllerCount: 3

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

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

使用这个流程根据序列号识别根设备。有关可以用来识别根磁盘的其他属性的详情请参考 第 1.2.1.1 节 “标识根磁盘的属性”

流程

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

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

    例如,一个节点的数据可能会显示 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"
      }
    ]
  2. 在 undercloud 上,为节点设置根磁盘。包括用于定义根磁盘的最合适的硬件属性值。

    (undercloud)$ openstack baremetal node set --property root_device='{"serial":"<serial_number>"}' <node-uuid>

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

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

    将每个节点的 BIOS 配置为从您选择的根磁盘引导。将引导顺序配置为先从网络启动,然后从根磁盘引导。

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

1.2.1.1. 标识根磁盘的属性

您可以定义多个属性以帮助 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.3. 在超融合节点上配置资源隔离

在超融合节点上查找 Ceph OSD 和计算服务,使 Red Hat Ceph Storage 和 Compute 服务间的资源争用风险,因为它们都不知道在同一主机上互相存在。资源争用可能会导致服务降级,这会降低超聚合的好处。

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

流程

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

    parameter_defaults:
      ComputeHCIParameters:
        NovaReservedHostMemory: <ram>
        NovaCPUAllocationRatio: <ratio>
    • <ram > 替换为为 Ceph OSD 服务保留的 RAM 量以及超融合节点上的实例开销(以 MB 为单位)。
    • &lt;ratio> 替换为选择部署实例的 Compute 节点时应使用的比率。

      有关自动生成的 Compute 设置的更多信息,请参阅为计算服务自动生成 CPU 和内存资源的流程

  2. 要为 Red Hat Ceph Storage 保留内存资源,请在 /home/stack/templates/storage-container-config.yaml 中将参数 is_hci 设置为 true

    parameter_defaults:
      CephAnsibleExtraConfig:
        is_hci: true

    这允许 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 会自动设置为主机的最大内存。

  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>

    <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>
    • <priority_value > 替换为与 OSD 客户端 OP 优先级相关的恢复操作的优先级。
    • <no_active_recovery_requests > 替换为每个 OSD 活跃的恢复请求数。
    • <max_no_backfills > 替换为允许或从单个 OSD 中的最大回填数量。

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

1.3.1. 为 Compute 服务保留的 CPU 和内存资源的进程

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

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

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

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

autogenerated nova.conf 参数计算环境文件覆盖描述

reserved_host_memory

parameter_defaults:
  ComputeHCIParameters:
    NovaReservedHostMemory: 181000

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

cpu_allocation_ratio

parameter_defaults:
  ComputeHCIParameters:
    NovaCPUAllocationRatio: 8.2

设置计算调度程序在选择部署实例的 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 时消除这种性能效果,您可以降低回填和恢复操作的优先级。这样做的代价是,对于更短的来说,数据副本会比较少一些,这样会使数据稍微多大。

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

参数描述默认值

osd_recovery_op_priority

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

3

osd_recovery_max_active

设置一个时间上每个 OSD 的活动恢复请求数。更多请求会加快恢复速度,但请求会增加集群中的负载。如果要降低延迟,则将其设置为 1。

3

osd_max_backfills

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

1

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

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

Ceph 只能服务有一组特定软件包的 overcloud 节点。使用预置备节点时,您可以验证是否存在这些软件包。

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

流程

验证服务器是否包含所需的软件包:

ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/ansible/validation-playbooks/ceph-dependencies-installed.yaml

1.5. 部署 HCI overcloud

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

重要

在部署 Red Hat OpenStack Platform(RHOSP)HCI 环境时,不要启用 Instance HA。如果要使用带有 Red Hat Ceph Storage 的超融合 RHOSP 部署的实例 HA,请联络您的红帽代表。

先决条件

流程

  • 将您的新角色和环境文件添加到堆栈中,使用其他环境文件并部署您的 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

    在部署命令中包含 /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

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

-e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-sriov.yaml
-e /home/stack/templates/network-environment.yaml
提示

您还可以使用 回答文件 来指定要在部署中包括的环境文件。如需更多信息,请参阅 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 出现磁盘故障,因此它会收到一个新的 factory clean 磁盘。Ansible 需要在 oc0-cephstorage-0 节点上运行,以便新磁盘可以用作 OSD,但它不需要在所有其他 Ceph 存储节点上运行。将示例环境文件和节点名称替换为适合您的环境。

流程

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

    # source stackrc
  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

      本例中包含 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
      警告
      使用 --limit 时,您必须始终将 undercloud 包含在限制列表中,否则无法执行 ceph-ansible。这是必要的,因为 ceph-ansible 执行通过 external_deploy_steps_tasks 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 内存,将 226 GB 用于计算。当节点可以托管的内存中,例如,每个节点可以托管使用 2 GB 内存 113 个实例。

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

(在 * 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))

NovaCPUAllocationRatio

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

要为超融合节点确定合适的 NovaCPUAllocationRatio,假设每个 Ceph OSD 最少使用一个核心(除非工作负载是 I/O 密集型,且在没有 SSD 的节点上)。在具有 56 个内核和 10 个 OSD 的节点上,这将使计算离开 46 个内核。如果每个实例使用 100 个接收的 CPU,则比率将是实例 vCPU 的数量除以内核数;即 46 / 56 = 0.8。但是,由于实例通常不会消耗其分配的 CPU 数量的 100 个,所以在确定所需客户机 vCPU 数量时,可以通过考虑预期百分比来提升 NovaCPUAllocationRatio

因此,如果我们可以预测实例仅在 vCPU 的每个中心(或 0.1)使用 10 个,则实例的 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

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 节点的信息,请参阅在 部署带有 容器化 Red Hat Ceph 的 Overcloud 中将 OSD 添加到 Ceph Storage 节点

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 节点