HyperConverged 基础架构指南

Red Hat OpenStack Platform 16.2

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

OpenStack Documentation Team

摘要

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

使开源包含更多

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

对红帽文档提供反馈

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

在 JIRA 中提供文档反馈

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

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

第 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 中的其他功能(如网络功能虚拟化)集成,并确保超融合节点上计算和 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 部署
  • 您已注册了环境中的所有节点。如需更多信息,请参阅 注册节点
  • 您已标记了环境中的所有节点。如需更多信息,请参阅 手动标记节点
  • 您已在计划用于计算和 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
  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
    注意

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

    - 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/environments114 角色交互,将您为 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
    • <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

    要确定与 Bare Metal 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将所有 punctuation 替换为下划线,并使用 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
      Controller: control
      ControllerCount: 3

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"

    例如,一个节点的数据可能会显示 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. 输入 openstack baremetal node set --property root_device=,为节点设置根磁盘。包括用于定义根磁盘的最合适的硬件属性值。

    (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.3. 在超融合节点上配置资源隔离

在超融合节点上并置 Ceph OSD 和 Compute 服务可能会使 Red Hat Ceph Storage 和 Compute 服务之间的资源争用,因为彼此都不知道在同一主机上存在。资源争用可能会导致服务降级,这降低了超线程的好处。

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

流程

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

    parameter_defaults:
      ComputeHCIParameters:
        NovaReservedHostMemory: <ram>
        NovaCPUAllocationRatio: <ratio>
  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 开始,ceph_osd_docker_memory_limit 会自动设置为主机的最大内存,如 Ansible 发现,无论是否使用 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>

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

    有关如何根据您的硬件和工作负载调整 CPU 资源的更多信息,请参阅 Red Hat Ceph Storage 硬件选择指南

  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. 根据这些数据,计算超融合节点上 Compute 的最佳 CPU 和内存分配工作负载。
  3. 自动生成配置这些约束所需的参数,并为计算保留 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 设置的值。

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

自动生成的 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 或单个 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

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

1.5. 部署 HCI overcloud

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

重要

在部署 Red Hat OpenStack Platform (RHOSP) HCI 环境时,不要启用实例 HA。如果要将 Instance HA 与 Red Hat Ceph Storage 搭配使用超线程 RHOSP 部署,请联系您的红帽代表。

先决条件

流程

  • 使用其他环境文件将新角色和环境文件添加到堆栈中,并部署您的 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 有一个磁盘故障,以便它收到新的工厂清理磁盘。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

      在本例中,包含控制器,因为 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 进行,该 playbook 仅在 undercloud 上运行。

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

OpenStack 工作流计算 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。为主机节点保留的内存量(即计算服务不应该使用的内存)是:

(在站 Ov 中)+(Os114 RA)

其中:

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

使用 90 个实例时,这为我们(9039) 0.5)+(1039) 3)= 75 GB。Compute 服务需要这个值(以 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 的节点上,这会为 Compute 保留 46 个内核。如果每个实例使用 100 个接收的 CPU,则比率将只是以内核数划分的实例 vCPU 数量;即 46 / 56 = 0.8。但是,由于实例通常不会消耗其分配的 CPU 消耗的 100 个,因此您可以在确定所需客户机 vCPU 数量时考虑预期百分比来提高 NovaCPUAllocationRatio

因此,如果我们可以预测实例只针对其 vCPU 使用 10 个 vCPU,那么实例的 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 节点的信息,请参阅 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 中删除 Compute 节点。

流程

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

附录 A. 附加信息

A.1. 配置指南

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

A.1.1. 集群大小并扩展

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

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

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

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

如果节点在这个配置中保留服务,则 IOPS 将继续。要保留 3 个数据副本,对第三个节点的复制会排队,直到它返回到服务。然后,数据被回填到第三个节点。

注意

最多 64 节点的 HCI 配置已被测试。一些 HCI 环境示例已被记录为 128 个节点。大型集群(如这些集群)可通过支持例外和咨询服务参与来考虑。请联系红帽 客户体验与参与团队 以获得指导。

有两个 NUMA 节点的部署可以在一个 NUMA 节点上托管对一个 NUMA 节点和 Ceph OSD 服务的延迟敏感的 Compute 工作负载。如果两个节点上都存在网络接口,并且磁盘控制器位于节点 0 上,请将节点 0 上的网络接口用于 Storage 网络,并在节点 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 和存储介质速度,以便不再成为其他的瓶颈。

法律通告

Copyright © 2024 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.