第 9 章 使用 director 为不同工作负载定义性能层
Red Hat OpenStack Platform (RHOSP) director 部署 Red Hat Ceph Storage 性能层。Ceph Storage CRUSH 规则与 CephPools
参数组合,以使用设备类功能。这会构建不同的层,以适应具有不同性能要求的工作负载。
例如,您可以为常规工作负载定义 HDD 类,以及一个 SSD 类,仅通过 SSD 分发数据以进行高性能负载。在这种情况下,当创建新的块存储卷时,您可以选择性能层,可以是 HDD 或 SSD。
如需有关 CRUSH 规则创建的更多信息,请参阅配置 CRUSH 层次结构。
在现有环境中定义性能层可能会导致 Ceph Storage 集群中的数据移动。director 在堆栈更新过程中使用 cephadm
。cephadm
应用没有验证池是否存在并包含数据的逻辑。更改与池关联的默认 CRUSH 规则会导致数据移动。如果池包含大量数据,则会移动这些数据。
如果您需要添加或删除节点的帮助或建议,请联系红帽支持。
Ceph Storage 会自动检测磁盘类型,并将其分配给对应的设备类; HDD、SSD 或 NVMe;基于 Linux 内核公开的硬件属性。
先决条件
- 对于新部署,请使用 Red Hat Ceph Storage 版本 5.2 或更高版本。
9.1. 配置性能层 复制链接链接已复制到粘贴板!
要部署不同的 Red Hat Ceph Storage 性能层,请创建一个新的环境文件,其中包含 CRUSH map 详细信息,并将它包含在部署命令中。director 不会公开此功能的特定参数,但您可以生成 tripleo-ansible
预期变量。
性能层配置可以与 CRUSH 层次结构相结合。如需有关 CRUSH 规则创建的信息,请参阅配置 CRUSH 层次结构。
在示例流程中,每个 Ceph Storage 节点包含三个 OSD: sdb
和 sdc
是 spinning 磁盘,sdc
是一个 SSD。Ceph 自动检测正确的磁盘类型。然后,配置两个 CRUSH 规则 HDD 和 SSD,以映射到两个对应的设备类。
HDD 规则是默认值,并适用于所有池,除非您使用不同的规则配置池。
最后,您要创建一个名为 fastpool
的额外池,并将它映射到 SSD 规则。此池最终通过 Block Storage (cinder)后端公开。任何消耗此块存储后端的工作负载都由 SSD 支持,才能实现快速的性能。您可以使用它用于数据或从卷引导。
- WARNING
-
在现有环境中定义性能层可能会导致 Ceph 集群中出现大量数据移动。
Cephadm
,director 在堆栈更新期间触发,没有逻辑来验证池是否已在 Ceph 集群中定义,并且是否包含数据。这意味着,在现有环境中定义性能层可能会危险,因为更改与池关联的默认 CRUSH 规则会导致数据移动。如果您需要添加或删除节点的帮助或建议,请联系红帽支持。
流程
-
以
stack
用户身份登录 undercloud 节点。 -
创建一个环境文件,如
/home/stack/templates/ceph-config.yaml
,使其包含 Ceph 配置参数和设备类变量。或者,您可以将以下配置添加到现有环境文件中。 添加
CephCrushRules
参数。crush_rules
参数必须包含您定义或 Ceph 自动检测到的每个类的规则。当您创建新池时,如果没有指定规则,则会选择您希望 Ceph 用作默认的规则。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加
CephPools
参数:-
使用
rule_name
参数为不使用默认规则的每个池指定层。在以下示例中,fastpool
池使用配置为快速层的 SSD 设备类来管理块存储卷。 使用
CinderRbdExtraPools
参数将fastpool
配置为块存储后端。CephPools: - name: fastpool rule_name: SSD application: rbd CinderRbdExtraPools: fastpool
CephPools: - name: fastpool rule_name: SSD application: rbd CinderRbdExtraPools: fastpool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
使用
使用以下示例来确保环境文件包含正确的值:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
openstack overcloud deploy
命令中包含新的环境文件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<other_overcloud_environment_files
> 替换为属于部署的其他环境文件的列表。
如果您将环境文件应用到现有的 Ceph 集群,则预先存在的 Ceph 池不会使用新规则进行更新。因此,您必须在部署后输入以下命令,以便将规则设置为指定的池。
ceph osd pool set <pool> crush_rule <rule>
$ ceph osd pool set <pool> crush_rule <rule>
- 将 <pool> 替换为您要应用新规则的池的名称。
-
将 <rule> 替换为您通过
crush_rules
参数指定的规则名称之一。
对于您使用这个命令更改的每个规则,更新现有条目或在现有模板中的 CephPools
参数中添加新条目:
CephPools: - name: <pool> rule_name: <rule> application: rbd
CephPools:
- name: <pool>
rule_name: <rule>
application: rbd