将 Red Hat Ceph Storage 和 Red Hat OpenStack Platform 与 director 一起部署
配置 director 以部署和使用 Red Hat Ceph Storage 集群
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
在 JIRA 中提供文档反馈
使用 Create Issue 表单在 OpenShift (RHOSO)或更早版本的 Red Hat OpenStack Platform (RHOSP)上提供有关 Red Hat OpenStack Services 文档的反馈。当您为 RHOSO 或 RHOSP 文档创建问题时,这个问题将在 RHOSO Jira 项目中记录,您可以在其中跟踪您的反馈的进度。
要完成 Create Issue 表单,请确保您已登录到 JIRA。如果您没有红帽 JIRA 帐户,您可以在 https://issues.redhat.com 创建一个帐户。
- 点击以下链接打开 Create Issue 页面: Create Issue
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 Create。
第 1 章 部署 overcloud 和 Red Hat Ceph Storage
Red Hat OpenStack Platform (RHOSP) director 部署云环境,也称为 overcloud,以及 Red Hat Ceph Storage。director 使用通过 tripleo-ansible
软件包提供的 Ansible playbook 来部署 Ceph Storage 集群。director 还管理 Ceph 存储集群的配置和扩展操作。
有关 Red Hat Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage 架构指南。
如需有关 Red Hat OpenStack Platform 中服务的更多信息,请参阅使用 CLI 工具配置基本的 overcloud, 请参阅使用 director 安装和管理 Red Hat OpenStack Platform。
1.1. Red Hat Ceph Storage 集群
Red Hat Ceph Storage 是一个分布式数据对象存储,旨在提高性能、可靠性和可扩展性。分布式对象存储使用无结构的数据来同时服务现代和旧对象接口。
Ceph Storage 部署为集群。Ceph Storage 集群由两个主要类型的守护进程组成:
- Ceph Object Storage Daemon (CephOSD)- CephOSD 执行数据存储、数据复制、重新平衡、恢复、监控和报告任务。
- Ceph Monitor (CephMon)- CephMon 使用集群的当前状态维护 cluster map 的主要副本。
有关 Red Hat Ceph Storage 的更多信息,请参阅 Red Hat Ceph Storage 架构指南。
1.2. Red Hat Ceph Storage 节点和 RHEL 兼容性
RHOSP 17.1 在 RHEL 9.2 上被支持。但是,映射到 Ceph Storage 角色的主机会更新到最新的主 RHEL 版本。
1.3. Red Hat Ceph Storage 兼容性
RHOSP 17.1 支持用于新部署的 Red Hat Ceph Storage 6。RHOSP 17.1 仅支持从 RHOSP 16.2 和 Red Hat Ceph Storage 4 升级的 Red Hat Ceph Storage 5。
1.4. 部署 Red Hat Ceph Storage
您可以在两个阶段部署 Red Hat Ceph Storage:
- 在部署 overcloud 之前,创建 Red Hat Ceph Storage 集群。
- 在 overcloud 部署期间配置 Red Hat Ceph Storage 集群。
创建 Ceph 存储集群可随时提供 Ceph RADOS 块设备(RBD)服务。另外,以下服务在适当的节点上运行:
- Ceph 监控器(CephMon)
- Ceph 管理器(CephMgr)
- Ceph OSD (CephOSD)
池和 cephx 密钥是在配置阶段创建的。
在配置阶段后,以下 Ceph Storage 组件将不可用:
- Ceph 控制面板(CephDashboard)
- Ceph 对象网关(CephRGW)
- Ceph MDS (CephMds)
Red Hat Ceph Storage 集群配置在 overcloud 部署期间完成。Ceph 对象网关和 Ceph 控制面板等守护进程和服务根据 overcloud 定义进行部署。Red Hat OpenStack Platform (RHOSP)服务被配置为 Ceph Storage 集群客户端。
1.5. Red Hat Ceph Storage 部署要求
在创建 Ceph Storage 集群之前,需要调配网络资源和裸机实例。在创建 Red Hat Ceph Storage 集群前配置以下内容:
-
使用
openstack overcloud network provision
命令和cli-overcloud-network-provision.yaml
ansible playbook 置备网络。 -
使用
openstack overcloud node provision
命令置备裸机实例,以使用cli-overcloud-node-provision.yaml
ansible playbook 置备裸机实例。
有关这些任务的更多信息,请参阅:
overcloud 环境中必须存在以下元素才能完成 Ceph 存储集群配置:
- 在 undercloud 主机上安装的 Red Hat OpenStack Platform director。请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的安装 director。
- 安装推荐的硬件来支持 Red Hat Ceph Storage。有关推荐硬件的更多信息,请参阅 Red Hat Ceph Storage 硬件指南。
1.6. 部署后验证
director 部署 Ceph Storage 集群,以使用 cephadm
命令执行的 tripleo-ansible
角色提供 Ceph RADOS 块设备(RBD)。
在 cephadm
完成 Ceph Storage 部署后验证以下内容:
-
SSH 访问 CephMon 服务节点,以使用
sudo cephadm shell
命令。 所有 OSD 操作。
注意检查操作 OSD 以了解环境问题,如未清理的磁盘。
-
CephMon 服务节点的
/etc/ceph
目录中的 Ceph 配置文件和客户端管理密钥环文件。 - Ceph Storage 集群已准备好提供 RBD。
池、cephx 密钥、CephDashboard 和 CephRGW 使用 openstack overcloud deploy
命令在 overcloud 部署过程中配置。这是因为两个原因:
-
控制面板和 RGW 服务必须与
haproxy
集成。这使用 overcloud 部署。 - 池和 cephx 密钥的创建取决于部署哪些 OpenStack 客户端。
这些资源在 Ceph Storage 集群中通过 openstack overcloud ceph deploy
命令使用客户端管理密钥环文件和 ~/deployed_ceph.yaml
文件输出创建。
有关 cephadm
的更多信息,请参阅 Red Hat Ceph Storage 安装指南。
第 2 章 为部署准备 Ceph Storage 节点
Red Hat Ceph Storage 节点是具有 IPMI 电源管理的裸机系统。director 会在每个节点上安装 Red Hat Enterprise Linux。
director 在内省和调配过程中通过 Provisioning 网络与每个节点通信。所有节点都通过原生 VLAN 连接到 Provisioning 网络。
有关 overcloud 部署前裸机置备的更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 指南中的置备和部署 overcloud。
有关裸机部署的完整指南,请参阅配置裸机置备服务。
2.1. 清理 Ceph Storage 节点磁盘
Ceph Storage OSD 和日志分区需要工厂清理磁盘。在安装 Ceph OSD 服务前,所有数据和元数据都必须由这些磁盘中的 Bare Metal Provisioning 服务(ironic)清除。
您可以使用裸机置备服务将 director 配置为默认删除所有磁盘数据和元数据。当 director 配置为执行此任务时,裸机置备服务会执行额外步骤来在每次节点设置为 可用时
引导节点。
裸机置备服务使用 wipefs --force --all
命令。这个命令会删除磁盘上的所有数据和元数据,但不执行安全清除。安全擦除需要更长的时间。
流程
打开
/home/stack/undercloud.conf
并添加以下参数:clean_nodes=true
-
保存
/home/stack/undercloud.conf
。 更新 undercloud 配置。
openstack undercloud install
2.2. 注册节点
注册节点以启用与 director 的通信。
流程
-
在
/home/stack
中创建节点清单 JSON 文件。 输入每个节点的硬件和电源管理详情。
例如:
{ "nodes":[ { "mac":[ "b1:b1:b1:b1:b1:b1" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.205" }, { "mac":[ "b2:b2:b2:b2:b2:b2" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.206" }, { "mac":[ "b3:b3:b3:b3:b3:b3" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.207" }, { "mac":[ "c1:c1:c1:c1:c1:c1" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.208" }, { "mac":[ "c2:c2:c2:c2:c2:c2" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.209" }, { "mac":[ "c3:c3:c3:c3:c3:c3" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.210" }, { "mac":[ "d1:d1:d1:d1:d1:d1" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.211" }, { "mac":[ "d2:d2:d2:d2:d2:d2" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.212" }, { "mac":[ "d3:d3:d3:d3:d3:d3" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.213" } ] }
- 保存新文件。
初始化 stack 用户:
$ source ~/stackrc
将 JSON 清单文件导入到 director 并注册节点
$ openstack overcloud node import <inventory_file>
将
<inventory_file>
替换为第一步中创建的文件的名称。将内核和 ramdisk 镜像分配给每个节点:
$ openstack overcloud node configure <node>
2.3. 验证可用的 Red Hat Ceph Storage 软件包
验证所有必需的软件包都可用,以避免 overcloud 部署失败。
2.3.1. 验证 cephadm 软件包安装
验证至少一个 overcloud 节点上安装 cephadm
软件包。cephadm
软件包用于引导 Ceph Storage 集群的第一个节点。
cephadm
软件包包含在 overcloud-hardened-uefi-full.qcow2
镜像中。tripleo_cephadm
角色使用 Ansible package 模块来确保镜像中存在。
2.4. 为多磁盘 Ceph 集群定义根磁盘
Ceph Storage 节点通常使用多个磁盘。director 必须在多个磁盘配置中识别根磁盘。在置备过程中,overcloud 镜像被写入根磁盘。
硬件属性用于识别根磁盘。有关可以用来识别根磁盘的属性的更多信息,请参阅 标识根磁盘的属性。
流程
从每个节点的硬件内省验证磁盘信息:
(undercloud)$ openstack baremetal introspection data save <node_uuid> --file <output_file_name>
-
将
<node_uuid
> 替换为节点的 UUID。 将 <
output_file_name
> 替换为包含节点内省输出的文件的名称。例如,一个节点的数据可能会显示 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" } ]
-
将
使用唯一硬件属性为节点设置根磁盘:
(undercloud)$ openstack baremetal node set --property root_device='{<property_value>}' <node-uuid>
-
将 <
property_value
> 替换为来自内省数据的唯一硬件属性值,以设置根磁盘。 将
<node_uuid
> 替换为节点的 UUID。注意唯一的硬件属性是硬件内省步骤中唯一标识磁盘的任何属性。例如,以下命令使用磁盘序列号来设置根磁盘:
(undercloud)$ openstack baremetal node set --property root_device='{"serial": "61866da04f380d001ea4e13c12e36ad6"}' 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0
-
将 <
- 将每个节点的 BIOS 配置为从网络首次引导,然后是根磁盘。
director 识别特定磁盘以用作根磁盘。运行 openstack overcloud node provision
命令时,director 置备 overcloud 镜像并将其写入根磁盘。
2.4.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
属性为没有持久名称的设备设置根磁盘,因为该值可在节点引导时更改。
2.5. 使用 overcloud-minimal 镜像来避免使用红帽订阅授权
Red Hat OpenStack Platform (RHOSP)部署的默认镜像是 overcloud-hardened-uefi-full.qcow2
。overcloud-hardened-uefi-full.qcow2
镜像使用有效的 Red Hat OpenStack Platform (RHOSP)订阅。当您不希望使用您的订阅权利时,您可以使用 overcloud-minimal
镜像,以避免达到您付费红帽订阅的限制。例如,当您要只置备带有 Ceph 守护进程的节点,或者想要调配您不想运行任何其他 OpenStack 服务的裸机操作系统(OS)时,这非常有用。有关如何获取 overcloud-minimal
镜像的详情,请参考 获取 overcloud 节点的镜像。
overcloud-minimal
镜像仅支持标准 Linux 网桥。overcloud-minimal
镜像不支持 Open vSwitch (OVS),因为 OVS 是一个需要 Red Hat OpenStack Platform 订阅权利的 OpenStack 服务。部署 Ceph Storage 节点不需要 OVS。使用 linux_bond
定义绑定,而不使用 ovs_bond
。
流程
-
打开
/home/stack/templates/overcloud-baremetal-deploy.yaml
文件。 为您要使用
overcloud-minimal
镜像的节点添加或更新image
属性。您可以将特定节点上的镜像设置为overcloud-minimal
,或将角色的所有节点设置为 overcloud-minimal。注意overcloud 最小镜像不是整个磁盘镜像。内核和 ramdisk 必须在
/home/stack/templates/overcloud-baremetal-deploy.yaml
文件中指定。特定节点
- name: Ceph count: 3 instances: - hostname: overcloud-ceph-0 name: node00 image: href: file:///var/lib/ironic/images/overcloud-minimal.raw kernel: file://var/lib/ironic/images/overcloud-minimal.vmlinuz ramdisk: file://var/lib/ironic/images/overcloud-minimal.initrd - hostname: overcloud-ceph-1 name: node01 image: href: file:///var/lib/ironic/images/overcloud-minimal.raw kernel: file://var/lib/ironic/images/overcloud-minimal.vmlinuz ramdisk: file://var/lib/ironic/images/overcloud-minimal.initrd - hostname: overcloud-ceph-2 name: node02 image: href: file:///var/lib/ironic/images/overcloud-minimal.raw kernel: file://var/lib/ironic/images/overcloud-minimal.vmlinuz ramdisk: file://var/lib/ironic/images/overcloud-minimal.initrd
特定角色的所有节点
- name: Ceph count: 3 defaults: image: href: file:///var/lib/ironic/images/overcloud-minimal.raw kernel: file://var/lib/ironic/images/overcloud-minimal.vmlinuz ramdisk: file://var/lib/ironic/images/overcloud-minimal.initrd instances: - hostname: overcloud-ceph-0 name: node00 - hostname: overcloud-ceph-1 name: node01 - hostname: overcloud-ceph-2 name: node02
在
roles_data.yaml
角色定义文件中,将rhsm_enforce
参数设置为False
。rhsm_enforce: False
运行 provisioning 命令:
(undercloud)$ openstack overcloud node provision \ --stack overcloud \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yaml
-
将
overcloud-baremetal-deployed.yaml
环境文件传递给openstack overcloud ceph deploy
命令。
2.6. 为 Red Hat Ceph Storage 设计节点
要为 Red Hat Ceph Storage 指定节点,您必须创建一个新角色文件来配置 CephStorage
角色,并使用 CephStorage
的资源类配置裸机节点。
步骤
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:[stack@director ~]$ source ~/stackrc
生成一个名为
roles_data.yaml
的新角色数据文件,其中包含Controller
、Compute
和CephStorage
角色:(undercloud)$ openstack overcloud roles \ generate Controller Compute CephStorage -o /home/stack/templates/roles_data.yaml \
打开
roles_data.yaml
,并确保它有以下参数和部分:section/Parameter 值 role 注释
Role: CephStorage
角色名称
名称 :CephStorage
description
Ceph 节点角色
HostnameFormatDefault
%stackname%-novaceph-%index%
deprecated_nic_config_name
ceph.yaml
- 将 overcloud 的 Ceph 节点添加到节点定义模板中,以注册它们。
检查节点硬件:
(undercloud)$ openstack overcloud node introspect --all-manageable --provide
使用自定义 Ceph 资源类标记您要为 Ceph 指定的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.CEPH <node>
将
<node>
替换为裸机节点的 ID。将
CephStorage
角色添加到overcloud-baremetal-deploy.yaml
文件中,并定义您要分配给节点的任何预先节点放置、资源类或其他属性:- name: Controller count: 3 - name: Compute count: 3 - name: CephStorage count: 5 defaults: resource_class: baremetal.CEPH
运行 provisioning 命令:
(undercloud)$ openstack overcloud node provision \ --stack stack \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yaml
在一个单独的终端中监控置备进度。当置备成功时,节点状态将从
available
变为active
:(undercloud)$ watch openstack baremetal node list
其他资源
- 有关节点注册的更多信息,请参阅 第 2.2 节 “注册节点”。
- 有关检查节点硬件的更多信息,请参阅安装和管理 Red Hat OpenStack Platform 指南中的创建裸机节点硬件清单。
第 3 章 配置 Red Hat Ceph Storage 集群
要为 Red Hat OpenStack Platform 环境部署 Red Hat Ceph Storage 集群,您必须首先为您的环境配置 Red Hat Ceph Storage 集群选项。
配置 Red Hat Ceph Storage 集群选项:
先决条件
在配置和部署 Red Hat Ceph Storage 集群前,请使用裸机置备服务(ironic)来置备裸机实例和网络。如需更多信息 ,请参阅配置裸机置备服务。
3.1. openstack overcloud ceph deploy
命令
如果使用 director 部署 Ceph 集群,则必须使用 openstack overcloud ceph deploy
命令。有关命令选项和参数的完整列表,请参阅 命令行界面参考中的 openstack overcloud ceph deploy。
openstack overcloud ceph deploy --help
命令提供环境中当前可用的选项和参数。
3.2. Ceph 配置文件
标准格式初始化文件是执行 Ceph 集群配置的一种方法。此初始化文件用于配置 Ceph 集群。使用以下命令之一使用此文件:* cephadm boottap --config <file_name>
* openstack overcloud ceph deploy --config <file_name>
命令。
示例
以下示例创建一个名为 initial-ceph.conf
的简单初始化文件,然后使用 openstack overcloud ceph deploy
命令来为其配置 Ceph 集群。它演示了如何将 messenger v2 协议配置为使用加密通过网络传递的所有数据的安全模式。
$ cat <<EOF > initial-ceph.conf [global] ms_cluster_mode = secure ms_service_mode = secure ms_client_mode = secure EOF $ openstack overcloud ceph deploy --config initial-ceph.conf ...
3.3. 配置时间同步
时间同步服务(chrony)会被默认启用进行时间同步。您可以执行以下任务来配置服务。
使用分隔列表或环境文件配置时间同步。使用最适合您的管理实践的流程。
3.3.1. 使用分隔列表配置时间同步
您可以将时间同步服务(chrony)配置为使用分隔的列表来配置 NTP 服务器。
流程
-
以
stack
用户身份登录 undercloud 节点。 使用分隔列表配置 NTP 服务器:
openstack overcloud ceph deploy \ --ntp-server "<ntp_server_list>"
将
<ntp_server_list
> 替换为以逗号分隔的服务器列表。openstack overcloud ceph deploy \ --ntp-server "0.pool.ntp.org,1.pool.ntp.org"
3.3.2. 使用环境文件配置时间同步
您可以配置时间同步服务(chrony),以使用定义 NTP 服务器的环境文件。
流程
-
以
stack
用户身份登录 undercloud 节点。 -
创建一个环境文件,如
/home/stack/templates/ntp-parameters.yaml
,使其包含 NTP 服务器配置。 添加
NtpServer
参数。NtpServer
参数包含以逗号分隔的 NTP 服务器列表。parameter_defaults: NtpServer: 0.pool.ntp.org,1.pool.ntp.org
使用环境文件配置 NTP 服务器:
openstack overcloud ceph deploy \ --ntp-heat-env-file "<ntp_file_name>"
将
<ntp_file_name>
替换为您创建的环境文件的名称。openstack overcloud ceph deploy \ --ntp-heat-env-file "/home/stack/templates/ntp-parameters.yaml"
3.3.3. 禁用时间同步
时间同步服务(chrony)默认启用。如果您不想使用该服务,您可以禁用该服务。
流程
-
以
stack
用户身份登录 undercloud 节点。 禁用时间同步服务(chrony):
openstack overcloud ceph deploy \ --skip-ntp
3.4. 配置顶级域后缀
您可以配置顶级域(TLD)后缀。此后缀添加到短主机名中,以便为 overcloud 节点创建完全限定域名。
TLS-e 配置需要一个完全限定域名。
流程
-
以
stack
用户身份登录 undercloud 节点。 配置顶级域后缀:
openstack overcloud ceph deploy \ --tld "<domain_name>"
将
<domain_name
> 替换为所需的域名。openstack overcloud ceph deploy \ --tld "example.local"
3.5. 配置 Red Hat Ceph Storage 集群名称
您可以使用您配置的名称部署 Red Hat Ceph Storage 集群。默认名称为 ceph。
流程
-
以
stack
用户身份登录 undercloud 节点。 使用以下命令配置 Ceph Storage 集群的名称:
openstack overcloud ceph deploy \ --cluster <cluster_name>
$ OpenStack overcloud ceph deploy \ --cluster central \
目前不会创建密钥环文件。密钥环文件是在 overcloud 部署期间创建的。密钥环文件继承此流程中配置的集群名称。有关 overcloud 部署的更多信息,请参阅 第 8.1 节 “启动 overcloud 部署”
在上例中,Ceph 集群名为 central。在部署过程中,将在 /etc/ceph
中创建 中央 Ceph 集群的配置和密钥环文件。
[root@oc0-controller-0 ~]# ls -l /etc/ceph/ total 16 -rw-------. 1 root root 63 Mar 26 21:49 central.client.admin.keyring -rw-------. 1 167 167 201 Mar 26 22:17 central.client.openstack.keyring -rw-------. 1 167 167 134 Mar 26 22:17 central.client.radosgw.keyring -rw-r--r--. 1 root root 177 Mar 26 21:49 central.conf
故障排除
如果您为 Ceph Storage 集群配置自定义名称,可能会显示以下错误:
monclient: get_monmap_and_config 无法识别要联系的监控器,因为
如果显示此错误,请在 Ceph 部署后使用以下命令:
cephadm shell --config <configuration_file> --keyring <keyring_file>
例如,如果在将集群名称配置为 中央
时显示这个错误,您可以使用以下命令:
cephadm shell --config /etc/ceph/central.conf \ --keyring /etc/ceph/central.client.admin.keyring
以下命令也可以用作替代方案:
cephadm shell --mount /etc/ceph:/etc/ceph export CEPH_ARGS='--cluster central'
3.6. 使用网络数据文件配置网络选项
网络数据文件描述了 Red Hat Ceph Storage 集群使用的网络。
流程
-
以
stack
用户身份登录 undercloud 节点。 创建一个 YAML 格式文件,用于定义名为
network_data.yaml
的自定义网络属性。重要使用网络隔离,标准网络部署由两个存储网络组成,它们映射到两个 Ceph 网络:
-
存储网络
storage
映射到 Ceph network, 网络public_network
。此网络处理存储流量,如从 Compute 节点到 Ceph 集群的 RBD 流量。 -
存储网络
storage_mgmt
映射到 Ceph 网络cluster_network
。此网络处理存储管理流量,如 Ceph OSD 之间的数据复制。
-
存储网络
使用
openstack overcloud ceph deploy
命令和--crush-hierarchy
选项来部署配置。openstack overcloud ceph deploy \ deployed_metal.yaml \ -o deployed_ceph.yaml \ --network-data network_data.yaml
重要openstack overcloud ceph deploy
命令使用--network-data
选项指定的网络数据文件来确定要用作public_network
和cluster_network
的网络。该命令假设这些网络在网络数据文件中名为storage
和storage_mgmt
,除非由--public-network-name
和--cluster-network-name
选项指定不同的名称。在使用网络隔离部署时,您必须使用
--network-data
选项。如果没有使用这个选项,默认的 undercloud (192.168.24.0/24)将同时用于public_network
和cluster_network
。
3.7. 使用配置文件配置网络选项
可以使用配置文件来指定网络选项,作为网络数据文件的替代选择。
使用此方法配置网络选项覆盖 network_data.yaml
中自动生成的值。在使用这种网络配置方法时,请确保设置了所有四个值。
流程
-
以
stack
用户身份登录 undercloud 节点。 - 创建标准格式初始化文件来配置 Ceph 集群。如果您已经创建了一个文件来包含其他配置选项,您可以将网络配置添加到其中。
在文件的
[global]
部分添加以下参数:-
public_network
-
cluster_network
ms_bind_ipv4
重要确保
public_network
和cluster_network
映射到与storage
和storage_mgmt
相同的网络。以下是具有多个子网和自定义网络名称的网络配置的配置文件条目示例:
[global] public_network = 172.16.14.0/24,172.16.15.0/24 cluster_network = 172.16.12.0/24,172.16.13.0/24 ms_bind_ipv4 = True ms_bind_ipv6 = False
-
使用命令
openstack overcloud ceph deploy
和--config
选项来部署配置文件。$ openstack overcloud ceph deploy \ --config initial-ceph.conf --network-data network_data.yaml
3.8. 为 OSD 配置 CRUSH 层次结构
您可以在 OSD 部署期间配置自定义受控复制(CRUSH)层次结构,将 OSD location
属性添加到 Ceph Storage 集群主机
规格中。location
属性配置 OSD 放置到 CRUSH 层次结构中的位置。
location
属性仅设置初始 CRUSH 位置。属性的后续更改将被忽略。
流程
-
以
stack
用户身份登录 undercloud 节点。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
-
创建配置文件以定义自定义 CRUSH 层次结构,如
crush_hierarchy.yaml
。 在文件中添加以下配置:
<osd_host>: root: default rack: <rack_num> <osd_host>: root: default rack: <rack_num> <osd_host>: root: default rack: <rack_num>
-
将
<osd_host
> 替换为部署 OSD 的节点的主机名,如ceph-0
。 -
将
<rack_num
> 替换为部署 OSD 的机架数量,如r0
。
-
将
使用自定义 OSD 布局部署 Ceph 集群:
openstack overcloud ceph deploy \ deployed_metal.yaml \ -o deployed_ceph.yaml \ --osd-spec osd_spec.yaml \ --crush-hierarchy crush_hierarchy.yaml
Ceph 集群是使用自定义 OSD 布局创建的。
上面的示例文件将导致以下 OSD 布局。
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.02939 root default -3 0.00980 rack r0 -2 0.00980 host ceph-node-00 0 hdd 0.00980 osd.0 up 1.00000 1.00000 -5 0.00980 rack r1 -4 0.00980 host ceph-node-01 1 hdd 0.00980 osd.1 up 1.00000 1.00000 -7 0.00980 rack r2 -6 0.00980 host ceph-node-02 2 hdd 0.00980 osd.2 up 1.00000 1.00000
Ceph 自动检测设备类,但 CRUSH 规则与池相关联。在 overcloud 部署期间,仍然使用 CephCrushRules
参数定义和创建池。
其他资源
如需更多信息,请参阅 Red Hat Ceph Storage 安装指南中的 Red Hat Ceph Storage 工作负载注意事项。
3.9. 配置 Ceph 服务放置选项
您可以使用自定义角色文件定义哪些节点运行哪些 Ceph 服务。只有因为环境而不使用默认角色分配时才需要自定义角色文件。例如,部署超融合节点时,预部署计算节点应标记为 osd,服务类型为 osd,具有包含计算实例列表的放置列表。
roles_data.yaml
文件中的服务定义决定了哪个裸机实例运行哪个服务。默认情况下,Controller 角色具有 CephMon 和 CephMgr 服务,而 CephStorage 角色具有 CephOSD 服务。与大多数可组合服务不同,Ceph 服务不需要 heat 输出来确定如何配置服务。roles_data.yaml
文件始终决定 Ceph 服务放置,即使 Heat 运行前发生了部署的 Ceph 进程。
流程
-
以
stack
用户身份登录 undercloud 节点。 - 创建定义自定义角色的 YAML 格式文件。
部署配置文件:
$ openstack overcloud ceph deploy \ deployed_metal.yaml \ -o deployed_ceph.yaml \ --roles-data custom_roles.yaml
3.10. 为 Ceph 节点配置 SSH 用户选项
openstack overcloud ceph deploy
命令创建用户和密钥,并将其分发到主机,因此不需要执行本节中的流程。但是,它是一个受支持的选项。
Cephadm 使用 SSH 连接到所有受管的远程 Ceph 节点。Red Hat Ceph Storage 集群部署过程在所有 overcloud Ceph 节点上创建一个帐户和 SSH 密钥对。然后,为 Cephadm 提供密钥对,以便它可以与节点通信。
3.10.1. 在 Red Hat Ceph Storage 集群创建前创建 SSH 用户
您可以使用 openstack overcloud ceph user enable
命令在 Ceph 集群创建前创建 SSH 用户。
流程
-
以
stack
用户身份登录 undercloud 节点。 创建 SSH 用户:
$ OpenStack overcloud ceph user enable <specification_file>
将 <
specification_file
> 替换为 Ceph 规格文件的路径和名称,该文件描述了创建用户的集群,并安装公共 SSH 密钥。规范文件提供了用于确定要修改哪些节点以及是否需要私钥的信息。有关创建规格文件的更多信息 ,请参阅生成服务规格。
注意默认用户名是
ceph-admin
。要指定不同的用户名,请使用--cephadm-ssh-user
选项指定不同的用户名。OpenStack overcloud ceph user enable --cephadm-ssh-user <custom_user_name>
建议您使用默认名称,而不使用
--cephadm-ssh-user
参数。如果事先创建用户,请在执行
openstack overcloud ceph deploy
时使用参数--skip-user-create
。
3.10.2. 禁用 SSH 用户
禁用 SSH 用户会禁用 cephadm
。禁用 cephadm
会删除服务管理 Ceph 集群的功能,并防止关联的命令正常工作。它还可防止 Ceph 节点 overcloud 扩展操作。它还会删除所有公钥和 SSH 私钥。
流程
-
以
stack
用户身份登录 undercloud 节点。 使用命令
openstack overcloud ceph user disable --fsid <FSID> <specification_file&
gt; 来禁用 SSH 用户。-
将
<FSID
> 替换为集群的文件系统 ID。FSID 是集群的唯一标识符。FSID 位于deployed_ceph.yaml
环境文件中。 将 <
;specification_file
> 替换为描述用户创建集群的 Ceph 规格文件的路径和名称。重要不建议
openstack overcloud ceph user disable
命令,除非需要禁用cephadm
。重要要在禁用后启用 SSH 用户和 Ceph 编配器服务,请使用
openstack overcloud ceph user enable --fsid <FSID> <specification_file>
命令。注意此命令需要 Ceph 规格文件的路径来确定:
- 哪些主机需要 SSH 用户。
- 哪些主机具有 _admin 标签,并且需要 SSH 私钥。
- 哪些主机需要 SSH 公钥。
有关规格文件以及如何生成它们的更多信息,请参阅生成服务规格。
-
将
3.11. 访问 Ceph Storage 容器
安装和管理 Red Hat OpenStack Platform 指南中的 准备容器镜像,其中包含有关如何准备 registry 和 undercloud 和 overcloud 配置以使用容器镜像的步骤和信息。使用本节中的信息,调整这些步骤来访问 Ceph Storage 容器。
从 overcloud 访问 Ceph Storage 容器有两个选项。
3.11.1. 直接从远程 registry 下载容器
您可以将 Ceph 配置为直接从远程 registry 下载容器。
cephadm
命令使用 containers-prepare-parameter.yaml
文件中配置的凭证来对远程 registry 进行身份验证并下载 Red Hat Ceph Storage 容器。
流程
-
使用 安装和管理 Red Hat OpenStack Platform 指南中的 Preparing container -prepare-parameter.yaml 文件创建
containers-prepare-parameter.yaml
文件。 -
使用
ContainerImageRegistryCredentials
参数将远程 registry 凭证添加到containers-prepare-parameter.yaml
文件中,如 从私有 registry 获取容器镜像 中所述。 部署 Ceph 时,使用
openstack overcloud ceph deploy
命令传递containers-prepare-parameter.yaml
文件。openstack overcloud ceph deploy \ --container-image-prepare containers-prepare-parameter.yaml
注意如果您没有将 undercloud 上的容器缓存,如 undercloud 上的缓存容器 中所述,那么在部署 Ceph 时,您应该将相同的
containers-prepare-parameter.yaml
文件传递给openstack overcloud ceph deploy
命令。这将在 undercloud 上缓存容器。
3.11.2. 在 undercloud 上缓存容器
在准备过程中修改镜像 的流程描述了使用以下命令:
sudo openstack tripleo container image prepare \ -e ~/containers-prepare-parameter.yaml \
如果您不使用 --container-image-prepare
选项为 openstack overcloud ceph deploy
命令提供身份验证凭据,并直接从远程 registry 下载 Ceph 容器,如 部署 Ceph 之前,您必须运行 sudo openstack tripleo container image prepare
命令。
第 4 章 自定义 Red Hat Ceph Storage 集群
director 使用默认配置部署 Red Hat Ceph Storage。您可以自定义此默认配置。
先决条件
- 配置了存储网络的 Ceph Storage 节点。
-
openstack overcloud node provision -o ~/deployed_metal.yaml …
.
4.1. 配置选项
配置 Red Hat Ceph Storage 集群有几个选项。
流程
-
以
stack
用户身份登录 undercloud 节点。 可选:使用标准格式初始化(ini)文件来配置 Ceph 集群。
使用配置选项创建 文件。
以下是简单配置文件的示例:
[global] osd_crush_chooseleaf type = 0 log_file = /var/log/ceph/$cluster-$type.$id.log [mon] mon_cluster_log_to_syslog = true
- 保存配置文件。
使用
openstack overcloud ceph deploy --config <configuration_file_name
> 命令来部署配置。将
<configuration_file_name
> 替换为您创建的文件的名称。$ openstack overcloud ceph deploy --config initial-ceph.conf
可选:向
cephadm bootstrap
命令发送配置值:openstack overcloud ceph deploy --force \ --cephadm-extra-args '<optional_arguments>' \
将
<optional_arguments
> 替换为提供给底层命令的配置值。注意在使用参数
--log-to-file
和--skip-prepare-host
时,使用openstack overcloud ceph deploy --force \ --cephadm-extra-args '--log-to-file --skip-prepare-host' \
。
4.2. 生成服务规格(可选)
Red Hat Ceph Storage 集群服务规格是一个 YAML 文件,用于描述 Ceph Storage 服务的部署。在部署 Ceph Storage 集群前,它由 tripleo
自动生成。它通常不必单独生成。
可以创建自定义服务规格来自定义 Red Hat Ceph Storage 集群。
流程
-
以
stack
用户身份登录 undercloud 节点。 生成规格文件:
openstack overcloud ceph spec deployed_metal.yaml -o <specification_file>
将
<specification_file
> 替换为要使用当前服务规格生成的文件的名称。注意deployed_metal.yaml
来自openstack overcloud node provision
命令的输出。
- 使用所需的配置编辑生成的文件。
部署自定义服务规格:
openstack overcloud ceph deploy \ deployed_metal.yaml \ -o deployed_ceph.yaml \ --ceph-spec <specification_file>
-
将
<specification_file>
替换为自定义服务规格文件的名称。
-
将
4.3. Red Hat OpenStack Platform with Red Hat Ceph Storage 的 Ceph 容器
您必须具有 Ceph Storage 容器,才能将 Red Hat Openstack Platform (RHOSP)配置为使用带有 NFS Ganesha 的 Red Hat Ceph Storage。如果外部 Ceph 存储集群仅提供块(通过 RBD)、对象(通过 RGW)或文件(通过原生 CephFS)存储,则不需要 Ceph Storage 容器。
RHOSP 17.1 将部署 Red Hat Ceph Storage 6.x (Ceph 软件包 17.x)。Ceph Storage 6.x 容器托管在 registry.redhat.io
上,这是需要身份验证的 registry。如需更多信息,请参阅 容器镜像准备参数。
4.4. 配置高级 OSD 规格
当默认规格不为您的 Ceph Storage 集群提供必要功能时,配置高级 OSD 规格。
流程
-
以
stack
用户身份登录 undercloud 节点。 创建定义高级 OSD 规格的 YAML 格式文件。
以下是自定义 OSD 规范的示例。
data_devices: rotational: 1 db_devices: rotational: 0
本例将创建一个 OSD 规格,所有轮转设备将是数据设备,并且所有非轮转设备都将用作共享设备。构建动态 Ceph 服务规格时,如果
service_type
是osd
,则规格文件中的任何内容都会附加到规格的部分中。注意自定义 OSD 规格文件不应具有完整的 OSD 规格。
以下是完整 OSD 规格的示例:
service_type: osd service_id: osd_spec_hdd placement: host_pattern: 'storage-*' data_devices: paths: - /dev/sda - /dev/sdb
自定义 OSD 规格文件不应在同一文件中有多个 YAML 文档。
以下是同一文件中的多个 YAML 文档的示例:
data_devices: paths: - /dev/sda - /dev/sdb - /dev/sdc --- data_devices: paths: - /dev/sdk - /dev/sdl - /dev/sdm
在环境初始部署后,使用 Red Hat Ceph Storage 命令行工具配置 OSD 规格。有关更多信息,请参阅 Red Hat Ceph Storage Operations 指南中的使用高级服务规格部署 Ceph OSD。
- 保存规格文件。
部署规格:
OpenStack overcloud ceph deploy \ --osd-spec <osd_specification_file>
将
<osd_specification_file
> 替换为您创建的规格文件的名称。$ openstack overcloud ceph deploy \ --osd-spec osd_spec.yaml \
其他资源
有关在服务规格中配置 OSD 相关属性的列表,请参阅 Red Hat Ceph Storage Operations 指南中的 部署 OSD 的高级服务规格和过滤器。
4.5. 从特定于节点的覆盖迁移
在 Red Hat OpenStack Platform 17.0 之前,使用特定于节点的覆盖来管理非同构服务器硬件。现在,这是使用自定义 OSD 规格文件完成的。如需有关如何创建自定义 OSD 规格文件的信息,请参阅配置高级 OSD 规格。
4.6. 启用 Ceph 在线加密
使用 messenger 版本 2 协议 的安全模式
,为所有 Ceph Storage 流量启用加密。配置 Ceph 存储,如 Red Hat Ceph Storage Data Hardening Red Hat OpenStack Platform 中的 Encryption and Key Management 所述,以启用 Ceph 在线加密。
其他资源
有关 Ceph 进行线加密的更多信息,请参阅 Red Hat Ceph Storage 架构指南中的 Ceph 在线加密。
第 5 章 自定义存储服务
director heat 模板集合包含必要的模板和环境文件,以启用基本的 Ceph Storage 配置。
director 使用 /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm.yaml
环境文件将配置添加到 openstack overcloud ceph deploy
部署的 Ceph Storage 集群中,并在部署期间将其与 overcloud 集成。
5.1. 配置自定义环境文件
director 将基本的默认设置应用到部署的 Red Hat Ceph Storage 集群。您必须在自定义环境文件中定义其他配置。
流程
-
以
stack
用户身份登录 undercloud。 创建用于定义自定义配置的文件。
vi /home/stack/templates/storage-config.yaml
-
在文件中添加
parameter_defaults
部分。 添加自定义配置参数。有关参数定义的更多信息,请参阅 Overcloud 参数。
parameter_defaults: CinderEnableIscsiBackend: false CinderEnableRbdBackend: true CinderBackupBackend: ceph NovaEnableRbdBackend: true GlanceBackend: rbd
注意自定义配置文件中定义的参数覆盖
/usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm.yaml
中任何对应的默认设置。- 保存该文件。
其他资源
自定义配置在 overcloud 部署期间应用。
5.2. Red Hat Ceph Storage 放置组
放置组(PG)大规模促进动态高效的对象跟踪。如果 OSD 失败或 Ceph Storage 集群重新平衡,Ceph 可以移动或复制放置组的内容。这使得 Ceph 存储集群能够有效地重新平衡和恢复。
除非在 Ceph 配置文件中包含以下参数,否则放置组和副本数设置不会从默认值中更改:
-
osd_pool_default_size
-
osd_pool_default_pg_num
-
osd_pool_default_pgp_num
使用 openstack overcloud deploy
命令部署 overcloud 时,会为每个启用的 Red Hat OpenStack Platform 服务创建一个池。例如,以下命令为计算服务(nova)、块存储服务(cinder)和 Image 服务(glance)创建池:
openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm-rbd-only.yaml
将 -e environments/cinder-backup.yaml
添加到命令中,创建一个名为 backups
的池:
openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm-rbd-only.yaml -e environments/cinder-backup.yaml
不需要为每个池配置放置组号;默认为启用 pg_autoscale_mode
属性。但是,建议您配置 target_size_ratio
或 pg_num
属性。这个减弱数据重新平衡。
要为每个池设置 target_size_ratio
属性,请使用类似以下示例的配置文件条目:
parameter_defaults: CephPools: - name: volumes target_size_ratio: 0.4 application: rbd - name: images target_size_ratio: 0.1 application: rbd - name: vms target_size_ratio: 0.3 application: rbd
在本例中,每个服务使用的数据百分比将是:
- Cinder 卷 - 40%
- Glance 镜像 - 10%
- Nova vms - 30%
- 其他池的可用空间 - 20%
根据您的预期使用情况设置这些值。如果不覆盖 CephPools
参数,则每个池使用默认的放置组号。虽然自动扩展将根据使用情况自动调整此数量,但数据将在 Ceph 集群中移动。这使用计算资源。
如果您希望设置放置组数量而不是目标大小比率,请将示例中的 target_size_ratio
替换为 pg_num
。根据您的预期使用情况,为每个池使用不同的整数。
请参阅 Red Hat Ceph Storage 处理器、网络接口卡和电源管理接口的 Red Hat Ceph Storage 硬件指南。
5.3. 启用 Ceph 元数据服务器
Ceph 元数据服务器(MDS)运行 ceph-mds
守护进程。此守护进程管理与 CephFS 中存储的文件相关的元数据。CephFS 可以原生使用,或者通过 NFS 协议使用。
红帽支持使用原生 CephFS 和 CephFS NFS 后端部署 Ceph MDS,用于共享文件系统服务(manila)。
流程
要启用 Ceph MDS,请在部署 overcloud 时使用以下环境文件:
/usr/share/openstack-tripleo-heat-templates/environments/cephadm/ceph-mds.yaml
默认情况下,Ceph MDS 部署在 Controller 节点上。您可以在自己的专用节点上部署 Ceph MDS。
5.4. Ceph 对象网关对象存储
Ceph 对象网关(RGW)提供了一个接口,用于访问 Red Hat Ceph Storage 集群中的对象存储功能。
使用 director 部署 Ceph 时,director 会自动启用 RGW。这是 Object Storage 服务(swift)的直接替换。通常使用对象存储服务的服务可以使用 RGW,而无需额外的配置。Object Storage 服务作为升级的 Ceph 集群的对象存储选项保留可用。
不需要单独的 RGW 环境文件来启用它。有关其他对象存储选项的环境文件的更多信息,请参阅 第 5.5 节 “Red Hat OpenStack Platform 对象存储的部署选项”。
默认情况下,Ceph Storage 允许每个 Object Storage Daemon (OSD)有 250 个放置组。启用 RGW 时,Ceph Storage 会创建 RGW 所需的以下六个额外池:
-
.rgw.root
-
<zone_name>.rgw.control
-
<zone_name>.rgw.meta
-
<zone_name>.rgw.log
-
<zone_name>.rgw.buckets.index
-
<zone_name>.rgw.buckets.data
在部署中,<zone_name
> 替换为池所属的区的名称。
其他资源
- 有关 RGW 的更多信息,请参阅 Red Hat Ceph Storage 对象网关指南。
- 有关使用 RGW 而不是 Swift 的更多信息,请参阅 备份 BLock Storage 卷 指南。
5.5. Red Hat OpenStack Platform 对象存储的部署选项
部署 overcloud 对象存储有三个选项:
Ceph 对象网关(RGW)
要按照 第 5.4 节 “Ceph 对象网关对象存储” 所述部署 RGW,请在 overcloud 部署期间包含以下环境文件:
-e environments/cephadm/cephadm.yaml
此环境文件同时配置 Ceph 块存储(RBD)和 RGW。
Object Storage 服务 (swift)
要部署 Object Storage 服务(swift)而不是 RGW,请在 overcloud 部署期间包含以下环境文件:
-e environments/cephadm/cephadm-rbd-only.yaml
cephadm-rbd-only.yaml
文件配置 Ceph RBD,但不配置 RGW。注意如果在升级 Red Hat Ceph Storage 集群前使用 Object Storage 服务(swift),您可以在升级过程中继续使用 Object Storage 服务(swift)而不是 RGW,将
environments/ceph-ansible/ceph-ansible.yaml
文件替换为environments/cephadm/cephadm-rbd-only.yaml
。如需更多信息,请参阅 执行 Red Hat OpenStack Platform 的次要更新。Red Hat OpenStack Platform 不支持从 Object Storage 服务(swift)迁移到 Ceph 对象网关(RGW)。
没有对象存储
要使用 RBD 部署 Ceph,而不使用 RGW 或 Object Storage 服务(swift),请在 overcloud 部署期间包含以下环境文件:
-e environments/cephadm/cephadm-rbd-only.yaml -e environments/disable-swift.yaml
cephadm-rbd-only.yaml
文件配置 RBD,但不配置 RGW。disable-swift.yaml
文件确保 Object Storage 服务(swift)未部署。
5.6. 配置块存储备份服务以使用 Ceph
Block Storage Backup 服务(cinder-backup)被默认禁用。必须启用它才能与 Ceph 搭配使用。
流程
要启用块存储备份服务(cinder-backup),请在部署 overcloud 时使用以下环境文件:
`/usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml`.
5.7. 为 Ceph 节点配置多个绑定接口
使用绑定接口组合多个 NIC,并为网络连接添加冗余。如果您在 Ceph 节点上有足够的 NIC,则可以在每个节点上创建多个绑定接口来扩展冗余功能。
为节点所需的每个网络连接使用一个绑定接口。这可为每个网络提供冗余和专用连接。
如需更多信息和流程,请参阅安装和管理 Red Hat OpenStack Platform 指南中的置备 overcloud 网络。
第 8 章 启动 overcloud 部署
完成服务初始配置和自定义后,部署 overcloud。
8.1. 启动 overcloud 部署
部署 overcloud 以实现 Red Hat OpenStack Platform (RHOSP)环境的配置。
先决条件
-
在 undercloud 安装过程中,在
undercloud.conf
文件中设置generate_service_certificate=false
。否则,部署 overcloud 时,您必须注入信任定位符。
如果要在 overcloud 部署期间添加 Ceph 仪表板,请参阅 第 10 章 将 Red Hat Ceph Storage 仪表板添加到 overcloud 部署中。
流程
使用 openstack overcloud deploy
命令部署 overcloud。有关所有命令参数的完整列表,请参阅 命令行界面参考中的 openstack overcloud deploy
。
以下是使用该命令的示例:
$ openstack overcloud deploy --templates -r /home/stack/templates/roles_data_custom.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/ceph-mds.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml \ -e /home/stack/templates/storage-config.yaml \ -e /home/stack/templates/deployed-ceph.yaml \ -e /home/stack/templates/networks-deployed.yaml \ -e /home/stack/templates/deployed-metal.yaml \ -e /home/stack/templates/deployed-vips.yaml \ --ntp-server pool.ntp.org
示例命令使用以下选项:
--templates
-
从默认的 heat 模板集合
/usr/share/openstack-tripleo-heat-templates/
创建 overcloud。
-
从默认的 heat 模板集合
-r /home/stack/templates/roles_data_custom.yaml
- 指定自定义角色定义文件。
-e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm.yaml
- 设置 director 以完成之前部署的 Ceph Storage 集群。此环境文件默认部署 RGW。它还创建池、密钥和守护进程。如果您不需要部署 RGW 或对象存储,请查看 第 5.5 节 “Red Hat OpenStack Platform 对象存储的部署选项” 中介绍的选项
-e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/ceph-mds.yaml
- 启用 Ceph 元数据服务器,如 第 5.3 节 “启用 Ceph 元数据服务器” 所述。
-e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml
-
启用块存储备份服务(
cinder-backup
),如 第 5.6 节 “配置块存储备份服务以使用 Ceph” 所述。
-
启用块存储备份服务(
-e /home/stack/templates/storage-config.yaml
- 添加包含自定义 Ceph Storage 配置的环境文件,如下所述 第 5.1 节 “配置自定义环境文件”
-e /home/stack/templates/deployed-ceph.yaml
-
添加包含 Ceph 集群设置的环境文件,如之前运行的
openstack overcloud ceph deploy
命令的输出一样。
-
添加包含 Ceph 集群设置的环境文件,如之前运行的
-e /home/stack/templates/networks-deployed.yaml
-
添加包含 Ceph 集群网络设置的环境文件,如
openstack overcloud network provision
的输出。
-
添加包含 Ceph 集群网络设置的环境文件,如
-e /home/stack/templates/deployed-metal.yaml
-
添加包含 Ceph 集群节点设置的环境文件,如
openstack overcloud node provision
的输出。
-
添加包含 Ceph 集群节点设置的环境文件,如
-e /home/stack/templates/deployed-vips.yaml
-
添加包含 Ceph 集群网络 VIP 设置的环境文件,如
openstack overcloud network vip provision
的输出。
-
添加包含 Ceph 集群网络 VIP 设置的环境文件,如
--ntp-server pool.ntp.org
- 设置 NTP 服务器。
第 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 (RHCS)版本 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
参数。CephCrushRules
参数必须包含您定义或 Ceph 自动检测到的每个类的规则。在创建新池时,如果没有指定规则,则会选择您希望 Ceph 用作默认值的规则。CephCrushRules: - name: HDD root: default type: host class: hdd default: true - name: SSD root: default type: host class: ssd default: false
添加
CephPools
参数:-
使用
rule_name
参数指定不使用默认规则的每个池的层。在以下示例中,fastpool
池使用配置为快速层的 SSD 设备类来管理块存储卷。 使用
CinderRbdExtraPools
参数将fastpool
配置为块存储后端。CephPools: - name: fastpool rule_name: SSD application: rbd CinderRbdExtraPools: fastpool
-
使用
使用以下示例来确保环境文件包含正确的值:
parameter_defaults: CephCrushRules: - name: replicated_hdd default: true class: hdd root: default type: host CinderRbdExtraPools: fastpool CephPools: - name: fastpool rule_name: SSD application: rbd
在
openstack overcloud deploy
命令中包含新的环境文件。$ openstack overcloud deploy \ --templates \ … -e <other_overcloud_environment_files> \ -e /home/stack/templates/ceph-config.yaml \ …
将
<other_overcloud_environment_files
> 替换为属于部署的其他环境文件的列表。
如果您将环境文件应用到现有的 Ceph 集群,则预先存在的 Ceph 池不会使用新规则更新。因此,部署完成后您必须输入以下命令将规则设置为指定池。
$ ceph osd pool set <pool> crush_rule <rule>
- 将 <pool> 替换为您要将新规则应用到的池的名称。
-
将 <rule> 替换为您通过
crush_rules
参数指定的规则名称之一。
对于您通过此命令更改的每个规则,请更新现有条目或在现有模板中的 CephPools
参数中添加新条目:
CephPools: - name: <pool> rule_name: <rule> application: rbd
9.2. 验证 CRUSH 规则和池
验证 CRUSH 规则和池设置。
- WARNING
-
在现有环境中定义性能层可能会导致 Ceph 集群中进行大量数据移动。
tripleo-ansible
,director 在堆栈更新期间触发,没有逻辑来检查 Ceph 集群中是否已定义池,并且是否包含数据。这意味着,在现有环境中定义性能层可能会危险,因为与池关联的默认 CRUSH 规则的更改会导致数据移动。如果您需要帮助或建议添加或删除节点,请联系红帽支持。
流程
-
以
tripleo-admin
用户身份登录 overcloud Controller 节点。 要验证您的 OSD 层是否已成功设置,请输入以下命令。
$ sudo cephadm shell ceph osd tree
-
在生成的树视图中,验证
CLASS
列是否显示您设置的每个 OSD 的正确设备类。 另外,使用以下命令验证 OSD 是否已正确分配给设备类。
$ sudo cephadm shell ceph osd crush tree --show-shadow
将生成的层次结构与以下命令的结果进行比较,以确保对每个规则应用相同的值。
$ sudo cephadm shell ceph osd crush rule dump <rule_name>
- 将 <rule_name> 替换为您要检查的规则的名称。
根据您在部署期间使用的
crush_rules
参数,验证您创建的规则名称和 ID 是否正确。$ sudo cephadm shell ceph osd crush rule dump | grep -E "rule_(id|name)"
验证 Ceph 池已绑定到在第 3 步中获得的正确 CRUSH 规则 ID。
$ sudo cephadm shell -- ceph osd dump | grep pool
- 对于每个池,请确保规则 ID 与您预期的规则名称匹配。
第 10 章 将 Red Hat Ceph Storage 仪表板添加到 overcloud 部署中
Red Hat Ceph Storage Dashboard 默认禁用,但您可以使用 Red Hat OpenStack Platform (RHOSP) director 在 overcloud 中启用。Ceph 控制面板是内置的、基于 Web 的 Ceph 管理和监控应用,用于管理 Ceph 集群中的各个方面和对象。Red Hat Ceph Storage Dashboard 包括以下组件:
- Ceph Dashboard manager 模块提供用户界面,并嵌入平台前端 Grafana。
- Prometheus,监控插件。
- Alertmanager 将警报发送到仪表板。
- 节点导出器将 Ceph 集群数据导出到仪表板。
Ceph Storage 4.1 或更高版本支持此功能。有关如何确定系统上安装的 Ceph Storage 版本的更多信息,请参阅 Red Hat Ceph Storage 发行版本以及对应的 Ceph 软件包版本。
Red Hat Ceph Storage Dashboard 始终与其他 Ceph 管理器组件位于同一个节点上。
下图显示了 Red Hat OpenStack Platform 上 Ceph 仪表板的架构:
有关控制面板及其功能及限制的更多信息,请参阅 Red Hat Ceph Storage Dashboard 指南中的控制面板功能。
10.1. 使用 Ceph 仪表板的任何位置 TLS
控制面板前端与 TLS 随处框架完全集成。您可以在任何提供有所需环境文件的 TLS,并将它们包含在 overcloud 部署命令中。这会在 overcloud 部署期间触发 Grafana 和 Ceph 仪表板的证书请求,以及生成的证书和密钥文件传递给 cephadm
。有关如何为仪表板以及其他 RHOSP 服务启用 TLS 的更多信息,请参阅高级 Overcloud 自定义指南中的 以下主题:
即使位于 TLS-everywhere 上下文中,访问 Ceph 仪表板的端口也会保持不变。
10.2. 包含 Ceph 仪表板所需的容器
在将 Ceph 控制面板模板添加到 overcloud 之前,您必须使用 containers-prepare-parameter.yaml
文件包含必要的容器。要生成 containers-prepare-parameter.yaml
文件来准备您的容器镜像,请完成以下步骤:
流程
-
以
stack
用户身份登录 undercloud 主机。 生成默认的容器镜像准备文件:
$ sudo openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter.yaml
编辑
containers-prepare-parameter.yaml
文件并进行修改以满足您的要求。以下示例containers-prepare-parameter.yaml
文件包含与 Dashboard 服务相关的镜像位置和标签,包括 Grafana、Prometheus、Alertmanager 和 Node Exporter。根据您的特定场景编辑值:parameter_defaults: ContainerImagePrepare: - push_destination: true set: ceph_alertmanager_image: ose-prometheus-alertmanager ceph_alertmanager_namespace: registry.redhat.io/openshift4 ceph_alertmanager_tag: v4.12 ceph_grafana_image: rhceph-6-dashboard-rhel9 ceph_grafana_namespace: registry.redhat.io/rhceph ceph_grafana_tag: 6 ceph_image: rhceph-6-rhel9 ceph_namespace: registry.redhat.io/rhceph ceph_node_exporter_image: ose-prometheus-node-exporter ceph_node_exporter_namespace: registry.redhat.io/openshift4 ceph_node_exporter_tag: v4.12 ceph_prometheus_image: ose-prometheus ceph_prometheus_namespace: registry.redhat.io/openshift4 ceph_prometheus_tag: v4.12 ceph_tag: latest
有关使用 containers-prepare-parameter.yaml
文件的 registry 和镜像配置的更多信息,请参阅自定义 Red Hat OpenStack Platform 部署 指南中的 容器镜像准备参数。
10.3. 部署 Ceph 仪表板
包含 ceph-dashboard
环境文件,以部署 Ceph 控制面板。
完成此步骤后,生成的部署由带有 grafana
、prometheus
、alertmanager
和 node-exporter
容器的外部堆栈组成。Ceph Dashboard manager 模块是此堆栈的后端,它会嵌入 grafana
布局,为最终用户提供特定于集群的指标。
如果要使用可组合网络部署 Ceph 控制面板,请参阅 第 10.4 节 “使用可组合网络部署 Ceph 仪表板”。
Ceph 控制面板 admin 用户角色默认设置为只读模式。要更改 Ceph Dashboard admin 默认模式,请参阅 第 10.5 节 “更改默认权限”。
流程
-
以
stack
用户身份登录 undercloud 节点。 可选:Ceph Dashboard 网络默认设置为 provisioning 网络。如果要部署 Ceph 控制面板并通过其他网络访问它,请创建一个环境文件,例如:
ceph_dashboard_network_override.yaml
。将CephDashboardNetwork
设置为现有 overcloud 路由网络之一,如external
:parameter_defaults: ServiceNetMap: CephDashboardNetwork: external
重要在初始部署后,不支持将
CephDashboardNetwork
值更改为从不同的网络访问 Ceph 控制面板。在
openstack overcloud deploy
命令中包含以下环境文件。如果选择更改默认网络,包含属于部署的所有环境文件,以及ceph_dashboard_network_override.yaml
文件:$ openstack overcloud deploy \ --templates \ -e <overcloud_environment_files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/ceph-dashboard.yaml \ -e ceph_dashboard_network_override.yaml
将
<overcloud_environment_files
> 替换为属于部署的环境文件列表。
10.4. 使用可组合网络部署 Ceph 仪表板
您可以在可组合网络中部署 Ceph 控制面板,而不是在默认的 Provisioning 网络中部署。这消除了在 Provisioning 网络中公开 Ceph 控制面板服务的需要。在可组合网络中部署仪表板时,您还可以实施单独的授权配置集。
您必须在部署前选择要使用的网络,因为您只能在首次部署 overcloud 时将控制面板应用到新网络。在部署前,使用以下步骤选择可组合网络。
完成此步骤后,生成的部署由带有 grafana
、prometheus
、alertmanager
和 node-exporter
容器的外部堆栈组成。Ceph Dashboard manager 模块是此堆栈的后端,它会嵌入 grafana
布局,为最终用户提供特定于集群的指标。
流程
- 以 stack 用户身份登录 undercloud。
生成特定于 Controller 的角色,使其包含 Dashboard 可组合网络:
$ openstack overcloud roles generate -o /home/stack/roles_data_dashboard.yaml ControllerStorageDashboard Compute BlockStorage ObjectStorage CephStorage
-
在定义为命令输出的 YAML 文件中生成一个新的
ControllerStorageDashboard
角色。使用overcloud deploy
命令时,您必须将此 YAML 文件包含在模板列表中。ControllerStorageDashboard
角色不包含CephNFS
或network_data_dashboard.yaml
。 -
director 提供了一个定义可组合网络的网络环境文件。此文件的默认位置为
/usr/share/openstack-tripleo-heat-templates/network_data_dashboard.yaml
。使用 overcloud deploy 命令时,您必须将此文件包含在 overcloud 模板列表中。
-
在定义为命令输出的 YAML 文件中生成一个新的
在
openstack overcloud deploy
命令中包含以下环境文件,以及作为部署一部分的所有环境文件:$ 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/network-isolation.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \ -e <overcloud_environment_files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/ceph-dashboard.yaml
将
<overcloud_environment_files
> 替换为属于部署的环境文件列表。
10.5. 更改默认权限
Ceph Dashboard admin 用户角色默认设置为只读模式,以便安全地监控 Ceph 集群。要允许 admin 用户具有提升的特权,以便使用控制面板更改 Ceph 集群的元素,您可以使用 CephDashboardAdminRO
参数更改默认的 admin 权限。
具有完整权限的用户可能会更改 director 配置的 Ceph 集群的元素。这可能会导致运行堆栈更新时与 director 配置的选项冲突。要避免这个问题,请不要使用 Ceph 控制面板更改 director 配置的选项,例如 Ceph OSP 池属性。
流程
-
以
stack
用户的身份登录 undercloud。 创建以下
ceph_dashboard_admin.yaml
环境文件:parameter_defaults: CephDashboardAdminRO: false
运行 overcloud deploy 命令以更新现有的堆栈,并包含您创建的所有其他环境文件,这些文件属于现有部署:
$ openstack overcloud deploy \ --templates \ -e <existing_overcloud_environment_files> \ -e ceph_dashboard_admin.yml
使用作为您现有部署一部分的环境文件列表替换
<existing_overcloud_environment_files>
。
10.6. 访问 Ceph 仪表板
若要测试 Ceph 控制面板运行是否正确,请完成以下用于访问它的验证步骤,并检查它从 Ceph 集群显示的数据是否正确。仪表板应该可以被完全访问,显示的数字和图形应反映 ceph -s
命令显示的相同集群状态信息。
流程
-
以
stack
用户身份登录 undercloud 节点。 检索仪表板 admin 登录凭证:
[stack@undercloud ~]$ grep tripleo_cephadm_dashboard_admin_password <config-download>/<stack>/cephadm/cephadm-extra-vars-heat.yml
检索 VIP 地址以访问 Ceph 控制面板:
[stack@undercloud-0 ~]$ grep tripleo_cephadm_dashboard_frontend_vip <config-download>/<stack>/cephadm/cephadm-extra-vars-ansible.yml
使用 Web 浏览器指向前端 VIP 并访问控制面板。director 在 provisioning 网络中配置和公开仪表板,以便您可以使用您检索到的 VIP 在 TCP 端口 8444 上直接访问仪表板。确保满足以下条件:
- Web 客户端主机是连接到 provisioning 网络的第 2 层。
置备网络会被正确路由或代理,可以从 web 客户端主机访问它。如果没有满足这些条件,您仍然可以打开 SSH 隧道来访问 overcloud 上的 Dashboard VIP:
client_host$ ssh -L 8444:<dashboard_vip>:8444 stack@<your undercloud>
将 <dashboard_vip> 替换为您检索到的 control plane VIP 的 IP 地址。
要访问仪表板,使用浏览器访问 http://localhost:8444,并使用以下详情进行登录:
-
cephadm
创建的默认用户: admin。 -
<
config-download>/<stack>/cephadm/cephadm-extra-vars-heat.yml 中的密码
。
-
有关 Red Hat Ceph Storage 仪表板的更多信息,请参阅 Red Hat Ceph Storage 管理指南
第 11 章 管理 Red Hat Ceph Storage 集群的部署后操作
使用容器化 Red Hat Ceph Storage 部署 Red Hat OpenStack Platform (RHOSP)环境后,您可以使用一些操作来管理 Ceph Storage 集群。
11.1. 禁用配置覆盖
最初部署 Ceph Storage 集群后,集群会被配置为允许在 overcloud 部署期间设置 RGW 等服务。overcloud 部署完成后,除非要扩展集群,否则不应使用 director 来更改集群配置。应使用 Ceph 命令执行集群配置更改。
流程
-
以
stack
用户身份登录 undercloud 节点。 -
打开文件
deployed_ceph.yaml
或您环境中使用的文件来定义 Ceph 存储集群配置。 -
找到
ApplyCephConfigOverridesOnUpdate
参数。 -
将
ApplyCephConfigOverridesOnUpdate
参数值更改为false
。 - 保存该文件。
其他资源
有关 ApplyCephConfigOverridesOnUpdate
和 CephConfigOverrides
参数的更多信息,请参阅 Overcloud 参数。
11.2. 访问 overcloud
director 会生成脚本来配置和帮助认证 undercloud 与 overcloud 的交互。director 将此文件保存为 stack
用户主目录的 overcloudrc
文件。
流程
运行以下命令来 source 文件:
$ source ~/overcloudrc
这会加载必要的环境变量,以便从 undercloud CLI 与 overcloud 交互。
要返回与 undercloud 进行交互的状态,请运行以下命令:
$ source ~/stackrc
11.3. 监控 Red Hat Ceph Storage 节点
创建 overcloud 后,检查 Ceph 集群的状态以确认它正常工作。
流程
以
tripleo-admin
用户身份登录 Controller 节点:$ nova list $ ssh tripleo-admin@192.168.0.25
检查 Ceph 集群的运行状况:
$ sudo cephadm shell -- ceph health
如果 Ceph 集群没有问题,命令会返回
HEALTH_OK
。这意味着 Ceph 集群是安全的使用。登录到运行 Ceph 监控服务的 overcloud 节点,并检查 Ceph 集群中的所有 OSD 的状态:
$ sudo cephadm shell -- ceph osd tree
检查 Ceph Monitor 仲裁的状态:
$ sudo cephadm shell -- ceph quorum_status
这将显示参与仲裁以及哪个是领导的监控器。
验证所有 Ceph OSD 是否正在运行:
$ sudo cephadm shell -- ceph osd stat
如需有关监控 Ceph 集群的更多信息,请参阅 Red Hat Ceph Storage Administration Guide 中的监控 Ceph Storage 集群。
11.4. 将 Block Storage (cinder)类型映射到您的新 Ceph 池
完成配置步骤后,使用 Block Storage (cinder)创建映射到您创建的 fastpool
层的类型,将性能层功能提供给 RHOSP 租户。
流程
-
以
stack
用户身份登录 undercloud 节点。 获取
overcloudrc
文件:$ source overcloudrc
检查块存储卷现有的类型:
$ cinder type-list
创建新的块存储卷 fast_tier:
$ cinder type-create fast_tier
检查是否创建了 Block Storage 类型:
$ cinder type-list
当
fast_tier
Block Storage 类型可用时,将fastpool
设置为您创建的新层的块存储卷后端:$ cinder type-key fast_tier set volume_backend_name=tripleo_ceph_fastpool
使用新层创建新卷:
$ cinder create 1 --volume-type fast_tier --name fastdisk
Red Hat Ceph Storage 文档为 Ceph Storage 集群的持续维护和操作提供了额外的信息和流程。请参阅 Red Hat Ceph Storage 产品文档。
第 12 章 原生 CephFS 部署后配置和验证
在创建 CephFS 共享、授予用户访问权限和挂载 CephFS 共享之前,您必须完成一些部署后配置任务。
- 将 Networking 服务(neutron)存储网络映射到隔离的数据中心存储网络。
- 通过基于自定义角色的访问控制(RBAC),使存储提供商网络仅适用于可信租户。不要全局共享存储提供商网络。
- 创建私有共享类型。
- 授予特定可信租户的访问权限。
完成这些步骤后,租户计算实例可以创建、允许访问和挂载原生 CephFS 共享。
将原生 CephFS 部署为共享文件系统服务(manila)的后端,将以下新元素添加到 overcloud 环境中:
- 存储提供商网络
- Controller 节点上的 Ceph MDS 服务
云管理员必须先验证原生 CephFS 环境的稳定性,然后将其提供给服务用户。
有关将共享文件系统服务与原生 CephFS 搭配使用的更多信息,请参阅 配置持久性存储 指南中的 配置共享文件系统服务(manila)。
12.1. 创建存储提供商网络
您必须将新的隔离存储网络映射到 Networking(neutron)提供商网络。Compute 虚拟机附加到网络,以访问原生 CephFS 共享导出位置。
有关使用共享文件系统服务(manila)的网络安全性的信息,请参阅强化 Red Hat OpenStack Platform 中的强化共享文件系统服务。
流程
openstack network create
命令定义存储 neutron 网络的配置。
提供 overcloud 凭证文件:
$ source ~/<credentials_file>
-
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
在 undercloud 节点上,创建存储网络:
(overcloud) [stack@undercloud-0 ~]$ openstack network create Storage --provider-network-type vlan --provider-physical-network datacentre --provider-segment 30
您可以使用以下选项输入这个命令:
-
对于
--provider-physical-network
选项,使用默认值datacentre
,除非您通过 tripleo-heat-templates 中的 NeutronBridgeMappings 为 br-isolated 网桥设置了另一个标签。 -
对于
--provider-segment
选项,在网络环境文件中使用为存储隔离网络设置的值。如果没有自定义,默认的环境文件为/usr/share/openstack-tripleo-heat-templates/network_data.yaml
。除非修改了隔离网络定义,否则与存储网络值关联的 VLAN 为30
。 -
对于
--provider-network-type
选项,请使用值vlan
。
-
对于
12.2. 配置存储提供商网络
在 neutron 提供商网络上创建对应的 StorageSubnet
。确保子网与 undercloud 中的 storage_subnet
相同,并且存储子网的分配范围不会重叠。
要求
- 分配池的开头和结束 IP 范围
- 子网 IP 范围
流程
在 undercloud 节点上输入以下命令:
[stack@undercloud ~]$ source ~/overcloudrc
使用示例命令置备网络。更新这些值以适合您的环境。
(overcloud) [stack@undercloud-0 ~]$ openstack subnet create \ --allocation-pool start=172.17.3.10,end=172.17.3.149 \ --dhcp \ --network Storage \ --subnet-range 172.17.3.0/24 \ --gateway none StorageSubnet
-
对于
--allocation-pool
选项,将start=172.17.3.10,end=172.17.3.149
IP 值替换为您的网络的 IP 值。 -
对于
--subnet-range
选项,请将172.17.3.0/24
子网范围替换为您的网络的子网范围。
-
对于
12.3. 为存储供应商网络配置基于角色的访问控制
在识别可以使用存储网络的可信租户或项目后,通过网络服务(neutron)为它们配置基于角色的访问控制(RBAC)规则。
要求
需要访问存储网络的项目名称
流程
在 undercloud 节点上输入以下命令:
[stack@undercloud ~]$ source ~/overcloudrc
识别需要访问的项目:
(overcloud) [stack@undercloud-0 ~]$ openstack project list +----------------------------------+---------+ | ID | Name | +----------------------------------+---------+ | 06f1068f79d2400b88d1c2c33eacea87 | demo | | 5038dde12dfb44fdaa0b3ee4bfe487ce | service | | 820e2d9c956644c2b1530b514127fd0d | admin | +----------------------------------+---------+
使用所需项目创建网络 RBAC 规则:
(overcloud) [stack@undercloud-0 ~]$ openstack network rbac create \ --action access_as_shared Storage \ --type network \ --target-project demo
对需要访问存储网络的所有项目重复此步骤。
12.5. 验证隔离存储网络的创建
用于部署原生 CephFS 作为共享文件系统服务后端的 network_data.yaml
文件会创建存储 VLAN。使用此流程确认已成功创建了存储 VLAN。
流程
- 登录到 overcloud 中的一个 Controller 节点。
检查连接的网络,并验证
network_data.yaml
文件中的 VLAN 是否存在:$ ip a 8: vlan30: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 link/ether 52:9c:82:7a:d4:75 brd ff:ff:ff:ff:ff:ff inet 172.17.3.144/24 brd 172.17.3.255 scope global vlan30 valid_lft forever preferred_lft forever inet6 fe80::509c:82ff:fe7a:d475/64 scope link valid_lft forever preferred_lft forever
12.6. 验证 Ceph MDS 服务
使用 systemctl status
命令验证 Ceph MDS 服务状态。
流程
在所有 Controller 节点上输入以下命令来检查 MDS 容器的状态:
$ systemctl status ceph-mds<@CONTROLLER-HOST>
例如:
$ systemctl status ceph-mds@controller-0.service ceph-mds@controller-0.service - Ceph MDS Loaded: loaded (/etc/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2018-09-18 20:11:53 UTC; 6 days ago Main PID: 65066 (conmon) Tasks: 16 (limit: 204320) Memory: 38.2M CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@controller-0.service └─60921 /usr/bin/podman run --rm --net=host --memory=32000m --cpus=4 -v /var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v /var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/localtime:ro>
12.7. 验证 Ceph 集群状态
验证 Ceph 集群状态,以确认集群为 active。
流程
- 登录任何 Controller 节点。
在 Ceph 监控守护进程中输入以下命令:
$ sudo podman exec ceph-mon-controller-0 ceph -s cluster: id: 670dc288-cd36-4772-a4fc-47287f8e2ebf health: HEALTH_OK services: mon: 3 daemons, quorum controller-1,controller-2,controller-0 (age 14h) mgr: controller-1(active, since 8w), standbys: controller-0, controller-2 mds: cephfs:1 {0=controller-2=up:active} 2 up:standby osd: 15 osds: 15 up (since 8w), 15 in (since 8w) task status: scrub status: mds.controller-2: idle data: pools: 6 pools, 192 pgs objects: 309 objects, 1.6 GiB usage: 21 GiB used, 144 GiB / 165 GiB avail pgs: 192 active+clean
注意有一个活跃 MDS,备用上有两个 MDS。
要查看 Ceph 文件系统的详细状态,请输入以下命令:
$ sudo ceph fs ls name: cephfs metadata pool: manila_metadata, data pools: [manila_data]
注意在本示例输出中,
cephfs
是 Ceph 文件系统的名称,director 会创建它来托管用户通过共享文件系统服务创建的 CephFS 共享。
12.9. 验证 manila-api 服务确认调度程序和共享服务
完成以下步骤以确认 manila-api
服务确认调度程序和共享服务。
流程
- 登录 undercloud。
使用以下命令:
$ source /home/stack/overcloudrc
输入以下命令确认启用了
manila-scheduler
和manila-share
:$ manila service-list | Id | Binary | Host | Zone | Status | State | Updated_at | | 2 | manila-scheduler | hostgroup | nova | enabled | up | 2018-08-08T04:15:03.000000 | | 5 | manila-share | hostgroup@cephfs | nova | enabled | up | 2018-08-08T04:15:03.000000 |
第 13 章 CephFS NFS 部署后配置和验证
在创建 NFS 共享、授予用户访问权限和挂载 NFS 共享之前,您必须完成两个部署后配置任务。
- 将网络服务(neutron)StorageNFS 网络映射到隔离的数据中心存储 NFS 网络。如果您不想将 NFS 流量隔离到单独的网络,可以省略这个选项。
- 创建默认共享类型。
完成这些步骤后,租户计算实例可以创建、允许访问和挂载 NFS 共享。
当您将 CephFS-NFS 部署为共享文件系统服务(manila)的后端时,您可以在 overcloud 环境中添加以下新元素:
- StorageNFS 网络
- 控制器上的 Ceph MDS 服务
- 控制器上的 NFS-Ganesha 服务
作为云管理员,您必须先验证 CephFS-NFS 环境的稳定性,然后才能将它提供给服务用户。
13.1. 创建存储提供商网络
将新隔离存储NFS 网络映射到网络(neutron)提供商网络。Compute 虚拟机附加到网络,以访问由 NFS-Ganesha 网关提供的共享导出位置。
有关使用共享文件系统服务(manila)的网络安全性的信息,请参阅强化 Red Hat OpenStack Platform 中的强化共享文件系统服务。
流程
openstack network create
命令定义 StorageNFS neutron 网络的配置。
提供 overcloud 凭证文件:
$ source ~/<credentials_file>
-
将
<credentials_file
> 替换为您的凭据文件的名称,如overcloudrc
。
-
将
在 undercloud 节点上,创建 StorageNFS 网络:
(overcloud) [stack@undercloud-0 ~]$ openstack network create StorageNFS --share --provider-network-type vlan --provider-physical-network datacentre --provider-segment 70
您可以使用以下选项输入这个命令:
-
对于
--provider-physical-network
选项,使用默认值datacentre
,除非您通过 tripleo-heat-templates 中的 NeutronBridgeMappings 为 br-isolated 网桥设置了另一个标签。 -
对于
--provider-segment
选项,在 heat 模板中为 StorageNFS 隔离网络设置的 VLAN 值/usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml
。此值为 70,除非部署者修改了隔离的网络定义。 -
对于
--provider-network-type
选项,请使用值vlan
。
-
对于
13.4. 验证隔离存储NFS 网络的创建
network_data_ganesha.yaml
文件用于将 CephFS-NFS 部署为共享文件系统服务后端,以创建 StorageNFS VLAN。完成以下步骤以验证隔离存储NFS 网络是否存在。
流程
- 登录 overcloud 中的一个控制器。
输入以下命令检查连接的网络,并验证
network_data_ganesha.yaml
中设置的 VLAN 存在:$ ip a 15: vlan310: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 link/ether 32:80:cf:0e:11:ca brd ff:ff:ff:ff:ff:ff inet 172.16.4.4/24 brd 172.16.4.255 scope global vlan310 valid_lft forever preferred_lft forever inet 172.16.4.7/32 brd 172.16.4.255 scope global vlan310 valid_lft forever preferred_lft forever inet6 fe80::3080:cfff:fe0e:11ca/64 scope link valid_lft forever preferred_lft forever
13.5. 验证 Ceph MDS 服务
使用 systemctl status
命令验证 Ceph MDS 服务状态。
流程
在所有 Controller 节点上输入以下命令来检查 MDS 容器的状态:
$ systemctl status ceph-mds<@CONTROLLER-HOST>
例如:
$ systemctl status ceph-mds@controller-0.service ceph-mds@controller-0.service - Ceph MDS Loaded: loaded (/etc/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2018-09-18 20:11:53 UTC; 6 days ago Main PID: 65066 (conmon) Tasks: 16 (limit: 204320) Memory: 38.2M CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@controller-0.service └─60921 /usr/bin/podman run --rm --net=host --memory=32000m --cpus=4 -v /var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v /var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/localtime:ro>
13.6. 验证 Ceph 集群状态
完成以下步骤以验证 Ceph 集群状态。
流程
- 登录到活跃的 Controller 节点。
使用以下命令:
$ sudo ceph -s cluster: id: 3369e280-7578-11e8-8ef3-801844eeec7c health: HEALTH_OK services: mon: 3 daemons, quorum overcloud-controller-1,overcloud-controller-2,overcloud-controller-0 mgr: overcloud-controller-1(active), standbys: overcloud-controller-2, overcloud-controller-0 mds: cephfs-1/1/1 up {0=overcloud-controller-0=up:active}, 2 up:standby osd: 6 osds: 6 up, 6 in
有一个活跃 MDS,两个备用的 MDS。
要更详细地检查 Ceph 文件系统的状态,请输入以下命令,并将
<cephfs>
替换为 Ceph 文件系统的名称:$ sudo ceph fs ls name: cephfs, metadata pool: manila_metadata, data pools: [manila_data]
13.8. 验证 manila-api 服务确认调度程序和共享服务
完成以下步骤以确认 manila-api
服务确认调度程序和共享服务。
流程
- 登录 undercloud。
使用以下命令:
$ source /home/stack/overcloudrc
输入以下命令确认启用了
manila-scheduler
和manila-share
:$ manila service-list | Id | Binary | Host | Zone | Status | State | Updated_at | | 2 | manila-scheduler | hostgroup | nova | enabled | up | 2018-08-08T04:15:03.000000 | | 5 | manila-share | hostgroup@cephfs | nova | enabled | up | 2018-08-08T04:15:03.000000 |
第 14 章 重新引导环境
可能需要重新引导环境。例如,当您需要修改物理服务器或从电源中断中恢复时。在这样的情形中,务必要确保 Ceph Storage 节点正确引导。
您必须按照以下顺序引导节点:
- 首先引导所有 Ceph 监控节点 - 这样可确保 Ceph 监控服务在高可用性 Ceph 集群中处于活动状态。默认情况下,Ceph Monitor 服务安装在 Controller 节点上。如果 Ceph Monitor 与自定义角色中的 Controller 分开,请确保此自定义 Ceph Monitor 角色处于活动状态。
- 引导所有 Ceph Storage 节点 - 这样可确保 Ceph OSD 集群可以连接到 Controller 节点上的活跃 Ceph Monitor 集群。
14.1. 重新引导 Ceph Storage (OSD) 集群
完成以下步骤以重新引导 Ceph Storage (OSD) 节点集群。
先决条件
在运行
ceph-mon
服务的 Ceph monitor 或 Controller 节点上,检查 Red Hat Ceph Storage 集群状态是否健康,pg 状态为active+clean
:$ sudo cephadm -- shell ceph status
如果 Ceph 集群处于健康状态,它会返回
HEALTH_OK
状态。如果 Ceph 集群状态不健康,它将返回
HEALTH_WARN
或HEALTH_ERR
的状态。有关故障排除指南,请参阅 Red Hat Ceph Storage 5 故障排除指南 或 Red Hat Ceph Storage 6 故障排除指南。
流程
登录到运行
ceph-mon
服务的 Ceph Monitor 或 Controller 节点,并临时禁用 Ceph Storage 集群重新平衡:$ sudo cephadm shell -- ceph osd set noout $ sudo cephadm shell -- ceph osd set norebalance
注意如果您有多堆栈或分布式计算节点(DCN)架构,您必须在设置
noout
和norebalance
标志时指定 Ceph 集群名称。例如:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring
。- 选择第一个要重新引导的 Ceph Storage 节点并登录到该节点。
重新引导节点:
$ sudo reboot
- 稍等片刻,直到节点启动。
登录节点并检查 Ceph 集群状态:
$ sudo cephadm -- shell ceph status
确认
pgmap
报告的所有pgs
的状态是否都正常 (active+clean
)。- 注销节点,重新引导下一个节点,并检查其状态。重复此过程,直到您已重新引导所有 Ceph Storage 节点。
完成后,登录到运行
ceph-mon
服务的 Ceph Monitor 或 Controller 节点,并启用 Ceph 集群重新平衡:$ sudo cephadm shell -- ceph osd unset noout $ sudo cephadm shell -- ceph osd unset norebalance
注意如果您有多堆栈或分布式计算节点(DCN)架构,您必须在取消设置
noout
和norebalance
标志时指定 Ceph 集群名称。例如:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring
执行最后的状态检查,确认集群报告
HEALTH_OK
:$ sudo cephadm shell ceph status
14.2. 重新引导 Ceph Storage OSD 以启用与 Ceph 监控服务的连接
如果发生所有 overcloud 节点同时引导的情况,Ceph OSD 服务可能无法在 Ceph Storage 节点上正确启动。在这种情况下,重新引导 Ceph Storage OSD,以便它们可以连接到 Ceph 监控服务。
流程
验证 Ceph Storage 节点集群的
HEALTH_OK
状态:$ sudo ceph status
第 15 章 扩展 Ceph Storage 集群
您可以通过添加或删除存储节点来扩展 Ceph Storage 集群的大小。
15.1. 扩展 Ceph Storage 集群
随着容量和性能要求的变化,您可以扩展 Ceph 存储集群来满足不断增长的需求。在这样做前,请确保您有足够的节点供更新的部署使用。然后,您可以在 Red Hat OpenStack Platform (RHOSP)环境中注册和标记新节点。
这个过程会产生以下操作:
-
存储网络和防火墙规则在新的
CephStorage
节点上配置。 -
ceph-admin
用户在新的CephStorage
节点上创建。 -
ceph-admin
用户公共 SSH 密钥分发到新的CephStorage
节点,以便cephadm
可以使用 SSH 添加额外的节点。 -
如果添加了新的
CephMon
或CephMgr
节点,ceph-admin
私钥也会分发到该节点。 -
应用更新的 Ceph 规格,
cephadm
将调度新节点来加入 Ceph 集群。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
修改
~/overcloud-baremetal-deploy.yaml
,将 CephStorage 节点添加到部署中。以下示例文件表示具有三个 CephStorage 节点的原始部署。
- name: CephStorage count: 3 instances: - hostname: ceph-0 name: ceph-0 - hostname: ceph-1 name: ceph-2 - hostname: ceph-2 name: ceph-2
以下示例修改此文件以添加三个额外的节点。
- name: CephStorage count: 6 instances: - hostname: ceph-0 name: ceph-0 - hostname: ceph-1 name: ceph-2 - hostname: ceph-2 name: ceph-2 - hostname: ceph-3 name: ceph-3 - hostname: ceph-4 name: ceph-4 - hostname: ceph-5 name: ceph-5
使用
openstack overcloud node provision
命令及更新的~/overcloud-baremetal-deploy.yaml
文件。$ openstack overcloud node provision \ --stack overcloud \ --network-config \ --output ~/overcloud-baremetal-deployed.yaml \ ~/overcloud-baremetal-deploy.yaml
注意此命令将置备配置的节点,并输出
~/overcloud-baremetal-deployed.yaml
的更新副本。新版本更新CephStorage
角色。DeployedServerPortMap
和HostnameMap
还包含新的存储节点。使用
openstack overcloud ceph spec
命令生成 Ceph 规范文件。$ openstack overcloud ceph spec ~/overcloud-baremetal-deployed.yaml \ --osd-spec osd_spec.yaml \ --roles-data roles_data.yaml \ -o ceph_spec.yaml
注意openstack overcloud ceph spec
中使用的文件应该已经可用。它们在以下位置创建:-
此步骤的上一步中创建了
overcloud-baremetal-deployed.yaml
文件。 -
在 配置高级 OSD 规格中创建了
osd_spec.yaml
文件。使用--osd-spec
参数提供 OSD 规格是可选的。 -
roles_data.yaml
文件是 在为 Red Hat Ceph Storage 设计节点 时创建的。假设新节点被分配给此文件中的一个角色。
此命令的输出将是
ceph_spec.yaml
文件。-
此步骤的上一步中创建了
使用
openstack overcloud ceph user enable
命令在集群中的所有节点上创建ceph-admin
用户。ceph-admin
用户必须在所有节点上存在,以便通过 Ceph 编配器启用对节点的 SSH 访问。$ openstack overcloud ceph user enable ceph_spec.yaml
注意使用上一步中创建的
ceph_spec.yaml
文件。- 使用 Red Hat Ceph Storage Operations 指南中的使用服务规格部署 Ceph 守护进程,将规格文件应用到 Red Hat Ceph Storage 集群。这个规格文件现在描述了添加了新节点的集群的操作状态。
使用
openstack overcloud deploy
命令和更新的~/overcloud-baremetal-deployed.yaml
文件。$ openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/cephadm/cephadm.yaml \ -e deployed_ceph.yaml -e overcloud-baremetal-deploy.yaml
15.2. 缩减并替换 Red Hat Ceph Storage 节点
在某些情况下,您可能需要缩减 Red Hat Ceph Storage 集群或替换 Red Hat Ceph Storage 节点。在这两种情况下,您必须禁用并重新平衡您要从 overcloud 中删除的 Red Hat Ceph Storage 节点,以防止数据丢失。
如果 Red Hat Ceph Storage 集群没有丢失 OSD 的容量,请不要继续这个过程。
-
以
tripleo-admin
用户身份登录 overcloud Controller 节点。 -
使用
sudo cephadm shell
命令启动 Ceph shell。 使用
ceph osd tree
命令识别服务器要删除的 OSD。在以下示例中,我们需要识别
ceph-2
主机的 OSD。[ceph: root@oc0-controller-0 /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.58557 root default -7 0.19519 host ceph-2 5 hdd 0.04880 osd.5 up 1.00000 1.00000 7 hdd 0.04880 osd.7 up 1.00000 1.00000 9 hdd 0.04880 osd.9 up 1.00000 1.00000 11 hdd 0.04880 osd.11 up 1.00000 1.00000
将 Ceph 集群规格导出到 YAML 文件。
[ceph: root@oc0-controller-0 /]# ceph orch ls --export > spec.yml
-
编辑导出的规格文件,以便适用的主机从
service-type: osd hosts
列表中移除,且适用的主机将移除placement: hosts
值。 - 保存编辑的文件。
应用修改后的 Ceph 规格文件。
[ceph: root@oc0-controller-0 /]# ceph orch apply -i spec.yml
重要如果您在删除 OSD 前没有导出和导入 Ceph 规范文件,Ceph 管理器将尝试重新创建 OSD。
使用
ceph orch osd rm --zap <osd_list>
; 命令来移除 OSD。[ceph: root@oc0-controller-0 /]# ceph orch osd rm --zap 5 7 9 11 Scheduled OSD(s) for removal [ceph: root@oc0-controller-0 /]# ceph orch osd rm status OSD_ID HOST STATE PG_COUNT REPLACE FORCE DRAIN_STARTED_AT 7 ceph-2 draining 27 False False 2021-04-23 21:35:51.215361 9 ceph-2 draining 8 False False 2021-04-23 21:35:49.111500 11 ceph-2 draining 14 False False 2021-04-23 21:35:50.243762
使用
ceph orch osd status
命令,检查移除 OSD 的状态。[ceph: root@oc0-controller-0 /]# ceph orch osd rm status OSD_ID HOST STATE PG_COUNT REPLACE FORCE DRAIN_STARTED_AT 7 ceph-2 draining 34 False False 2021-04-23 21:35:51.215361 11 ceph-2 draining 14 False False 2021-04-23 21:35:50.243762
警告在这个命令返回任何结果前,不要继续下一步。
使用
ceph orch host drain <HOST>
; 命令来排空任何剩余的守护进程。[ceph: root@oc0-controller-0 /]# ceph orch host drain ceph-2
使用
ceph orch host rm <HOST>
; 命令来移除主机。[ceph: root@oc0-controller-0 /]# ceph orch host rm ceph-2
注意此节点不再由 Ceph 集群使用,但仍然由 director 管理作为裸机节点。
结束 Ceph shell 会话。
注意如果缩减 Ceph 集群是临时的,并且删除的节点稍后会被恢复,扩展操作在之前设置了
provisioned: false
的节点上增加count
,并设置provisioned: true
如果节点永远不会重复使用,则可以无限期设置provisioned: false
,扩展操作可以指定新的 instances 条目。以下文件示例提供了每个实例的一些示例。
- name: Compute count: 2 instances: - hostname: overcloud-compute-0 name: node10 # Removed from deployment due to disk failure provisioned: false - hostname: overcloud-compute-1 name: node11 - hostname: overcloud-compute-2 name: node12
- 要从 director 中删除节点,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的缩减裸机节点。
第 16 章 替换失败的磁盘
如果 Ceph Storage 集群中的磁盘失败,您可以替换它。
16.1. 替换磁盘
有关替换失败磁盘的信息,请参阅 Red Hat Ceph Storage 安装指南中的 添加 OSD。