HyperConverged 基础架构指南
在 Red Hat OpenStack Platform overcloud 上了解并配置超融合基础架构
OpenStack Documentation Team
rhos-docs@redhat.com
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
在 JIRA 中提供文档反馈
使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。
- 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
- 点击以下链接打开 Create Issue 页面: Create Issue
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 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 服务的最佳性能,您必须完成以下操作:
-
为超融合节点
ComputeHCI
准备预定义的自定义 overcloud 角色。 - 配置资源隔离。
- 验证可用的 Red Hat Ceph Storage 软件包。
- 部署 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)服务并置在一起,允许您在同一超融合节点上部署它们。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:[stack@director ~]$ source ~/stackrc
生成包含
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
-
创建
network_data.yaml
文件的本地副本,将可组合的网络添加到您的 overcloud 中。network_data.yaml
文件与默认网络环境文件/usr/share/openstack-tripleo-heat-templates/environments114
角色交互,将您为ComputeHCI
角色定义的网络与超融合节点相关联。有关更多信息,请参阅高级 Overcloud 自定义指南中的 添加可组合网络。 -
要提高 Red Hat Ceph Storage 的性能,请在
network_data.yaml
的本地副本中将Storage
和StorageMgmt
网络的 MTU 设置更新为9000
,用于巨型帧。如需更多信息,请参阅 Configuring MTU Settings in Director 和 Configuring jumbo frames。 为超融合节点创建
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 数量。
注意这些属性不可用于调度实例。但是,计算调度程序使用磁盘大小来确定根分区大小。
-
将
检索节点列表来识别它们的 UUID:
(undercloud)$ openstack baremetal node list
使用自定义 HCI 资源类标记您要指定为超融合的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.HCI <node>
将
<node>
替换为裸机节点的 ID。将
computeHCI
类别与自定义 HCI 资源类关联:(undercloud)$ openstack flavor set \ --property resources:CUSTOM_BAREMETAL_HCI=1 \ computeHCI
要确定与 Bare Metal 服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将所有 punctuation 替换为下划线,并使用
CUSTOM_
前缀。注意类别只能请求一个裸机资源类实例。
设置以下类别属性,以防止计算调度程序使用裸机类别属性来调度实例:
(undercloud)$ openstack flavor set \ --property resources:VCPU=0 \ --property resources:MEMORY_MB=0 \ --property resources:DISK_GB=0 computeHCI
在
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
来设置任何其他设备的根磁盘,因为此值在节点引导时可能会改变。
您可以使用其序列号指定根设备。
步骤
从每个节点的硬件内省检查磁盘信息。运行以下命令以显示节点的磁盘信息:
(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" } ]
输入
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 和计算服务配置资源隔离,以防止争用。
流程
可选:通过在计算环境文件中添加以下参数来覆盖自动生成的 Compute 设置:
parameter_defaults: ComputeHCIParameters: NovaReservedHostMemory: <ram> NovaCPUAllocationRatio: <ratio>
-
将
<ram
> 替换为要在超融合节点上为 Ceph OSD 服务和实例开销保留的 RAM 数量,以 MB 为单位。 将
<
;ratio> 替换为在选择要在其上部署实例的 Compute 节点时应使用的比率。
-
将
要为 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 后端。可选:默认情况下,
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 硬件选择指南。
可选:通过在 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 工作流完成以下过程:
- 检索在检查硬件节点期间收集的硬件内省数据。
- 根据这些数据,计算超融合节点上 Compute 的最佳 CPU 和内存分配工作负载。
-
自动生成配置这些约束所需的参数,并为计算保留 CPU 和内存资源。这些参数在
plan-environment-derived-params.yaml
文件的hci_profile_config
部分下定义。
每个工作负载配置集中的 average_guest_memory_size_in_mb
he average_guest_cpu_utilization_percentage
参数用于计算 Compute 的 reserved_host_memory
和 cpu_allocation_ratio
设置的值。
您可以通过在计算环境文件中添加以下参数来覆盖自动生成的计算设置:
自动生成的 nova.conf 参数 | 计算环境文件覆盖 | 描述 |
---|---|---|
|
parameter_defaults: ComputeHCIParameters: NovaReservedHostMemory: 181000 | 设置应当为 Ceph OSD 服务和超融合节点上每个客户机实例开销保留多少 RAM。 |
|
parameter_defaults: ComputeHCIParameters: NovaCPUAllocationRatio: 8.2 | 在选择要在其上部署实例的 Compute 节点时,计算调度程序应使用的比率。 |
这些覆盖应用到使用 ComputeHCI 角色的所有节点,即所有超融合节点。有关手动确定 NovaReservedHostMemory
和 NovaCPUAllocationRatio
的最佳值的更多信息,请参阅 OpenStack Workflow Compute CPU 和内存计算器。
您可以使用以下脚本为您的超融合节点计算合适的基准 NovaReservedHostMemory
和 NovaCPUAllocationRatio
值。
其他资源
1.3.2. Red Hat Ceph Storage 回填和恢复操作
删除 Ceph OSD 时,Red Hat Ceph Storage 使用回填和恢复操作来重新平衡集群。Red Hat Ceph Storage 的性能根据放置组策略保留多个数据副本。这些操作使用系统资源。如果 Red Hat Ceph Storage 集群负载不足,则其性能会在将资源划分为回填和恢复时丢弃。
要在移除 OSD 过程中缓解这个性能影响,您可以降低回填和恢复操作的优先级。这样做的原因是,更长的数据副本需要较少的时间,这会使数据面临更高的风险。
下表中详述的参数用于配置回填和恢复操作的优先级。
参数 | 描述 | 默认值 |
---|---|---|
| 根据 OSD 客户端 OP 优先级,设置恢复操作的优先级。 | 3 |
| 一次性设置每个 OSD 活跃的恢复请求数。更多请求可以加快恢复速度,但请求会增加集群的负载。如果要缩短延迟,则将其设置为 1。 | 3 |
| 设置允许从一个 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 部署,请联系您的红帽代表。
先决条件
-
对于所有其他 Red Hat Ceph Storage 设置,您可以使用单独的基本环境文件或一组文件,例如
/home/stack/templates/storage-config.yaml
。有关更多信息,请参阅自定义存储服务 和 附录 A. Sample 环境文件:创建 Ceph 存储集群。 - 您已定义了您要分配给基本环境文件中各个角色的节点数量。如需更多信息,请参阅 将节点和类别分配给角色。
-
在 undercloud 安装过程中,您可以在
undercloud.conf
文件中设置generate_service_certificate=false
。否则,在部署 overcloud 时您必须注入一个信任定位符,如 Overcloud Public Endpoints 上启用 SSL/TLS 中所述。
流程
使用其他环境文件将新角色和环境文件添加到堆栈中,并部署您的 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-download
和 ceph-ansible
。此功能很有用,例如,作为扩展 overcloud 的一部分或替换失败的磁盘的一部分。在这些情况下,部署只能在添加到环境中的新节点上运行。
在故障磁盘替换中使用 --limit
的示例
在以下示例中,Ceph 存储节点 oc0-cephstorage-0
有一个磁盘故障,以便它收到新的工厂清理磁盘。Ansible 需要在 oc0-cephstorage-0
节点上运行,以便新磁盘可以用作 OSD,但它不需要在所有其他 Ceph 存储节点上运行。将示例环境文件和节点名称替换为您的环境。
流程
以
stack
用户身份登录 undercloud 节点,并提供stackrc
凭证文件:# source stackrc
完成以下步骤以之一,以便使用新磁盘来启动缺少的 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 和内存的最佳设置,并使用结果填充 NovaReservedHostMemory
和 NovaCPUAllocationRatio
参数。
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)的详细信息,请参阅以下指南:
- director 安装和使用 :本指南提供了有关 RHOSP 环境的端到端部署的指导,包括 undercloud 和 overcloud。
- 高级 Overcloud 自定义 :本指南介绍了如何通过 director 配置高级 RHOSP 功能,如如何使用自定义角色。
- 使用容器化 Red Hat Ceph 部署 Overcloud :本指南介绍了如何部署使用 Red Hat Ceph Storage 作为存储供应商的 overcloud。
- 网络指南 :本指南提供有关 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 节点。
流程
- 在 HCI 节点上禁用并重新平衡 Ceph OSD 服务。此步骤是必需的,因为在删除 HCI 或 Red Hat Ceph Storage 节点时,director 不会自动重新平衡 Red Hat Ceph Storage 集群。
- 从 HCI 节点迁移实例。有关更多信息,请参阅配置实例创建指南中的在 Compute 节点之间迁移虚拟机。
- 从 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 和存储介质速度,以便不再成为其他的瓶颈。