操作指南
Red Hat Ceph Storage 的操作任务
摘要
第 1 章 Ceph 编排器简介 复制链接链接已复制到粘贴板!
作为存储管理员,您可以将 Ceph 编排器与 Cephadm 实用程序搭配使用,能够发现设备并在 Red Hat Ceph Storage 集群中创建服务。
1.1. 使用 Ceph Orchestrator 复制链接链接已复制到粘贴板!
Red Hat Ceph Storage Orchestrators 是经理模块,主要充当 Red Hat Ceph Storage 集群和部署工具(如 Rook 和 Cephadm)以实现统一体验。它们也与 Ceph 命令行界面和 Ceph 控制面板集成。
以下是 Ceph Orchestrator 的工作流图:
从 Red Hat Ceph Storage 5.1 版本开始,不支持 NFS-Ganesha 网关。
Red Hat Ceph Storage Orchestrators 类型
Red Hat Ceph Storage Orchestrators 有三个主要类型:
编配器 CLI :它们是 Orchestrators 中使用的常用 API,它包括一组可以实施的命令。这些 API 还提供通用命令行界面(CLI),以使用外部编排服务编排
ceph-mgr
模块。以下是用于 Ceph Orchestrator 的命名法:- 主机:这是物理主机的主机名,而不是容器内的 pod 名称、DNS 名称、容器名称或主机名。
- 服务类型 :服务的类型,如 nfs、mds、osd、mon、rgw 和 mgr。
- 服务:由 Ceph 存储集群提供的功能服务,如监控服务、管理器服务、OSD 服务、Ceph Object Gateway 服务和 NFS 服务。
- 守护进程:由一个或多个主机(如 Ceph 对象网关服务)部署的服务的特定实例,可在三个不同的主机上运行不同的 Ceph 对象网关守护进程。
Cephadm Orchestrator - 这是一个 Ceph Orchestrator 模块,它不依赖于外部工具,如 Rook 或 Ansible,而是通过建立 SSH 连接并发出显式管理命令来管理集群中的节点。此模块适用于第一天和第二天操作。
使用 Cephadm Orchestrator 是在不利用 Ansible 等部署框架的情况下安装 Ceph 存储集群的建议方法。其理念是,为管理器守护进程提供对 SSH 配置和密钥的访问,这些密钥可以连接到集群中的所有节点,以执行任何管理操作,如创建存储设备清单、部署和替换 OSD 或启动和停止 Ceph 守护进程。此外,Cephadm Orchestrator 将部署由
systemd
管理的容器镜像,以允许独立升级共同放置服务。此编配器还突出显示一个工具,它封装了所有必要的操作,以根据当前主机上的服务管理容器镜像部署,包括引导运行 Ceph Monitor 和 Ceph Manager 的最小集群的命令。
Rook Orchestrator - Rook 是一个编配工具,它使用 Kubernetes Rook 操作器来管理在 Kubernetes 集群内运行的 Ceph 存储集群。rook 模块提供 Ceph 的 Orchestrator 框架和 Rook 间的集成。Rook 是 Kubernetes 的一个开源云原生存储 operator。
Rook 遵循 "operator" 模型,其中在 Kubernetes 中定义的自定义资源定义(CRD)对象用来描述 Ceph 存储集群及其所需状态,而 rook 操作器守护进程在控制循环中运行,并将当前集群状态与所需的状态进行比较,并采取措施来融合。描述 Ceph 所需状态的主要对象是 Ceph 存储集群 CRD,它包括关于 OSD 应该使用哪些设备的信息、应运行多少个 monitor,以及应使用的 Ceph 版本。Rook 定义了几个其他 CRD 来描述 RBD 池、CephFS 文件系统等。
Rook Orchestrator 模块在
ceph-mgr
守护进程中运行并实现 Ceph orchestration API,它更改 Kubernetes 中的 Ceph 存储集群来描述所需的集群状态。Rook 集群的ceph-mgr
守护进程作为 Kubernetes pod 运行,因此 rook 模块可以在没有显式配置的情况下连接到 Kubernetes API。
第 2 章 使用 Ceph Orchestrator 管理服务 复制链接链接已复制到粘贴板!
作为存储管理员,在安装 Red Hat Ceph Storage 集群后,您可以使用 Ceph 编排器监控和管理存储集群中的服务。服务是一组配置在一起的守护进程。
本节涵盖以下管理信息:
2.1. Ceph 编排器的放置规格 复制链接链接已复制到粘贴板!
您可以使用 Ceph 编排器部署 osds
、mons
、mgrs
、mds
和 rgw
服务。红帽建议使用放置规格部署服务。您需要知道要使用 Ceph 编排器部署服务所需的守护进程的位置和数量。放置规格可以作为命令行参数或 yaml
文件中的服务规格传递。
使用放置规格部署服务的方法有两种:
直接在命令行界面中使用放置规格。例如,如果要在主机上部署三个监视器,请运行以下命令在
host01
、host02
和host03
上部署三个 monitor。示例
[ceph: root@host01 /]# ceph orch apply mon --placement="3 host01 host02 host03"
[ceph: root@host01 /]# ceph orch apply mon --placement="3 host01 host02 host03"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 YAML 文件中的放置规格。例如,如果您要在所有主机上部署
node-exporter
,您可以在yaml
文件中指定以下内容:示例
service_type: node-exporter placement: host_pattern: '*' extra_entrypoint_args: - "--collector.textfile.directory=/var/lib/node_exporter/textfile_collector2"
service_type: node-exporter placement: host_pattern: '*' extra_entrypoint_args: - "--collector.textfile.directory=/var/lib/node_exporter/textfile_collector2"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. 使用命令行界面部署 Ceph 守护进程 复制链接链接已复制到粘贴板!
通过使用 Ceph 编排器,您可以使用 ceph orch
命令部署诸如 Ceph Manager、Ceph 监控器、Ceph OSD、监控堆栈等守护进程。放置规格通过 Orchestrator 命令传递为 --placement
参数。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到存储集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下方法之一在主机上部署守护进程:
方法 1: 指定守护进程的数量和主机名:
语法
ceph orch apply SERVICE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
ceph orch apply SERVICE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mon --placement="3 host01 host02 host03"
[ceph: root@host01 /]# ceph orch apply mon --placement="3 host01 host02 host03"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 方法 2: 向主机添加标签,然后使用标签部署守护进程:
向主机添加标签:
语法
ceph orch host label add HOSTNAME_1 LABEL
ceph orch host label add HOSTNAME_1 LABEL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host label add host01 mon
[ceph: root@host01 /]# ceph orch host label add host01 mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用标签部署守护进程:
语法
ceph orch apply DAEMON_NAME label:LABEL
ceph orch apply DAEMON_NAME label:LABEL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph orch apply mon label:mon
ceph orch apply mon label:mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 3:向主机添加标签并使用
--placement
参数进行部署:向主机添加标签:
语法
ceph orch host label add HOSTNAME_1 LABEL
ceph orch host label add HOSTNAME_1 LABEL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host label add host01 mon
[ceph: root@host01 /]# ceph orch host label add host01 mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用标签放置规格部署守护进程:
语法
ceph orch apply DAEMON_NAME --placement="label:LABEL"
ceph orch apply DAEMON_NAME --placement="label:LABEL"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph orch apply mon --placement="label:mon"
ceph orch apply mon --placement="label:mon"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME ceph orch ps --service_name=SERVICE_NAME
ceph orch ps --daemon_type=DAEMON_NAME ceph orch ps --service_name=SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon [ceph: root@host01 /]# ceph orch ps --service_name=mon
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon [ceph: root@host01 /]# ceph orch ps --service_name=mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 使用命令行界面在主机子集上部署 Ceph 守护进程 复制链接链接已复制到粘贴板!
您可以使用 --placement
选项在主机的子集上部署守护进程。您可以使用要部署的守护进程的名称来指定放置规格中的守护进程数量。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出您要在其上部署 Ceph 守护进程的主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署守护进程:
语法
ceph orch apply SERVICE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 _HOST_NAME_2 HOST_NAME_3"
ceph orch apply SERVICE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 _HOST_NAME_2 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph orch apply mgr --placement="2 host01 host02 host03"
ceph orch apply mgr --placement="2 host01 host02 host03"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
mgr
守护进程仅部署到两个主机上。
验证
列出主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. Ceph 编排器的服务规格 复制链接链接已复制到粘贴板!
服务规格是一个数据结构,它指定用于部署 Ceph 服务的服务属性和配置设置。以下是多文档 YAML 文件 cluster.yaml
的示例,用于指定服务规格:
示例
以下列表定义了服务规格的属性参数,如下所示:
service_type
:服务的类型:- Ceph 服务,如 mon、crash、mds、mgr、osd、rbd 或 rbd-mirror。
- Ceph 网关,如 nfs 或 rgw。
- 监控堆栈,如 Alertmanager、Prometheus、Grafana 或 Node-exporter。
- 用于自定义容器的容器。
-
service_id
:服务的唯一名称。 -
placement
:用于定义部署守护进程的位置和方式。 -
unmanaged
:如果设置为true
,则 Orchestrator 将无法部署或删除与该服务关联的任何守护进程。
Orchestrators 的无状态服务
无状态服务是一种不需要状态信息的服务。例如,要启动 rgw
服务,不需要额外的信息才能启动或运行该服务。rgw
服务不创建有关此状态的信息,从而提供相应的功能。无论 rgw
服务何时启动,其状态都是相同的。
2.5. 禁用守护进程的自动管理 复制链接链接已复制到粘贴板!
您可以将 Cephadm 服务标记为 受管或非受管服务
,而无需编辑并重新应用服务规格。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
流程
使用以下命令为服务设置
非受管
:语法
ceph orch set-unmanaged SERVICE_NAME
ceph orch set-unmanaged SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
ceph orch set-unmanaged grafana
[root@host01 ~]# ceph orch set-unmanaged grafana
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令为服务设置
受管
:语法
ceph orch set-managed SERVICE_NAME
ceph orch set-managed SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
ceph orch set-managed mon
[root@host01 ~]# ceph orch set-managed mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. 使用服务规格部署 Ceph 守护进程 复制链接链接已复制到粘贴板!
通过 Ceph 编排器,您可以使用 YAML 文件中的服务规格部署守护进程,如 ceph Manager、Ceph 监控、Ceph OSD、监控堆栈等。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
流程
创建
yaml
文件:示例
touch mon.yaml
[root@host01 ~]# touch mon.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此文件可以通过两种不同的方式进行配置:
编辑该文件,在放置规格中包含主机详情:
语法
service_type: SERVICE_NAME placement: hosts: - HOST_NAME_1 - HOST_NAME_2
service_type: SERVICE_NAME placement: hosts: - HOST_NAME_1 - HOST_NAME_2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑该文件,在放置规格中包含标签详情:
语法
service_type: SERVICE_NAME placement: label: "LABEL_1"
service_type: SERVICE_NAME placement: label: "LABEL_1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
service_type: mon placement: label: "mon"
service_type: mon placement: label: "mon"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:在部署服务时,您还可以在服务规格文件中使用额外的容器参数,如 CPU、CA 证书和其他文件:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意Red Hat Ceph Storage 支持使用额外的参数来启用 Cephadm 部署的 node-exporter 中的额外指标。
将 YAML 文件挂载到容器中的一个目录下:
示例
cephadm shell --mount mon.yaml:/var/lib/ceph/mon/mon.yaml
[root@host01 ~]# cephadm shell --mount mon.yaml:/var/lib/ceph/mon/mon.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/mon/
[ceph: root@host01 /]# cd /var/lib/ceph/mon/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用服务规格部署 Ceph 守护进程:
语法
ceph orch apply -i FILE_NAME.yaml
ceph orch apply -i FILE_NAME.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 mon]# ceph orch apply -i mon.yaml
[ceph: root@host01 mon]# ceph orch apply -i mon.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. 使用服务规格部署 Ceph 文件系统镜像守护进程 复制链接链接已复制到粘贴板!
Ceph 文件系统 (CephFS) 支持使用 CephFS 镜像守护进程 (cephfs-mirror
) 将快照异步复制到远程 CephFS 文件系统。快照同步将快照数据复制到远程 CephFS,并在远程目标上创建一个新的快照,其名称相同。利用 Ceph 编排器,您可以使用 YAML 文件中的服务规格部署 cephfs-mirror
。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 已创建 CephFS。
流程
创建
yaml
文件:示例
touch mirror.yaml
[root@host01 ~]# touch mirror.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑该文件使其包含以下内容:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 YAML 文件挂载到容器中的一个目录下:
示例
cephadm shell --mount mirror.yaml:/var/lib/ceph/mirror.yaml
[root@host01 ~]# cephadm shell --mount mirror.yaml:/var/lib/ceph/mirror.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/
[ceph: root@host01 /]# cd /var/lib/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用服务规格部署
cephfs-mirror
守护进程:示例
[ceph: root@host01 /]# ceph orch apply -i mirror.yaml
[ceph: root@host01 /]# ceph orch apply -i mirror.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=cephfs-mirror
[ceph: root@host01 /]# ceph orch ps --daemon_type=cephfs-mirror
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 使用 Ceph Orchestrator 管理主机 复制链接链接已复制到粘贴板!
作为存储管理员,您可以在后端中将 Ceph Orchestrator 与 Cephadm 搭配使用,以添加、列出和删除现有 Red Hat Ceph Storage 集群中的主机。
您还可以向主机添加标签。标签是自由格式的,没有具体含义。每一主机可以有多个标签。例如,将 mon
标签应用到部署了监控守护进程的所有主机,mgr
用于部署有管理器守护进程的 mgr,同时用于 Ceph 对象网关的 rgw
,等等。
标记存储集群中的所有主机有助于简化系统管理任务,允许您快速识别每个主机上运行的守护进程。此外,您可以使用 Ceph 编配器或 YAML 文件在具有特定主机标签的主机上部署或删除守护进程。
本节涵盖了以下管理任务:
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
-
新主机的 IP 地址应在
/etc/hosts
文件中更新。
3.1. 使用 Ceph Orchestrator 添加主机 复制链接链接已复制到粘贴板!
您可以将 Ceph Orchestrator 与后端中的 Cephadm 搭配使用,将主机添加到现有的 Red Hat Ceph Storage 集群中。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对存储集群中所有节点的根级别访问权限。
- 将节点注册到 CDN 并附加订阅。
-
具有 sudo 的 Ansible 用户,对存储集群中所有节点的
ssh
访问和免密码访问。
流程
从 Ceph 管理节点,登录 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将集群的公共 SSH 密钥提取到文件夹:
语法
ceph cephadm get-pub-key > ~/PATH
ceph cephadm get-pub-key > ~/PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph cephadm get-pub-key > ~/ceph.pub
[ceph: root@host01 /]# ceph cephadm get-pub-key > ~/ceph.pub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Ceph 集群的公共 SSH 密钥复制到新主机上的 root 用户的
authorized_keys
文件中:语法
ssh-copy-id -f -i ~/PATH root@HOST_NAME_2
ssh-copy-id -f -i ~/PATH root@HOST_NAME_2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ssh-copy-id -f -i ~/ceph.pub root@host02
[ceph: root@host01 /]# ssh-copy-id -f -i ~/ceph.pub root@host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Ansible 管理节点,将新主机添加到 Ansible 清单文件。该文件的默认位置为
/usr/share/cephadm-ansible/hosts
。以下示例显示了典型的清单文件的结构:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您之前已将新主机添加到 Ansible 清单文件,并在主机上运行 preflight playbook,请跳至第 6 步。
使用
--limit
选项运行 preflight playbook:语法
ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" --limit NEWHOST
ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" --limit NEWHOST
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" --limit host02
[ceph-admin@admin cephadm-ansible]$ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" --limit host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow preflight playbook 在新主机上安装
podman
、lvm2
、chronyd
和cephadm
。安装完成后,cephadm
驻留在/usr/sbin/
目录中。从 Ceph 管理节点,登录 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
cephadm
编配器将主机添加到存储集群中:语法
ceph orch host add HOST_NAME IP_ADDRESS_OF_HOST [--label=LABEL_NAME_1,LABEL_NAME_2]
ceph orch host add HOST_NAME IP_ADDRESS_OF_HOST [--label=LABEL_NAME_1,LABEL_NAME_2]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --label
选项是可选的,这会在添加主机时添加标签。您可以向主机添加多个标签。示例
[ceph: root@host01 /]# ceph orch host add host02 10.10.128.70 --labels=mon,mgr
[ceph: root@host01 /]# ceph orch host add host02 10.10.128.70 --labels=mon,mgr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 使用 Ceph Orchestrator 添加多个主机 复制链接链接已复制到粘贴板!
您可以通过 Ceph Orchestrator 使用 YAML 文件格式的服务规格同时将多个主机添加到 Red Hat Ceph Storage 集群。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
流程
创建
hosts.yaml
文件:示例
touch hosts.yaml
[root@host01 ~]# touch hosts.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
hosts.yaml
文件使其包含以下详情:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 YAML 文件挂载到容器中的一个目录下:
示例
cephadm shell --mount hosts.yaml:/var/lib/ceph/hosts.yaml
[root@host01 ~]# cephadm shell --mount hosts.yaml:/var/lib/ceph/hosts.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/
[ceph: root@host01 /]# cd /var/lib/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用服务规格部署主机:
语法
ceph orch apply -i FILE_NAME.yaml
ceph orch apply -i FILE_NAME.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 hosts]# ceph orch apply -i hosts.yaml
[ceph: root@host01 hosts]# ceph orch apply -i hosts.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 使用 Ceph Orchestrator 列出主机 复制链接链接已复制到粘贴板!
您可以使用 Ceph 编排器列出 Ceph 集群的主机。
主机 STATUS 为空,在 ceph orch host ls
命令的输出中。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到存储集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出集群的主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您将看到主机的 STATUS 是空白的,这是预期的行为。
3.4. 为主机添加标签 复制链接链接已复制到粘贴板!
使用 Ceph 编排器向主机添加标签。标签可用于指定守护进程的放置。
几个标签示例是 mgr
、mon
和 osd
,基于主机上部署的服务。每一主机可以有多个标签。
您还可以添加以下主机标签,它们对 cephadm
具有特殊含义,它们以 _
开头:
-
_no_schedule
: 此标签会阻止cephadm
调度或部署主机上的守护进程。如果它被添加到已包含 Ceph 守护进程的现有主机中,它会导致cephadm
在其他位置移动这些守护进程,除了自动移除的 OSD 除外。当添加带有_no_schedule
标签的主机时,不会在其上部署守护进程。当守护进程在删除主机前排空时,在该主机上设置了_no_schedule
标签。 -
_no_autotune_memory
:此标签不会在主机上自动微调内存。即使为 host 上的一个或多个守护进程启用了osd_memory_target_autotune
选项,也会防止守护进程内存被调优。 -
_admin
: 默认情况下,_admin
标签应用于存储集群中的 bootstrapped 主机,client.admin
密钥被设置为使用ceph orch client-keyring {ls|set|rm}
功能分发到该主机。将此标签添加到其他主机通常会导致cephadm
在/etc/ceph
目录中部署配置和密钥环文件。
先决条件
- 已安装并引导的存储集群。
- 对存储集群中所有节点的根级别访问权限。
- 主机添加到存储集群中。
流程
登录到 Cephadm shell:
Example
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为主机添加标签:
语法
ceph orch host label add HOSTNAME LABEL
ceph orch host label add HOSTNAME LABEL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host label add host02 mon
[ceph: root@host01 /]# ceph orch host label add host02 mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. 从主机中删除标签 复制链接链接已复制到粘贴板!
您可以使用 Ceph 编配器从主机移除标签。
先决条件
- 已安装并引导的存储集群。
- 对存储集群中所有节点的根级别访问权限。
流程
启动
cephadm
shell:cephadm shell
[root@host01 ~]# cephadm shell [ceph: root@host01 /]#
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除标签。
语法
ceph orch host label rm HOSTNAME LABEL
ceph orch host label rm HOSTNAME LABEL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host label rm host02 mon
[ceph: root@host01 /]# ceph orch host label rm host02 mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 使用 Ceph Orchestrator 删除主机 复制链接链接已复制到粘贴板!
您可以使用 Ceph 编排器删除 Ceph 集群的主机。所有守护进程都会使用 drain
选项删除,该选项添加了 _no_schedule
标签,以确保您无法部署任何守护进程或集群完成这个操作。
如果您要删除 bootstrap 主机,请确保在删除主机前将 admin 密钥环和配置文件复制到存储集群中的另一主机上。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到存储集群中。
- 部署所有服务。
- Cephadm 部署在必须移除服务的节点上。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取主机详情:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 排空主机中的所有守护进程:
语法
ceph orch host drain HOSTNAME
ceph orch host drain HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意ceph orch host drain 命令支持 --zap-osd-devices 标志。当您设置此标志时,Cephadm zaps 会在排空过程中删除的 OSD 设备。
示例
[ceph: root@host01 /]# ceph orch host drain host02
[ceph: root@host01 /]# ceph orch host drain host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
[ceph: ceph orch host drain <host> --zap-osd-devices
[ceph: ceph orch host drain <host> --zap-osd-devices
+ _no_schedule
标签自动应用到阻止部署的主机。
检查移除 OSD 的状态:
示例
[ceph: root@host01 /]# ceph orch osd rm status
[ceph: root@host01 /]# ceph orch osd rm status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 OSD 上没有剩余的放置组(PG)时,该 OSD 会停用并从存储集群中移除。
检查所有守护进程是否已从存储集群中移除:
语法
ceph orch ps HOSTNAME
ceph orch ps HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps host02
[ceph: root@host01 /]# ceph orch ps host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除主机:
语法
ceph orch host rm HOSTNAME
ceph orch host rm HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host rm host02
[ceph: root@host01 /]# ceph orch host rm host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. 使用 Ceph 编排器将主机置于维护模式 复制链接链接已复制到粘贴板!
您可以使用 Ceph Orchestrator 将主机置于维护模式和停用状态。ceph orch host maintenance enter
命令停止 systemd 目标
,这会导致主机上所有 Ceph 守护进程停止。类似地,ceph orch host maintenance exit
命令重新启动 systemd 目标
,Ceph 守护进程会自行重启。
当主机被置于维护模式时,编配器采用以下工作流:
-
运行
orch host ok-to-stop
命令,确认删除主机不会影响数据的可用性。 -
如果主机有 Ceph OSD 守护进程,它会将
noout
应用到主机子树,以防止在计划的维护插槽期间触发数据迁移。 - 停止 Ceph 目标,从而停止所有守护进程。
-
禁用主机上的
ceph 目标
,以防止重新引导自动启动 Ceph 服务。
退出维护与上述序列相反。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 添加至集群的主机。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以将主机置于维护模式,或者将其置于维护模式:
将主机置于维护模式:
语法
ceph orch host maintenance enter HOST_NAME [--force]
ceph orch host maintenance enter HOST_NAME [--force]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host maintenance enter host02 --force
[ceph: root@host01 /]# ceph orch host maintenance enter host02 --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --force
标志允许用户绕过警告,但不允许警报。将主机从维护模式中放置:
语法
ceph orch host maintenance exit HOST_NAME
ceph orch host maintenance exit HOST_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host maintenance exit host02
[ceph: root@host01 /]# ceph orch host maintenance exit host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机:
示例
[ceph: root@host01 /]# ceph orch host ls
[ceph: root@host01 /]# ceph orch host ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 使用 Ceph Orchestrator 管理 monitor 复制链接链接已复制到粘贴板!
作为存储管理员,您可以使用放置规格部署额外的 monitor,使用服务规格添加 monitor,将监控器添加到子网配置,并将监控器添加到特定的主机。除此之外,您还可以使用 Ceph Orchestrator 删除 monitor。
默认情况下,一般的 Red Hat Ceph Storage 集群在不同主机上部署有三个或五个监控守护进程。
如果集群中有五个或更多节点,红帽建议部署五个监控器。
红帽建议在使用 OSP Director 部署 Ceph 时部署三个监控器。
Ceph 会在集群增加时自动部署监控器守护进程,并在集群缩小时自动扩展后端监控守护进程。是否可以平稳地执行这个自动扩大和缩减取决于正确的子网配置。
如果您的 monitor 节点或整个集群都位于单个子网中,则 Cephadm 会在向集群添加新主机时自动添加最多五个 monitor 守护进程。Cephadm 在新主机上自动配置监控器守护进程。新主机与存储集群中引导的主机位于同一个子网中。
Cephadm 还可以部署和缩放 monitor,以响应存储集群大小的变化。
4.1. Ceph Monitor 复制链接链接已复制到粘贴板!
Ceph Monitor 是轻量型进程,维护存储集群映射的主副本。所有 Ceph 客户端都会联系 Ceph 监控器,并检索存储集群映射的当前副本,使客户端能够绑定到池并读写数据。
Ceph 监控程序使用 Paxos 协议的一种变体来就存储集群之间的映射和其他重要信息建立共识。由于 Paxos 的性质,Ceph 需要大多数 monitor 能够建立仲裁,从而建立共识。
对于生产环境集群,需要在独立的主机上至少有三个监控器才能获得红帽的支持。
红帽建议部署奇数个监控器。与偶数个监控器相比,Ceph 监控器的数量对故障的恢复能力更高。例如,若要在双监视器部署上维护仲裁,Ceph 无法容忍任何故障;对于四个监视器,可以容忍一个失败,对于五个监视器,可以容忍两个失败。这就是建议为奇数的原因。总结一下,Ceph 需要大多数监控器正在运行,并能够相互通信,另外两个是三个,共三,共 4 个,以此类推。
对于多节点 Ceph 存储集群的初始部署,红帽需要至少三个监视器,当需要多于三个 monitor 的情况,每次需要增加 2 个。
由于 Ceph 监控是轻量级的,因此可以在与 OpenStack 节点相同的主机上运行。但是,红帽建议在独立主机上运行 monitor。
红帽仅在容器化环境中支持并置 Ceph 服务。
从存储集群中移除 monitor 时,请考虑 Ceph Monitor 使用 Paxos 协议来建立关于主存储集群映射的共识。您必须有足够的数量的 Ceph 监控器来建立仲裁。
4.2. 配置 monitor 选择策略 复制链接链接已复制到粘贴板!
monitor 选择策略标识了网络分割并处理失败。您可以使用三种不同模式配置选择监控策略:
-
classic
- 默认默认,它是最低等级的监控,根据两个站点之间的选举模块进行投票。 -
disallow
- 此模式可让您将 monitor 标记为禁止,在这种情况下,他们会参与仲裁并服务客户端,但不能是选择的领导者。这样,您可以将 monitor 添加到禁止的领导列表中。如果 monitor 在 disallowed 列表中,它将始终被推迟到另一个 monitor。 -
connectivity
- 这个模式主要用于解决网络差异。它会根据 ping 检查其对等点提供的 ping 评估连接分数,并选出最连接的、可靠监控成为领导机。这个模式旨在处理网络分割,如果您的集群在多个数据中心间扩展或存在影响,则可能会出现这种情况。这个模式包含连接分数评级,并以最佳分数选择监控器。如果需要将特定的 monitor 成为领导,请配置选择策略,使特定的 monitor 是排名中的第一个 monitor,其等级为0
。
红帽建议保持在 经典(classic)
模式,除非您需要其他模式的功能。
在构造集群前,将以下命令的 election_strategy
更改为 classic
, disallow
, 或 connectivity
:
语法
ceph mon set election_strategy {classic|disallow|connectivity}
ceph mon set election_strategy {classic|disallow|connectivity}
4.3. 使用命令行界面部署 Ceph 监控守护进程 复制链接链接已复制到粘贴板!
Ceph 编排器默认部署一个监控器守护进程。您可以通过在命令行界面中使用 放置
规格来部署额外的监控守护进程。要部署不同数量的 monitor 守护进程,请指定不同的数字。如果您不指定应当部署管理器守护进程的主机,Ceph 编配器会随机选择主机,并将管理器守护进程部署到主机上。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 部署 Ceph 监控守护进程有四个不同的方法:
方法 1
使用放置规格在主机上部署监控器:
注意红帽建议您使用
--placement
选项部署到特定主机上。语法
ceph orch apply mon --placement="HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
ceph orch apply mon --placement="HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mon --placement="host01 host02 host03"
[ceph: root@host01 /]# ceph orch apply mon --placement="host01 host02 host03"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意务必将 bootstrap 节点包含为命令中的第一个节点。
重要不要将监视器单独添加为
ceph orch apply mon
supersedes,也不会将 monitor 添加到所有主机。例如,如果您运行以下命令,第一个命令在host01
上创建 monitor。然后,第二个命令会取代 host1 上的监控器,并在host02
上创建监控器。然后,第三个命令会取代host02
上的监控器,并在host03
上创建监控器。最后,只有第三个主机上有一个监控器。ceph orch apply mon host01 ceph orch apply mon host02 ceph orch apply mon host03
# ceph orch apply mon host01 # ceph orch apply mon host02 # ceph orch apply mon host03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 2
使用放置规格,通过标签在特定主机上部署特定数量的监控器:
向主机添加标签:
语法
ceph orch host label add HOSTNAME_1 LABEL
ceph orch host label add HOSTNAME_1 LABEL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host label add host01 mon
[ceph: root@host01 /]# ceph orch host label add host01 mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署守护进程:
语法
ceph orch apply mon --placement="HOST_NAME_1:mon HOST_NAME_2:mon HOST_NAME_3:mon"
ceph orch apply mon --placement="HOST_NAME_1:mon HOST_NAME_2:mon HOST_NAME_3:mon"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mon --placement="host01:mon host02:mon host03:mon"
[ceph: root@host01 /]# ceph orch apply mon --placement="host01:mon host02:mon host03:mon"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 3
使用放置规格在特定主机上部署特定数量的监控器:
语法
ceph orch apply mon --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
ceph orch apply mon --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mon --placement="3 host01 host02 host03"
[ceph: root@host01 /]# ceph orch apply mon --placement="3 host01 host02 host03"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 4
在存储集群的主机上随机部署监控器守护进程:
语法
ceph orch apply mon NUMBER_OF_DAEMONS
ceph orch apply mon NUMBER_OF_DAEMONS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mon 3
[ceph: root@host01 /]# ceph orch apply mon 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. 使用服务规格部署 Ceph 监控守护进程 复制链接链接已复制到粘贴板!
Ceph 编排器默认部署一个监控器守护进程。您可以使用服务规格(如 YAML 格式文件)部署额外的监控守护进程。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
流程
创建
mon.yaml
文件:示例
touch mon.yaml
[root@host01 ~]# touch mon.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
mon.yaml
文件,使其包含以下详情:语法
service_type: mon placement: hosts: - HOST_NAME_1 - HOST_NAME_2
service_type: mon placement: hosts: - HOST_NAME_1 - HOST_NAME_2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
service_type: mon placement: hosts: - host01 - host02
service_type: mon placement: hosts: - host01 - host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 YAML 文件挂载到容器中的一个目录下:
示例
cephadm shell --mount mon.yaml:/var/lib/ceph/mon/mon.yaml
[root@host01 ~]# cephadm shell --mount mon.yaml:/var/lib/ceph/mon/mon.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/mon/
[ceph: root@host01 /]# cd /var/lib/ceph/mon/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署监控器守护进程:
语法
ceph orch apply -i FILE_NAME.yaml
ceph orch apply -i FILE_NAME.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 mon]# ceph orch apply -i mon.yaml
[ceph: root@host01 mon]# ceph orch apply -i mon.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. 使用 Ceph 编排器在特定网络中部署监控器守护进程 复制链接链接已复制到粘贴板!
Ceph 编排器默认部署一个监控器守护进程。您可以为每个 monitor 明确指定 IP 地址或 CIDR 网络,并控制放置每个 monitor 的位置。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用自动监控器部署:
示例
[ceph: root@host01 /]# ceph orch apply mon --unmanaged
[ceph: root@host01 /]# ceph orch apply mon --unmanaged
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在特定网络上的主机上部署监控器:
语法
ceph orch daemon add mon HOST_NAME_1:IP_OR_NETWORK
ceph orch daemon add mon HOST_NAME_1:IP_OR_NETWORK
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch daemon add mon host03:10.1.2.123
[ceph: root@host01 /]# ceph orch daemon add mon host03:10.1.2.123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. 使用 Ceph Orchestrator 删除 monitor 守护进程 复制链接链接已复制到粘贴板!
要从主机中删除 monitor 守护进程,您只能在其他主机上重新部署 monitor 守护进程。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 至少一个在主机上部署的 monitor 守护进程。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
ceph orch apply
命令来部署所需的监控器守护进程:语法
ceph orch apply mon “NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_3”
ceph orch apply mon “NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_3”
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要从
host02
中删除 monitor 守护进程,您可以在其他主机上重新部署 monitor。示例
[ceph: root@host01 /]# ceph orch apply mon “2 host01 host03”
[ceph: root@host01 /]# ceph orch apply mon “2 host01 host03”
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
[ceph: root@host01 /]# ceph orch ps --daemon_type=mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. 从不健康的存储集群中移除 Ceph Monitor 复制链接链接已复制到粘贴板!
您可以从不健康的存储集群中删除 ceph-mon
守护进程。不健康的存储集群是,其持续具有没有处于 active + clean
状态的放置组。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- Ceph 监控节点的根级别访问权限.
- 至少一个运行 Ceph Monitor 节点。
流程
识别 Surviving 监控器并登录到主机:
语法
ssh root@MONITOR_ID
ssh root@MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ssh root@host00
[root@admin ~]# ssh root@host00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到每个 Ceph Monitor 主机并停止所有 Ceph Monitor:
语法
cephadm unit --name DAEMON_NAME.HOSTNAME stop
cephadm unit --name DAEMON_NAME.HOSTNAME stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
cephadm unit --name mon.host00 stop
[root@host00 ~]# cephadm unit --name mon.host00 stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置适合扩展守护进程维护的环境,并以交互方式运行守护进程:
语法
cephadm shell --name DAEMON_NAME.HOSTNAME
cephadm shell --name DAEMON_NAME.HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
cephadm shell --name mon.host00
[root@host00 ~]# cephadm shell --name mon.host00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提取
monmap
文件的副本:语法
ceph-mon -i HOSTNAME --extract-monmap TEMP_PATH
ceph-mon -i HOSTNAME --extract-monmap TEMP_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host00 /]# ceph-mon -i host01 --extract-monmap /tmp/monmap 2022-01-05T11:13:24.440+0000 7f7603bd1700 -1 wrote monmap to /tmp/monmap
[ceph: root@host00 /]# ceph-mon -i host01 --extract-monmap /tmp/monmap 2022-01-05T11:13:24.440+0000 7f7603bd1700 -1 wrote monmap to /tmp/monmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除非可见的 Ceph 监控器:
语法
monmaptool TEMPORARY_PATH --rm HOSTNAME
monmaptool TEMPORARY_PATH --rm HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host00 /]# monmaptool /tmp/monmap --rm host01
[ceph: root@host00 /]# monmaptool /tmp/monmap --rm host01
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 surviving monitor map 与已删除 monitor 注入 surviving Ceph Monitor:
语法
ceph-mon -i HOSTNAME --inject-monmap TEMP_PATH
ceph-mon -i HOSTNAME --inject-monmap TEMP_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host00 /]# ceph-mon -i host00 --inject-monmap /tmp/monmap
[ceph: root@host00 /]# ceph-mon -i host00 --inject-monmap /tmp/monmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅启动 Surviving 监控器:
语法
cephadm unit --name DAEMON_NAME.HOSTNAME start
cephadm unit --name DAEMON_NAME.HOSTNAME start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
cephadm unit --name mon.host00 start
[root@host00 ~]# cephadm unit --name mon.host00 start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 monitor 形成仲裁:
示例
[ceph: root@host00 /]# ceph -s
[ceph: root@host00 /]# ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:在
/var/lib/ceph/CLUSTER_FSID/mon.HOSTNAME
目录中归档已删除的 Ceph Monitor 的数据目录。
第 5 章 使用 Ceph 编排器管理 managers 复制链接链接已复制到粘贴板!
作为存储管理员,您可以使用 Ceph 编排器部署额外的管理器守护进程。在 bootstrap 过程中,Cephadm 会在 bootstrap 节点上自动安装管理器守护进程。
通常,您应该在运行 Ceph Monitor 守护进程的每个主机上设置 Ceph 管理器,以实现相同的可用性级别。
默认情况下,每个 ceph-mgr
实例首先由 Ceph 监控器激活,另一些都是备用管理器。不要求 ceph-mgr
守护进程中应当有一个仲裁。
如果活跃的守护进程无法向 monitor 发送 beacon,以获得超过 mon mgr beacon grace
,则它被替换为待机。
如果要预先使用故障转移,您可以使用 ceph mgr fail MANAGER_NAME
命令明确将 ceph-mgr
守护进程标记为失败。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到集群中。
5.1. 使用 Ceph Orchestrator 部署管理器守护进程 复制链接链接已复制到粘贴板!
Ceph 编配器默认部署两个管理器守护进程。您可以通过在命令行界面中使用 放置
规格来部署额外的 manager 守护进程。要部署不同数量的管理器守护进程,请指定不同的数字。如果不指定应当部署 Manager 守护进程的主机,Ceph 编排器随机选择主机,并将 Manager 守护进程部署到其中。
确保您的部署在每个部署中至少有三个 Ceph 管理器。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您可以通过两种不同的方式部署管理器守护进程:
方法 1
使用特定主机组中的放置规格部署管理器守护进程:
注意红帽建议您使用
--placement
选项部署到特定主机上。语法
ceph orch apply mgr --placement=" HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
ceph orch apply mgr --placement=" HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mgr --placement="host01 host02 host03"
[ceph: root@host01 /]# ceph orch apply mgr --placement="host01 host02 host03"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 2
在存储集群的主机上随机部署管理器守护进程:
语法
ceph orch apply mgr NUMBER_OF_DAEMONS
ceph orch apply mgr NUMBER_OF_DAEMONS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mgr 3
[ceph: root@host01 /]# ceph orch apply mgr 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mgr
[ceph: root@host01 /]# ceph orch ps --daemon_type=mgr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 使用 Ceph Orchestrator 删除 manager 守护进程 复制链接链接已复制到粘贴板!
要从主机中删除管理器守护进程,您只需在其他主机上重新部署守护进程。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到集群中。
- 主机上至少部署一个管理器守护进程。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
ceph orch apply
命令以重新部署所需的管理器守护进程:语法
ceph orch apply mgr "NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_3"
ceph orch apply mgr "NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要从
host02
中删除管理器守护进程,您可以在其他主机上重新部署 manager 守护进程。示例
[ceph: root@host01 /]# ceph orch apply mgr "2 host01 host03"
[ceph: root@host01 /]# ceph orch apply mgr "2 host01 host03"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mgr
[ceph: root@host01 /]# ceph orch ps --daemon_type=mgr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. 使用 Ceph Manager 模块 复制链接链接已复制到粘贴板!
使用 ceph mgr module ls
命令查看可用的模块和当前启用的模块。
使用 ceph mgr module enable MODULE
command 或 ceph mgr module 分别禁用 MODULE
命令或禁用模块。
如果启用了模块,则活跃的 ceph-mgr
守护进程会加载并执行它。对于提供 HTTP 服务器等服务的模块,该模块可能会在加载时发布其地址。要查看此类模块的地址,请运行 ceph mgr services
命令。
有些模块还可能实施特殊的待机模式,它在待机 ceph-mgr
守护进程和活跃的守护进程上运行。这可让提供服务的模块在客户端尝试连接到待机时将其客户端重定向到活跃的守护进程。
以下是启用仪表板模块的示例:
第一次集群启动时,它使用 mgr_initial_modules
设置来覆盖要启用的模块。但是,在集群的剩余生命周期中会忽略此设置: 仅使用它来引导。例如,在首次启动 monitor 守护进程前,您可以在 ceph.conf
文件中添加如下部分:
[mon] mgr initial modules = dashboard balancer
[mon]
mgr initial modules = dashboard balancer
如果模块实施行 hook,命令可作为常规 Ceph 命令访问,Ceph 会自动将模块命令合并到标准 CLI 接口中,并将它们正确路由到模块:
[ceph: root@host01 /]# ceph <command | help>
[ceph: root@host01 /]# ceph <command | help>
您可以在上述命令中使用以下配置参数:
配置 | 描述 | 类型 | default |
---|---|---|---|
| 从中加载模块的路径。 | 字符串 |
|
| 加载守护进程数据的路径(如密钥环) | 字符串 |
|
| 监视器的 manager beacons 之间的秒数,以及其他定期检查。 | 整数 |
|
| 最后一次 beacon 之后的时长,管理器应被视为失败。 | 整数 |
|
5.4. 使用 Ceph Manager 负载均衡器模块 复制链接链接已复制到粘贴板!
balancer 是 Ceph Manager(ceph-mgr
)的一个模块,用于优化 OSD 之间放置组(PG)放置,从而实现平衡的分发(可自动或监管方式)。
无法禁用 balancer 模块。它只能关闭自定义配置。
模式
以下是支持的负载均衡器模式:
- crush-compat
CRUSH compat 模式使用 compat
weight-set
功能(在 Ceph Luminous 中引入)来管理 CRUSH 层次结构中设备的一个替代的权重集。正常的权重应保持设置为设备的大小,以反映您要存储在该设备中的目标数据量。然后,平衡会优化weight-set
值,以较小的增量调整或缩减值,以实现尽可能与目标发行版匹配的分布。由于 PG 放置是一个伪随机进程,因此放置中有一个自然的变化;通过优化 weight,负载均衡器的计数器实际上会造成自然变化。这个模式与旧的客户端完全向后兼容。当 OSDMap 和 CRUSH map 与较旧的客户端共享时,负载均衡器会将优化权重ff 显示为实际权重。
此模式的主要限制是,如果层次结构的子树共享任何 OSD,则负载平衡器无法处理具有不同放置规则的多个 CRUSH 层次结构。由于此配置使得管理共享 OSD 上的空间利用率比较困难,因此通常不推荐这样做。因此,这个限制通常不是问题。
- upmap
从 Luminous 开始,OSDMap 可以存储各个 OSD 的显式映射,作为普通的 CRUSH 放置计算的例外。这些
upmap
条目提供对 PG 映射的精细控制。此 CRUSH 模式将优化单个 PG 的放置,以实现均衡的分发。在大多数情况下,此发行版为"完美",每个 OSD +/-1 PG 上具有相等的 PG 数量,因为它们可能无法均匀划分。重要要允许使用这个功能,您必须告诉集群只需要使用以下命令支持 luminous 或更新的客户端:
[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous
[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果任何 pre-luminous 客户端或守护进程连接到 monitor,则此命令会失败。
由于一个已知问题,内核 CephFS 客户端将自身报告为 jewel 客户端。要临时解决这个问题,请使用
--yes-i-really-mean-it
标志:[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以检查使用哪些客户端版本:
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 读取
OSDMap 可以存储单个主 OSD 的显式映射,作为常见 CRUSH 放置计算的例外。这些
pg-upmap-primary
条目提供对主 PG 映射的精细控制。此模式优化单个主 PG 的放置,以便在集群中实现均衡的读取或主 PG。在读取
模式中,不会进行 upmap 行为,因此,对于只需要读取平衡的用例,此模式最适合此模式。重要要允许使用这个功能,您必须告诉集群只需要使用以下命令支持 Reef 或 later 客户端:
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果任何 pre-Reef 客户端或守护进程连接到 monitor,则此命令会失败。
要临时解决这个问题,请使用
--yes-i-really-mean-it
标志:[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以检查使用哪些客户端版本:
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - upmap-read
此负载均衡器模式组合了
upmap
和read
模式的优化优势。与读取
模式一样,upmap-read
使用pg-upmap-primary
。使用
upmap-read
实现平衡 PG 分发的upmap
模式,以及 balanced读取的
读取服务。重要要允许使用这个功能,您必须告诉集群只需要使用以下命令支持 Reef 或 later 客户端:
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果任何 pre-Reef 客户端或守护进程连接到 monitor,则此命令会失败。
要临时解决这个问题,请使用
--yes-i-really-mean-it
标志:[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以检查使用哪些客户端版本:
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.1. 使用容量均衡 Red Hat Ceph 集群 复制链接链接已复制到粘贴板!
使用容量均衡器来平衡 Red Hat Ceph 存储集群。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
流程
检查是否启用了 balancer 模块:
Example
[ceph: root@host01 /]# ceph mgr module enable balancer
[ceph: root@host01 /]# ceph mgr module enable balancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 balancer 模块:
Example
[ceph: root@host01 /]# ceph balancer on
[ceph: root@host01 /]# ceph balancer on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 若要更改模式,请使用以下命令:默认模式是
upmap
:Example
[ceph: root@host01 /]# ceph balancer mode crush-compat
[ceph: root@host01 /]# ceph balancer mode crush-compat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
Example
[ceph: root@host01 /]# ceph balancer mode upmap
[ceph: root@host01 /]# ceph balancer mode upmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查均衡的当前状态。
Example
[ceph: root@host01 /]# ceph balancer status
[ceph: root@host01 /]# ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
自动平衡
打开 balancer 模块时使用自动平衡。使用 ceph balancer on
命令打开容量均衡器。默认情况下,在打开 balancer 模块时,会使用自动平衡,并启用 upmap
模式。
示例
[ceph: root@host01 /]# ceph balancer on
[ceph: root@host01 /]# ceph balancer on
您可以将负载均衡器模式从 upmap
改为 crush-compact
模式。crush-compat
模式与旧的客户端向后兼容,并对数据分发进行小更改,以确保 OSD 平等地使用。
在负载均衡器开启后,您可以验证负载均衡器状态。
Example
若要关闭 balancer 模块,可使用 ceph balancer off
命令。
Example
节流
如果集群降级了 OSD,且系统尚未修复自身,则不会对 PG 发行版进行调整。
当集群处于健康状态时,负载均衡器会节流到其更改,使得 PG 百分比被错误或需要移动,默认低于 5%。可以使用 target_max_misplaced_ratio
设置调整这个百分比。
语法
ceph config-key set mgr target_max_misplaced_ratio THRESHOLD_PERCENTAGE
ceph config-key set mgr target_max_misplaced_ratio THRESHOLD_PERCENTAGE
以下示例将阈值增加到 7%。
Example
[ceph: root@host01 /]# ceph config-key set mgr target_max_misplaced_ratio .07
[ceph: root@host01 /]# ceph config-key set mgr target_max_misplaced_ratio .07
对于自动平衡:
- 将自动平衡器运行之间设置为睡眠的秒数:
Example
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/sleep_interval 60
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/sleep_interval 60
- 将一天的时间设置为以 HHMM 格式开始自动平衡:
Example
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_time 0000
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_time 0000
- 将一天的时间设置为以 HHMM 格式完成自动平衡:
Example
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_time 2359
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_time 2359
-
将自动平衡限制为本周或更高版本的这一天。使用与 crontab 相同的约定,
0
为星期日,1
为 Monday,以此类推:
Example
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_weekday 0
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_weekday 0
-
将自动平衡限制为星期几或更早版本。这使用与 crontab 相同的约定,
0
为星期日,1
代表星期一,以此类推:
Example
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_weekday 6
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_weekday 6
-
定义自动平衡仅限于的池 ID。的默认值是空字符串,即所有池都是均衡的。可以使用
ceph osd pool ls detail
命令获取数字池 ID:
Example
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3
监控的优化
balancer 操作分为几个不同的阶段:
-
构建
计划
。 -
评估数据分发的质量,针对当前的 PG 分发,或在执行一个
计划(plan)
后生成的 PG 分发。 执行
计划
。评估和衡量当前发行版:
示例
[ceph: root@host01 /]# ceph balancer eval
[ceph: root@host01 /]# ceph balancer eval
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 评估单个池的发布:
语法
ceph balancer eval POOL_NAME
ceph balancer eval POOL_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph balancer eval rbd
[ceph: root@host01 /]# ceph balancer eval rbd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看更多评估的详情:
示例
[ceph: root@host01 /]# ceph balancer eval-verbose ...
[ceph: root@host01 /]# ceph balancer eval-verbose ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用当前配置模式生成计划:
语法
ceph balancer optimize PLAN_NAME
ceph balancer optimize PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用自定义计划名称替换 PLAN_NAME。
示例
[ceph: root@host01 /]# ceph balancer optimize rbd_123
[ceph: root@host01 /]# ceph balancer optimize rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看计划的内容:
语法
ceph balancer show PLAN_NAME
ceph balancer show PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph balancer show rbd_123
[ceph: root@host01 /]# ceph balancer show rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要丢弃旧计划:
语法
ceph balancer rm PLAN_NAME
ceph balancer rm PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph balancer rm rbd_123
[ceph: root@host01 /]# ceph balancer rm rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看当前记录的计划,请使用 status 命令:
[ceph: root@host01 /]# ceph balancer status
[ceph: root@host01 /]# ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要计算执行计划后结果的分发质量:
语法
ceph balancer eval PLAN_NAME
ceph balancer eval PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph balancer eval rbd_123
[ceph: root@host01 /]# ceph balancer eval rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行计划:
语法
ceph balancer execute PLAN_NAME
ceph balancer execute PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph balancer execute rbd_123
[ceph: root@host01 /]# ceph balancer execute rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意只有预期会改进发布时才执行计划。执行后,将丢弃计划。
5.4.2. 使用读取均衡 Red Hat Ceph 集群 复制链接链接已复制到粘贴板!
平衡集群中的主放置组(PG)。负载平衡器可以优化 OSD 之间放置组的分配,以实现均衡的分发。balancer 可以自动运行(在线)、离线,或者以监管的方式(离线)运行。
5.4.2.1. 在线优化 复制链接链接已复制到粘贴板!
使用 balancer 模块在集群中平衡主 PG。
先决条件
在开始前,请确保您有一个正在运行的 Red Hat Ceph Storage 集群。
流程
启用 balancer 模块。
语法
[ceph: root@host01 /]# ceph mgr module enable balancer
[ceph: root@host01 /]# ceph mgr module enable balancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 balancer 模块。
语法
[ceph: root@host01 /]# ceph balancer on
[ceph: root@host01 /]# ceph balancer on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新集群上的
min_compact_client
。要使用在线优化,集群中必须指示对 Reef 或 later 客户端的支持。语法
ceph osd set-require-min-compat-client reef
ceph osd set-require-min-compat-client reef
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果任何 pre-Reef 客户端或守护进程连接到 monitor,则此命令会失败。要临时解决这个问题,请使用
--yes-i-really-mean-it
标志:语法
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can check what client versions are in use with: the ceph features command.
You can check what client versions are in use with: the ceph features command.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 语法
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将模式更改为
upmap-read
或read
for read balancing。默认模式是
upmap
,运行以下命令来启用这些模式:语法
ceph balancer mode upmap-read ceph balancer mode read
ceph balancer mode upmap-read ceph balancer mode read
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查均衡的当前状态。
语法
ceph balancer status
ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.2. 离线优化(技术预览) 复制链接链接已复制到粘贴板!
红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。如需了解更多详细信息,请参阅红帽技术预览功能的支持范围。
如果您有未平衡的主 OSD,您可以使用 osdmaptool
中内置的离线优化器来更新它们。
红帽建议在运行读取负载均衡器前运行容量负载均衡器以确保最佳结果。
按照流程中的步骤使用读取均衡集群:
先决条件
在开始前,请确保您有以下先决条件:
- 一个运行和容量均衡的 Red Hat Ceph Storage 集群。
在运行读取负载均衡器前,运行容量均衡每个 OSD 上的容量,以确保最佳结果。使用以下步骤平衡容量:
获取 osdmap 的最新副本。
[ceph: root@host01 /]# ceph osd getmap -o map
[ceph: root@host01 /]# ceph osd getmap -o map
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 upmap balancer。
[ceph: root@host01 /]# ospmaptool map –upmap out.txt
[ceph: root@host01 /]# ospmaptool map –upmap out.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 文件 out.txt 包含提议的解决方案。
此流程中的命令是运行用来对集群应用更改的常规 Ceph CLI 命令。
如果 out.txt 文件中有任何建议,请运行以下命令:
[ceph: root@host01 /]# source out.txt
[ceph: root@host01 /]# source out.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
检查每个池可用的
read_balance_score
:[ceph: root@host01 /]# ceph osd pool ls detail
[ceph: root@host01 /]# ceph osd pool ls detail
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
read_balance_score
超过 1,则您的池具有未平衡的主 OSD。对于同构集群,最佳分数为 [Ceil{(PG/Number of OSDs)}/(PG/Number of OSDs)]/[ ( PG/Number of OSD 的数量)/ (PG/Number of OSD 的数量)]。例如,如果您有一个具有 32 PG 和 10 个 OSD 的池(PG/Number of OSD 的数量) = 32/10 = 3.2。因此,如果所有设备都相同,则最佳分数是 3.2 的 iling 值除以 4/3.2 = 1.25 的 PG/Number of OSDs 的数量。如果您在同一系统中有 64 个 PG 的另一个池,则最佳分数为 7/6.4 =1.09375
输出示例:
ceph osd pool ls detail
$ ceph osd pool ls detail pool 1 '.mgr' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 1 pgp_num 1 autoscale_mode on last_change 17 flags hashpspool stripe_width 0 pg_num_max 32 pg_num_min 1 application mgr read_balance_score 3.00 pool 2 'cephfs.a.meta' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 16 pgp_num 16 autoscale_mode on last_change 55 lfor 0/0/25 flags hashpspool stripe_width 0 pg_autoscale_bias 4 pg_num_min 16 recovery_priority 5 application cephfs read_balance_score 1.50 pool 3 'cephfs.a.data' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode on last_change 27 lfor 0/0/25 flags hashpspool,bulk stripe_width 0 application cephfs read_balance_score 1.31
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取
osdmap
的最新副本:[ceph: root@host01 /]# ceph osd getmap -o om
[ceph: root@host01 /]# ceph osd getmap -o om
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
got osdmap epoch 56
got osdmap epoch 56
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 optimizer:
文件
out.txt
包含提议的解决方案。[ceph: root@host01 /]# osdmaptool om --read out.txt --read-pool _POOL_NAME_ [--vstart]
[ceph: root@host01 /]# osdmaptool om --read out.txt --read-pool _POOL_NAME_ [--vstart]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 文件
out.txt
包含提议的解决方案。此流程中的命令是运行的常规 Ceph CLI 命令,以便对集群应用更改。如果您在 vstart 集群中工作,您可以传递--
vstart
参数,以便使用./bin/ 前缀对 CLI 命令进行格式化。
[ceph: root@host01 /]# source out.txt
[ceph: root@host01 /]# source out.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您第一次运行
ceph osd pg-upmap-primary
命令,您可能会收到警告:Error EPERM: min_compat_client luminous < reef, which is required for pg-upmap-primary. Try 'ceph osd set-require-min-compat-client reef' before using the new interface
Error EPERM: min_compat_client luminous < reef, which is required for pg-upmap-primary. Try 'ceph osd set-require-min-compat-client reef' before using the new interface
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这种情况下,运行推荐的命令
ceph osd set-require-min-compat-client reef
并调整集群的 min-compact-client。
如果放置组(PG)数量被添加或从集群中删除任何 OSD,则请考虑重新检查分数并重新运行负载均衡器,因为这些操作会对池产生显著影响。
5.4.2.3. 监控的优化 复制链接链接已复制到粘贴板!
读取器也可以用于监管的优化。如果使用监管的优化,请使用 使用容量均衡 Red Hat Ceph 集群来平衡 Red Hat Ceph 集群的信息。将模式设置为 upmap-read
或 read
。
5.5. 使用 Ceph Manager 警报模块 复制链接链接已复制到粘贴板!
您可以使用 Ceph 管理器警报模块通过电子邮件发送关于 Red Hat Ceph Storage 集群健康状况的简单警报消息。
这个模块并不是一个可靠的监控解决方案。作为 Ceph 集群本身一部分运行的事实是,在 ceph-mgr
守护进程出现故障时,它完全限制会防止警报被发送。但是,对于没有监控架构的环境中存在的一个独立的集群非常有用。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- Ceph 监控节点的根级别访问权限.
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用警报模块:
示例
[ceph: root@host01 /]# ceph mgr module enable alerts
[ceph: root@host01 /]# ceph mgr module enable alerts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保启用了 alert 模块:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置简单邮件传输协议(SMTP):
语法
ceph config set mgr mgr/alerts/smtp_host SMTP_SERVER ceph config set mgr mgr/alerts/smtp_destination RECEIVER_EMAIL_ADDRESS ceph config set mgr mgr/alerts/smtp_sender SENDER_EMAIL_ADDRESS
ceph config set mgr mgr/alerts/smtp_host SMTP_SERVER ceph config set mgr mgr/alerts/smtp_destination RECEIVER_EMAIL_ADDRESS ceph config set mgr mgr/alerts/smtp_sender SENDER_EMAIL_ADDRESS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_host smtp.example.com [ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_destination example@example.com [ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_sender example2@example.com
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_host smtp.example.com [ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_destination example@example.com [ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_sender example2@example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 默认情况下,警报模块使用 SSL 和端口 465。
语法
ceph config set mgr mgr/alerts/smtp_port PORT_NUMBER
ceph config set mgr mgr/alerts/smtp_port PORT_NUMBER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_port 587
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_port 587
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在配置警报时不要设置
smtp_ssl
参数。向 SMTP 服务器进行身份验证:
语法
ceph config set mgr mgr/alerts/smtp_user USERNAME ceph config set mgr mgr/alerts/smtp_password PASSWORD
ceph config set mgr mgr/alerts/smtp_user USERNAME ceph config set mgr mgr/alerts/smtp_password PASSWORD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_user admin1234 [ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_password admin1234
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_user admin1234 [ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_password admin1234
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:默认情况下,SMTP
From
名称是Ceph
。要更改它,请设置smtp_from_name
参数:语法
ceph config set mgr mgr/alerts/smtp_from_name CLUSTER_NAME
ceph config set mgr mgr/alerts/smtp_from_name CLUSTER_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_from_name 'Ceph Cluster Test'
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/smtp_from_name 'Ceph Cluster Test'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:默认情况下,警报模块会每分钟检查存储集群的健康状况,并在集群健康状况有变化时发送消息。要更改频率,请设置
interval
参数:语法
ceph config set mgr mgr/alerts/interval INTERVAL
ceph config set mgr mgr/alerts/interval INTERVAL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/interval "5m"
[ceph: root@host01 /]# ceph config set mgr mgr/alerts/interval "5m"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,间隔设置为 5 分钟。
可选:立即发送警报:
示例
[ceph: root@host01 /]# ceph alerts send
[ceph: root@host01 /]# ceph alerts send
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.6. 使用 Ceph 管理器 crash 模块 复制链接链接已复制到粘贴板!
通过使用 Ceph 管理器 crash 模块,您可以收集有关守护进程 crashdumps 的信息,并将其存储在 Red Hat Ceph Storage 集群中,以便进一步分析。
默认情况下,守护进程崩溃转储在 /var/lib/ceph/crash
中转储。您可以使用选项 crash dir
进行配置。崩溃目录通过时间、日期和随机生成的 UUID 命名,其中包含元数据文件 meta
和最新的日志文件,其 crash_id
是相同的。
您可以使用 ceph-crash.service
自动提交这些崩溃,并在 Ceph 监控器中保留。ceph-crash.service
监视 crashdump
目录,并使用 ceph crash post
上传它们。
RECENT_CRASH heath 消息是 Ceph 集群中最常见的运行状况消息之一。此健康消息表示,一个或多个 Ceph 守护进程最近崩溃,且崩溃尚未存档或被管理员确认。这可能表示软件错误、硬件问题(如磁盘失败)或其它问题。选项 mgr/crash/warn_recent_interval
控制最近一次表示的时间周期,默认为两周。您可以运行以下命令来禁用警告:
示例
[ceph: root@host01 /]# ceph config set mgr/crash/warn_recent_interval 0
[ceph: root@host01 /]# ceph config set mgr/crash/warn_recent_interval 0
选项 mgr/crash/retain_interval
控制您要保留崩溃报告的周期,然后再自动清除崩溃报告。这个选项的默认值是一年。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
流程
确定启用了 crash 模块:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存崩溃转储:元数据文件是存储在 crash dir 中作为
meta
的 JSON blob。您可以调用 ceph 命令-i -
选项,该选项会从 stdin 读取。示例
[ceph: root@host01 /]# ceph crash post -i meta
[ceph: root@host01 /]# ceph crash post -i meta
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有新的以及归档的崩溃信息的时间戳或 UUID 崩溃 ID:
示例
[ceph: root@host01 /]# ceph crash ls
[ceph: root@host01 /]# ceph crash ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有新崩溃信息的时间戳或 UUID 崩溃 ID:
示例
[ceph: root@host01 /]# ceph crash ls-new
[ceph: root@host01 /]# ceph crash ls-new
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有新崩溃信息的时间戳或 UUID 崩溃 ID:
示例
[ceph: root@host01 /]# ceph crash ls-new
[ceph: root@host01 /]# ceph crash ls-new
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出按年龄分组的已保存崩溃信息的摘要:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看保存崩溃的详情:
语法
ceph crash info CRASH_ID
ceph crash info CRASH_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除比 KEEP days 旧的已保存的崩溃:其中 KEEP 必须是一个整数。
语法
ceph crash prune KEEP
ceph crash prune KEEP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph crash prune 60
[ceph: root@host01 /]# ceph crash prune 60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对崩溃报告进行归档,使其不再被视为
RECENT_CRASH
健康检查,且不会出现在crash ls-new
输出中。它会出现在crash ls
中。语法
ceph crash archive CRASH_ID
ceph crash archive CRASH_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph crash archive 2022-05-24T19:58:42.549073Z_b2382865-ea89-4be2-b46f-9a59af7b7a2d
[ceph: root@host01 /]# ceph crash archive 2022-05-24T19:58:42.549073Z_b2382865-ea89-4be2-b46f-9a59af7b7a2d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录所有崩溃报告:
示例
[ceph: root@host01 /]# ceph crash archive-all
[ceph: root@host01 /]# ceph crash archive-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除崩溃转储:
语法
ceph crash rm CRASH_ID
ceph crash rm CRASH_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph crash rm 2022-05-24T19:58:42.549073Z_b2382865-ea89-4be2-b46f-9a59af7b7a2d
[ceph: root@host01 /]# ceph crash rm 2022-05-24T19:58:42.549073Z_b2382865-ea89-4be2-b46f-9a59af7b7a2d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7. Telemetry 模块 复制链接链接已复制到粘贴板!
telemetry 模块发送有关存储集群的数据,以帮助了解 Ceph 的使用方式以及操作过程中遇到哪些问题。数据在公共仪表板上视觉化,以查看报告集群数量、其总容量和 OSD 计数以及版本分布趋势的摘要统计。
Channels
遥测报告分为不同的频道,每种频道都有不同类型的信息。启用遥测后,您可以打开或关闭单独的频道。
以下是四个不同的频道:
basic
- 默认在上
。此频道提供有关集群的基本信息,其中包括以下信息:- 集群的容量。
- 监视器、管理器、OSD、MDS、对象网关或其他守护进程的数量。
- 当前正在使用的软件版本。
- RADOS 池和 Ceph 文件系统的数量和类型。
- 从其默认值更改的配置选项的名称(而不是其值)。
crash
- 默认在上
。这个频道提供有关守护进程崩溃的信息,其中包括以下信息:- 守护进程的类型。
- 守护进程的版本。
- 操作系统、操作系统分发和内核版本。
- 堆栈追踪,用于标识崩溃发生 Ceph 代码中的位置。
-
device
- 默认在上
。此频道提供有关设备指标的信息,其中包括匿名 SMART 指标。 -
Ident
- 默认是off
。此频道为用户提供有关集群的标识信息,如集群描述和联系电子邮件地址。 perf
- 默认是off
。此频道提供集群的各种性能指标,可用于以下内容:- 显示集群的整体健康状况。
- 识别工作负载模式。
- 对延迟、节流、内存管理和其他类似问题相关的问题进行故障排除。
- 通过守护进程监控集群性能。
报告的数据不包含任何敏感数据,如池名称、对象名称、对象内容、主机名或设备序列号。
它包含关于如何部署集群、Ceph 版本、主机分发和其他参数的计数器和统计信息,它们可帮助项目更好地理解 Ceph 的使用方式。
数据是安全的,发送到 https://telemetry.ceph.com。
启用遥测(telemetry)
在启用频道前,请确保遥测位于 上
。
启用遥测:
ceph telemetry on
ceph telemetry on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启用和禁用频道
启用或禁用单个频道:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用或禁用多个频道:
ceph telemetry enable channel basic crash device ident perf ceph telemetry disable channel basic crash device ident perf
ceph telemetry enable channel basic crash device ident perf ceph telemetry disable channel basic crash device ident perf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用或禁用所有频道:
ceph telemetry enable channel all ceph telemetry disable channel all
ceph telemetry enable channel all ceph telemetry disable channel all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
报告示例
要随时查看报告的数据,请生成示例报告:
ceph telemetry show
ceph telemetry show
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果遥测
关闭
,请预览示例报告:ceph telemetry preview
ceph telemetry preview
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为具有数百个 OSD 或更多的存储集群生成示例报告需要更长的时间。
为了保护您的隐私,需要单独生成设备报告,主机名和设备序列号等数据会被匿名处理。设备遥测发送到不同的端点,不会将设备数据与特定集群关联。要查看设备报告,请运行以下命令:
ceph telemetry show-device
ceph telemetry show-device
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果遥测
关闭
,请预览示例设备报告:ceph telemetry preview-device
ceph telemetry preview-device
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 上获取两个带有遥测的报告的单一输出:
ceph telemetry show-all
ceph telemetry show-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取与遥测
关闭
的报告的单一输出:ceph telemetry preview-all
ceph telemetry preview-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按频道生成示例报告:
语法
ceph telemetry show CHANNEL_NAME
ceph telemetry show CHANNEL_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按频道生成示例报告的预览:
语法
ceph telemetry preview CHANNEL_NAME
ceph telemetry preview CHANNEL_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
集合
集合是在频道中收集的数据的不同方面。
列出集合:
ceph telemetry collection ls
ceph telemetry collection ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看您注册的集合和新的可用集合之间的区别:
ceph telemetry diff
ceph telemetry diff
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注册最新集合:
语法
ceph telemetry on ceph telemetry enable channel CHANNEL_NAME
ceph telemetry on ceph telemetry enable channel CHANNEL_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Interval(间隔)
默认情况下,模块每 24 小时编译并发送一个新的报告。
调整间隔:
语法
ceph config set mgr mgr/telemetry/interval INTERVAL
ceph config set mgr mgr/telemetry/interval INTERVAL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/interval 72
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/interval 72
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在示例中,报告每三天(72 小时)生成。
Status
查看当前的配置:
ceph telemetry status
ceph telemetry status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手动发送遥测
临时发送遥测数据:
ceph telemetry send
ceph telemetry send
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果禁用了遥测,请将-
license share-1-0
添加到ceph telemetry send
命令。
通过代理发送遥测
如果集群无法直接连接到配置的 telemetry 端点,您可以配置 HTTP/HTTPs 代理服务器:
语法
ceph config set mgr mgr/telemetry/proxy PROXY_URL
ceph config set mgr mgr/telemetry/proxy PROXY_URL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/proxy https://10.0.0.1:8080
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/proxy https://10.0.0.1:8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以在命令中包含用户 pass :
Example
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/proxy https://10.0.0.1:8080
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/proxy https://10.0.0.1:8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
联系和描述
可选:在报告中添加联系人和描述:
语法
ceph config set mgr mgr/telemetry/contact '_CONTACT_NAME_' ceph config set mgr mgr/telemetry/description '_DESCRIPTION_' ceph config set mgr mgr/telemetry/channel_ident true
ceph config set mgr mgr/telemetry/contact '_CONTACT_NAME_' ceph config set mgr mgr/telemetry/description '_DESCRIPTION_' ceph config set mgr mgr/telemetry/channel_ident true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/contact 'John Doe <john.doe@example.com>' [ceph: root@host01 /]# ceph config set mgr mgr/telemetry/description 'My first Ceph cluster' [ceph: root@host01 /]# ceph config set mgr mgr/telemetry/channel_ident true
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/contact 'John Doe <john.doe@example.com>' [ceph: root@host01 /]# ceph config set mgr mgr/telemetry/description 'My first Ceph cluster' [ceph: root@host01 /]# ceph config set mgr mgr/telemetry/channel_ident true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了
ident
标志,则领导板中不会显示其详情。
Leaderboard
参与公共仪表板的领导板:
Example
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/leaderboard true
[ceph: root@host01 /]# ceph config set mgr mgr/telemetry/leaderboard true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 领导板显示有关存储集群的基本信息。此板包括存储容量和 OSD 数量。
禁用遥测(telemetry)
随时禁用遥测:
Example
ceph telemetry off
ceph telemetry off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 使用 Ceph Orchestrator 管理 OSD 复制链接链接已复制到粘贴板!
作为存储管理员,您可以使用 Ceph 编排器管理 Red Hat Ceph Storage 集群的 OSD。
6.1. Ceph OSD 复制链接链接已复制到粘贴板!
当 Red Hat Ceph Storage 集群启动并运行时,您可以在运行时将 OSD 添加到存储集群中。
Ceph OSD 通常由一个存储驱动器和一个 ceph-osd
守护进程和一个节点中的相关日志组成。如果节点有多个存储驱动器,则为每个驱动器映射一个 ceph-osd
守护进程。
红帽建议定期检查集群的容量,以查看它是否达到其存储容量的上限。当存储集群达到其 近满(near full)
比率时,添加一个或多个 OSD 来扩展存储集群的容量。
当您要缩小 Red Hat Ceph Storage 集群大小或替换硬件时,您还可以在运行时移除 OSD。如果节点有多个存储驱动器,您可能还需要为该驱动器删除其中一个 ceph-osd
守护进程。通常,最好检查存储集群的容量,以查看您是否达到其容量的上限。在删除 OSD 后,确保存储集群没有达到接近全满
比率。
在添加 OSD 前,不要让存储集群达到全满
比率。在存储集群达到接近满
比率后发生 OSD 故障可能会导致存储集群超过全满
比率。Ceph 会阻止写入访问来保护数据,直到您解决存储容量问题。在删除 OSD 前,需要仔细考虑它对 full
比率的影响。
6.2. Ceph OSD 节点配置 复制链接链接已复制到粘贴板!
配置 Ceph OSD 及其支持硬件,类似于使用 OSD 的池的存储策略。Ceph 优先选择跨池的统一硬件,实现一致的性能配置集。为了获得最佳性能,请考虑使用相同类型或大小的驱动器的 CRUSH 层次结构。
如果您添加 dissimilar 大小的驱动器,请相应地调整它们的权重。将 OSD 添加到 CRUSH map 时,请考虑新 OSD 的权重。硬盘容量每年增长约 40%,因此较新的 OSD 节点可能比存储集群中的旧节点大得多,也就是说,它们可能会有更大的权重。
在进行新安装之前,请参阅 安装指南中的安装 Red Hat Ceph Storage 的要求 一章。
6.3. 自动调优 OSD 内存 复制链接链接已复制到粘贴板!
OSD 守护进程根据 osd_memory_target
配置选项调整内存消耗。选项 osd_memory_target
根据系统中可用的 RAM 来设置 OSD 内存。
如果 Red Hat Ceph Storage 部署在不与其他服务共享内存的专用节点上,cephadm
会自动根据 RAM 总量和部署的 OSD 数量自动调整每个 OSD 消耗。
默认情况下,Red Hat Ceph Storage 集群中的 osd_memory_target_autotune
参数设置为 true
。
语法
ceph config set osd osd_memory_target_autotune true
ceph config set osd osd_memory_target_autotune true
Cephadm 以一个 mgr/cephadm/autotune_memory_target_ratio
分数开头,默认为系统总 RAM 的 0.7
,这会减小非自动tuned守护进程(如 non-OSDS)以及 osd_memory_target_autotune
为 false 的 OSD,然后划分剩余的 OSD。
osd_memory_target
参数计算如下:
语法
osd_memory_target = TOTAL_RAM_OF_THE_OSD * (1048576) * (autotune_memory_target_ratio) / NUMBER_OF_OSDS_IN_THE_OSD_NODE - (SPACE_ALLOCATED_FOR_OTHER_DAEMONS)
osd_memory_target = TOTAL_RAM_OF_THE_OSD * (1048576) * (autotune_memory_target_ratio) / NUMBER_OF_OSDS_IN_THE_OSD_NODE - (SPACE_ALLOCATED_FOR_OTHER_DAEMONS)
SPACE_ALLOCATED_FOR_OTHER_DAEMONS 可能包括以下守护进程空间分配:
- Alertmanager: 1 GB
- Grafana: 1 GB
- Ceph Manager:4 GB
- Ceph Monitor: 2 GB
- Node-exporter: 1 GB
- Prometheus: 1 GB
例如,如果节点有 24 个 OSD 且具有 251 GB RAM 空间,则 osd_memory_target
为 7860684936
。
最终目标反映在带有选项的配置数据库中。您可以从 ceph orch ps
输出的 MEM LIMIT
列下查看各个守护进程使用的限值和当前内存。
osd_memory_target_autotune
true
的默认设置不适用于计算和 Ceph 存储服务在一起的超融合基础架构。在超融合基础架构中,autotune_memory_target_ratio
可以设置为 0.2
,以减少 Ceph 的内存消耗。
示例
[ceph: root@host01 /]# ceph config set mgr mgr/cephadm/autotune_memory_target_ratio 0.2
[ceph: root@host01 /]# ceph config set mgr mgr/cephadm/autotune_memory_target_ratio 0.2
您可以为存储集群中的 OSD 手动设置特定内存目标。
示例
[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target 7860684936
[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target 7860684936
您可以为存储集群中的 OSD 主机手动设置特定内存目标。
语法
ceph config set osd/host:HOSTNAME osd_memory_target TARGET_BYTES
ceph config set osd/host:HOSTNAME osd_memory_target TARGET_BYTES
示例
[ceph: root@host01 /]# ceph config set osd/host:host01 osd_memory_target 1000000000
[ceph: root@host01 /]# ceph config set osd/host:host01 osd_memory_target 1000000000
启用 osd_memory_target_autotune
覆盖现有的手动 OSD 内存目标设置。要防止守护进程内存被调整(即使启用了 osd_memory_target_autotune
选项或启用了其他类似的选项),在主机上设置 _no_autotune_memory
标签。
语法
ceph orch host label add HOSTNAME _no_autotune_memory
ceph orch host label add HOSTNAME _no_autotune_memory
您可以通过禁用 autotune 选项并设置特定内存目标,从内存自动调整 OSD 中排除。
示例
[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target_autotune false [ceph: root@host01 /]# ceph config set osd.123 osd_memory_target 16G
[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target_autotune false
[ceph: root@host01 /]# ceph config set osd.123 osd_memory_target 16G
6.4. 列出 Ceph OSD 部署的设备 复制链接链接已复制到粘贴板!
在使用 Ceph 编排器部署 OSD 之前,您可以检查可用设备列表。命令用于显示可由 Cephadm 发现的设备列表。如果满足以下条件,则存储设备被视为可用:
- 该设备不能有分区。
- 该设备不能有任何 LVM 状态。
- 不得挂载该设备。
- 该设备不得包含文件系统。
- 该设备不得包含 Ceph BlueStore OSD。
- 该设备必须大于 5 GB。
Ceph 不会在不可用的设备上调配 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 所有管理器和监控守护进程都已部署。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的设备来部署 OSD:
语法
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--wide
选项提供与该设备相关的所有详细信息,包括设备可能有资格用作 OSD 的原因。这个选项不支持 NVMe 设备。可选: 要在
ceph orch device ls
输出中启用 Health、Ident 和 Failure 字段,请运行以下命令:注意libstoragemgmt
库支持这些字段,当前支持 SCSI、SAS 和 SATA 设备。在 Cephadm shell 外部以 root 用户身份,检查硬件与
libstoragemgmt
库的兼容性,以避免出现意外中断服务:示例
cephadm shell lsmcli ldl
[root@host01 ~]# cephadm shell lsmcli ldl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在输出中,您会看到 Health Status 为 Good,对应于 SCSI VPD 0x83 ID。
注意如果没有获取这些信息,启用字段可能会导致设备错误行为。
重新登录 Cephadm shell 并启用
libstoragemgmt
支持:示例
cephadm shell
[root@host01 ~]# cephadm shell [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/device_enhanced_scan true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用之后,
ceph orch device ls
会将 Health 字段的输出设置为 Good。
验证
列出设备:
示例
[ceph: root@host01 /]# ceph orch device ls
[ceph: root@host01 /]# ceph orch device ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5. 为 Ceph OSD 部署的 Zapping 设备 复制链接链接已复制到粘贴板!
在部署 OSD 之前,您需要检查可用设备的列表。如果设备中没有可用空间,可以通过 zapping 来清除设备中的数据。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 所有管理器和监控守护进程都已部署。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的设备来部署 OSD:
语法
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 清除设备数据:
语法
ceph orch device zap HOSTNAME FILE_PATH --force
ceph orch device zap HOSTNAME FILE_PATH --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch device zap host02 /dev/sdb --force
[ceph: root@host01 /]# ceph orch device zap host02 /dev/sdb --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证该设备中的空间可用:
示例
[ceph: root@host01 /]# ceph orch device ls
[ceph: root@host01 /]# ceph orch device ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您将看到 Available 下的字段是 Yes。
6.6. 在所有可用设备上部署 Ceph OSD 复制链接链接已复制到粘贴板!
您可以在所有可用设备上部署所有 OSD。Cephadm 允许 Ceph 编排器在任何可用和未使用的存储设备上发现和部署 OSD。
若要部署 OSD 所有可用设备,可在不使用 unmanaged
参数的情况下运行 命令,然后使用 参数重新运行该命令,以防止创建将来的 OSD。
使用 --all-available-devices
部署 OSD 通常用于较小的集群。对于较大的集群,请使用 OSD 规格文件。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 所有管理器和监控守护进程都已部署。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的设备来部署 OSD:
语法
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在所有可用设备上部署 OSD:
示例
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph orch apply
的效果具有持久性,这意味着 Orchestrator 会自动找到该设备,将它添加到集群中,并创建新的 OSD。这在出现以下条件时发生:- 在系统中添加了新的磁盘或驱动器。
- 现有磁盘或驱动器是 zapped。
OSD 被删除,设备为 zapped。
您可以使用
--unmanaged
参数,禁用在所有可用设备上自动创建 OSD。示例
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices --unmanaged=true
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices --unmanaged=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将参数
--unmanaged
设置为true
可禁用创建 OSD,如果您应用新的 OSD 服务,也没有更改。注意命令
ceph orch daemon add
会创建新的 OSD,但不添加 OSD 服务。
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看节点和设备的详情:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7. 在特定的设备和主机上部署 Ceph OSD 复制链接链接已复制到粘贴板!
您可以使用 Ceph 编排器将所有 Ceph OSD 部署到特定的设备和主机上。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 所有管理器和监控守护进程都已部署。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的设备来部署 OSD:
语法
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
ceph orch device ls [--hostname=HOSTNAME_1 HOSTNAME_2] [--wide] [--refresh]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
[ceph: root@host01 /]# ceph orch device ls --wide --refresh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在特定的设备和主机上部署 OSD:
语法
ceph orch daemon add osd HOSTNAME:DEVICE_PATH
ceph orch daemon add osd HOSTNAME:DEVICE_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch daemon add osd host02:/dev/sdb
[ceph: root@host01 /]# ceph orch daemon add osd host02:/dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在没有 LVM 层的原始物理设备上部署 ODS,请使用--
method raw
选项。语法
ceph orch daemon add osd --method raw HOSTNAME:DEVICE_PATH
ceph orch daemon add osd --method raw HOSTNAME:DEVICE_PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch daemon add osd --method raw host02:/dev/sdb
[ceph: root@host01 /]# ceph orch daemon add osd --method raw host02:/dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您有单独的 DB 或 WAL 设备,则块与 DB 或 WAL 设备的比例必须为 1:1。
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls osd
[ceph: root@host01 /]# ceph orch ls osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看节点和设备的详情:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --service_name=SERVICE_NAME
ceph orch ps --service_name=SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --service_name=osd
[ceph: root@host01 /]# ceph orch ps --service_name=osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.8. 用于部署 OSD 的高级服务规格和过滤器 复制链接链接已复制到粘贴板!
服务规格的 OSD 是利用磁盘属性描述集群布局的方法。它为用户提供了一种抽象的方式,告知 Ceph 哪个磁盘应该切换到带有所需配置的 OSD,而不必了解具体的设备名称和路径。对于每个设备和每个主机,定义一个 yaml
文件或 json
文件。
OSD 规格的常规设置
- service_type: 'osd': 对于创建 OSDS 是必须的
- service_id :使用您首选的服务名称或标识。一组 OSD 使用规格文件创建。此名称用于管理所有 OSD,并且代表一个 Orchestrator 服务。
placement :用于定义需要在其上部署 OSD 的主机。
您可以在以下选项中使用:
- host_pattern: '*' - 用于选择主机的主机名称模式。
- label: 'osd_host' - 需要部署 OSD 的主机中使用的标签。
- hosts: 'host01', 'host02' - 需要部署 OSD 的显式主机名列表。
selection of devices :创建 OSD 的设备。这样,我们可以将 OSD 与不同的设备分隔开。您只能创建具有三个组件的 BlueStore OSD:
- OSD 数据:包含所有 OSD 数据
- WAL: BlueStore 内部日志或 write-ahead 日志
- DB: BlueStore 内部元数据
- data_devices :定义要部署 OSD 的设备。在本例中,OSD 在并置的架构中创建。您可以使用过滤器来选择设备和文件夹。
- wal_devices :定义用于 WAL OSD 的设备。您可以使用过滤器来选择设备和文件夹。
- db_devices :定义 DB OSD 的设备。您可以使用过滤器来选择设备和文件夹。
-
encrypted :一个可选参数加密 OSD 的信息,它可以设置为
True
或False
- unmanaged: 可选参数,默认设置为 False。如果您不希望 Orchestrator 来管理 OSD 服务,您可以将其设置为 True。
- block_wal_size :用户定义的值,以字节为单位。
- block_db_size :用户定义的值,以字节为单位。
- osds_per_device :用于为每个设备部署多个 OSD 的用户定义的值。
-
方法 :一个可选参数,用于指定是否使用 LVM 层创建 OSD。如果要在不包含 LVM 层的原始物理设备中创建 OSD,设置为
raw
。如果您有单独的 DB 或 WAL 设备,则块与 DB 或 WAL 设备的比例必须为 1:1。
指定设备的过滤器
过滤器与 data_devices
、wal_devices
和 db_devices
参数一同使用。
过滤器的名称 | 描述 | 语法 | 示例 |
model |
目标特定磁盘。您可以通过运行 | Model: DISK_MODEL_NAME | Model: MC-55-44-XZ |
Vendor | 目标特定磁盘 | Vendor: DISK_VENDOR_NAME | Vendor: Vendor C |
大小规格 | 包括精确大小的磁盘 | size: EXACT | 大小: '10G' |
大小规格 | 包括位于范围内的磁盘大小 | size: LOW:HIGH | 大小: '10G:40G' |
大小规格 | 包括小于或等于 size 的磁盘 | size: :HIGH | 大小: ':10G' |
大小规格 | 包括等于或大于 size 的磁盘 | 大小: LOW: | 大小: '40G:' |
Rotational | 磁盘轮转属性。1 与轮转的所有磁盘匹配,0 匹配所有非轮转磁盘。如果 rotational =0,则 OSD 配置有 SSD 或 NVME。如果 rotational=1,则使用 HDD 配置 OSD。 | rotational: 0 或 1 | rotational: 0 |
All | 考虑所有可用磁盘 | All: true | All: true |
Limiter | 当您指定了有效的过滤器,但希望限制您可以使用 'limit' 指令的匹配磁盘量。它应仅作为最后的手段使用。 | limit: NUMBER | 限制:2 |
要创建在同一主机上带有非并置组件的 OSD,您必须指定使用的不同设备类型,设备应位于同一主机上。
用于部署 OSD 的设备必须被 libstoragemgmt
支持。
6.9. 使用高级服务规格部署 Ceph OSD 复制链接链接已复制到粘贴板!
类型 OSD 的服务规格是利用磁盘属性描述集群布局的方法。它为用户提供了一种抽象的方式,告知 Ceph 哪个磁盘应该切换到带有所需配置的 OSD,而不必了解具体的设备名称和路径。
您可以通过定义 yaml
文件或 json
文件,为每个设备和每个主机部署 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 所有管理器和监控守护进程都已部署。
流程
在 monitor 节点上,创建
osd_spec.yaml
文件:示例
touch osd_spec.yaml
[root@host01 ~]# touch osd_spec.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
osd_spec.yaml
文件,使其包含以下详情:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 简单情况:在这些情况下,所有节点都具有相同的设置。
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 简单情况:在这种情况下,所有节点都与在原始模式下创建的 OSD 设备具有相同的设置,而无需 LVM 层。
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 高级情景:这会将所有 HDD 用作
data_devices
,并将两个 SSD 分配为专用 DB 或 WAL 设备来创建所需的布局。剩余的 SSD 是将 NVMEs 供应商分配给专用 DB 或 WAL 设备的data_devices
。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 非统一节点的高级场景:这会根据 host_pattern 键将不同的 OSD specs 应用到不同的主机。
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用专用 WAL 和 DB 设备的高级场景:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 每个设备具有多个 OSD 的高级场景:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于预先创建的卷,请编辑
osd_spec.yaml
文件,使其包含以下详情:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于带有 ID 的 OSD,编辑
osd_spec.yaml
文件,使其包含以下详情:注意此配置适用于 Red Hat Ceph Storage 5.3z1 及更新的版本。对于早期版本,请使用预先创建的 lvm。
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 OSD 通过路径,编辑
osd_spec.yaml
文件,使其包含以下详情:注意此配置适用于 Red Hat Ceph Storage 5.3z1 及更新的版本。对于早期版本,请使用预先创建的 lvm。
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将 YAML 文件挂载到容器中的一个目录下:
示例
cephadm shell --mount osd_spec.yaml:/var/lib/ceph/osd/osd_spec.yaml
[root@host01 ~]# cephadm shell --mount osd_spec.yaml:/var/lib/ceph/osd/osd_spec.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/osd/
[ceph: root@host01 /]# cd /var/lib/ceph/osd/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署 OSD 之前,请执行空运行:
注意此步骤提供部署预览,无需部署守护进程。
示例
[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml --dry-run
[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml --dry-run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用服务规格部署 OSD:
语法
ceph orch apply -i FILE_NAME.yml
ceph orch apply -i FILE_NAME.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml
[ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls osd
[ceph: root@host01 /]# ceph orch ls osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看节点和设备的详情:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10. 使用 Ceph Orchestrator 删除 OSD 守护进程 复制链接链接已复制到粘贴板!
您可以使用 Cephadm 从集群中移除该 OSD。
从集群中移除 OSD 涉及两个步骤:
- 从集群中撤离所有放置组(PG)。
- 从集群中移除 PG-free OSD。
the- zap
选项删除了卷组、逻辑卷和 LVM 元数据。
在移除 OSD 后,如果 OSD 再次可用,则 cephadm
可能会自动尝试在这些驱动器上部署更多 OSD (如果它们与现有的 drivegroup 规格匹配)。如果您部署了使用 spec 移除的 OSD,并且不想在移除后部署驱动器中的任何新 OSD,请在移除前修改 drivegroup 规格。在部署 OSD 时,如果您已使用了 -all-available-devices
选项,请设置 unmanaged: true
以停止它,以完全获取新的驱动器。对于其他部署,修改规格。如需了解更多详细信息 ,请参阅使用高级服务规格部署 Ceph OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- Ceph Monitor、Ceph Manager 和 Ceph OSD 守护进程部署在存储集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查必须移除 OSD 的设备和节点:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 OSD:
语法
ceph orch osd rm OSD_ID [--replace] [--force] --zap
ceph orch osd rm OSD_ID [--replace] [--force] --zap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch osd rm 0 --zap
[ceph: root@host01 /]# ceph orch osd rm 0 --zap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您在没有选项的情况下从存储集群中移除 OSD,如
替换
,则该设备会从存储集群中完全删除。如果要使用同一设备来部署 OSD,则必须在将其添加到存储集群前首先断开该设备。可选: 要从特定节点中删除多个 OSD,请运行以下命令:
语法
ceph orch osd rm OSD_ID OSD_ID --zap
ceph orch osd rm OSD_ID OSD_ID --zap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch osd rm 2 5 --zap
[ceph: root@host01 /]# ceph orch osd rm 2 5 --zap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查移除 OSD 的状态:
示例
[ceph: root@host01 /]# ceph orch osd rm status OSD HOST STATE PGS REPLACE FORCE ZAP DRAIN STARTED AT 9 host01 done, waiting for purge 0 False False True 2023-06-06 17:50:50.525690 10 host03 done, waiting for purge 0 False False True 2023-06-06 17:49:38.731533 11 host02 done, waiting for purge 0 False False True 2023-06-06 17:48:36.641105
[ceph: root@host01 /]# ceph orch osd rm status OSD HOST STATE PGS REPLACE FORCE ZAP DRAIN STARTED AT 9 host01 done, waiting for purge 0 False False True 2023-06-06 17:50:50.525690 10 host03 done, waiting for purge 0 False False True 2023-06-06 17:49:38.731533 11 host02 done, waiting for purge 0 False False True 2023-06-06 17:48:36.641105
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 OSD 上没有剩余的 PG 时,它会被停用并从集群中移除。
验证
验证设备的详细信息以及 Ceph OSD 已从中删除的节点:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11. 使用 Ceph Orchestrator 替换 OSD 复制链接链接已复制到粘贴板!
当磁盘出现故障时,您可以替换物理存储设备并重复使用相同的 OSD ID,以避免重新配置 CRUSH map。
您可以使用 --replace
选项替换集群中的 OSD。
如果要替换单个 OSD,请参阅 在特定设备和主机上部署 Ceph OSD。如果要在所有可用设备上部署 OSD,请参阅 在所有可用设备上部署 Ceph OSD。
此选项使用 ceph orch rm
命令保留 OSD ID。OSD 不会从 CRUSH 层次结构中永久移除,而是分配有 destroyed
标志。此标志用于确定可在下一个 OSD 部署中重复使用的 OSD ID。destroyed
标记用于决定在下一个 OSD 部署中重复使用哪些 OSD ID。
与 rm
命令类似,替换集群中的 OSD 涉及两个步骤:
- 从集群中删除所有放置组(PG)。
- 从集群中移除 PG-free OSD。
如果将 OSD 规格用于部署,则新添加的磁盘将被分配其所替换的对应 OSD ID。
删除 OSD 后,如果 OSD 再次可用,则 cephadm
可能会自动尝试在这些驱动器上部署更多 OSD (如果它们与现有的 drivegroup 规格匹配)。如果您部署了使用 spec 移除的 OSD,并且不想在移除后部署驱动器中的任何新 OSD,请在移除前修改 drivegroup 规格。在部署 OSD 时,如果您已使用了 -all-available-devices
选项,请设置 unmanaged: true
以停止它,以完全获取新的驱动器。对于其他部署,修改规格。如需了解更多详细信息 ,请参阅使用高级服务规格部署 Ceph OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 监控、管理器和 OSD 守护进程部署在存储集群中。
- 替换移除的 OSD 的新 OSD 必须在移除 OSD 的同一主机上创建。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保转储并保存 OSD 配置的映射以备将来参考:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查必须替换 OSD 的设备和节点:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换 OSD:
重要如果存储集群具有
health_warn
或与之关联的其他错误,请在替换 OSD 前检查并尝试修复任何错误,以避免数据丢失。语法
ceph orch osd rm OSD_ID --replace [--force]
ceph orch osd rm OSD_ID --replace [--force]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当存储集群持续操作时,可以使用--force
选项。示例
[ceph: root@host01 /]# ceph orch osd rm 0 --replace
[ceph: root@host01 /]# ceph orch osd rm 0 --replace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 OSD 替换的状态:
示例
[ceph: root@host01 /]# ceph orch osd rm status
[ceph: root@host01 /]# ceph orch osd rm status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止编配器以应用任何现有 OSD 规格:
示例
[ceph: root@node /]# ceph orch pause [ceph: root@node /]# ceph orch status Backend: cephadm Available: Yes Paused: Yes
[ceph: root@node /]# ceph orch pause [ceph: root@node /]# ceph orch status Backend: cephadm Available: Yes Paused: Yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow zap 已删除的 OSD 设备:
示例
[ceph: root@node /]# ceph orch device zap node.example.com /dev/sdi --force zap successful for /dev/sdi on node.example.com [ceph: root@node /]# ceph orch device zap node.example.com /dev/sdf --force zap successful for /dev/sdf on node.example.com
[ceph: root@node /]# ceph orch device zap node.example.com /dev/sdi --force zap successful for /dev/sdi on node.example.com [ceph: root@node /]# ceph orch device zap node.example.com /dev/sdf --force zap successful for /dev/sdf on node.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从暂停模式恢复 Orcestrator
示例
[ceph: root@node /]# ceph orch resume
[ceph: root@node /]# ceph orch resume
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 OSD 替换的状态:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证设备的详细信息以及 Ceph OSD 所取代的节点:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以看到一个 OSD,其 ID 与同一主机上运行的虚拟机相同。
验证新部署的 OSD 的
db_device
是 db_device 取代的db_device
:示例
[ceph: root@host01 /]# ceph osd metadata 0 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1", [ceph: root@host01 /]# ceph osd metadata 1 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1",
[ceph: root@host01 /]# ceph osd metadata 0 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1", [ceph: root@host01 /]# ceph osd metadata 1 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1",
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12. 使用预先创建的 LVM 替换 OSD 复制链接链接已复制到粘贴板!
使用 ceph-volume lvm zap
命令清除 OSD 后,如果目录不存在,您可以将 OSD 替换为 OSd 服务规格文件,将 OSD 替换为预先创建的 LVM。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- OSD 失败
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 OSD:
语法
ceph orch osd rm OSD_ID [--replace]
ceph orch osd rm OSD_ID [--replace]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch osd rm 8 --replace Scheduled OSD(s) for removal
[ceph: root@host01 /]# ceph orch osd rm 8 --replace Scheduled OSD(s) for removal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 OSD 是否已销毁:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
ceph-volume
命令 zap 并删除 OSD:语法
ceph-volume lvm zap --osd-id OSD_ID
ceph-volume lvm zap --osd-id OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 OSD 拓扑:
示例
[ceph: root@host01 /]# ceph-volume lvm list
[ceph: root@host01 /]# ceph-volume lvm list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用与该特定 OSD 拓扑对应的规格文件重新创建 OSD:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用更新的规格文件:
示例
[ceph: root@host01 /]# ceph orch apply -i osd.yml Scheduled osd.osd_service update...
[ceph: root@host01 /]# ceph orch apply -i osd.yml Scheduled osd.osd_service update...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 OSD 是否返回:
示例
[ceph: root@host01 /]# ceph -s [ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph -s [ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.13. 在非并置场景中替换 OSD 复制链接链接已复制到粘贴板!
当 OSD 在非并置场景中失败时,您可以替换 WAL/DB 设备。DB 和 WAL 设备的步骤相同。您需要为 DB 设备编辑 db_devices
下的 paths
, 为 WAL 设备 编辑 wal_devices
下的 paths
。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 守护进程不是并置。
- OSD 失败
流程
识别集群中的设备:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别 OSD 及其 DB 设备:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
osds.yaml
文件中,将unmanaged
参数设置为true
,否则cephadm
会重新部署 OSD:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用更新的规格文件:
示例
[ceph: root@host01 /]# ceph orch apply -i osds.yml Scheduled osd.non-colocated update...
[ceph: root@host01 /]# ceph orch apply -i osds.yml Scheduled osd.non-colocated update...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查状态:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 移除 OSD。确保使用--
zap
选项删除 hte backend 服务和 the-replace
选项来保留 OSD ID:示例
[ceph: root@host01 /]# ceph orch osd rm 2 5 --zap --replace Scheduled OSD(s) for removal
[ceph: root@host01 /]# ceph orch osd rm 2 5 --zap --replace Scheduled OSD(s) for removal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查状态:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
osds.yaml
规格文件,将unmanaged
参数更改为false
,并在设备物理替换后替换 DB 设备的路径:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上例中,
/dev/sdh
被/dev/sde
替换。重要如果您使用同一主机规格文件替换单个 OSD 节点上出现故障的 DB 设备,请修改
host_pattern
选项来指定 OSD 节点,否则部署会失败,且无法在其他主机上找到新的 DB 设备。使用
--dry-run
选项重新应用规格文件,以确保使用新的 DB 设备部署 OSD:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用规格文件:
示例
[ceph: root@host01 /]# ceph orch apply -i osds.yml Scheduled osd.non-colocated update...
[ceph: root@host01 /]# ceph orch apply -i osds.yml Scheduled osd.non-colocated update...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 OSD 是否已重新部署:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
从重新部署 OSD 的 OSD 主机上,验证它们是否在新的 DB 设备上:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14. 使用 Ceph 编排器停止移除 OSD 复制链接链接已复制到粘贴板!
您可以停止仅删除排队以进行移除的 OSD。这会重置 OSD 的初始状态,并将它移除队列关闭。
如果 OSD 处于移除过程中,则无法停止该进程。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 在集群中部署 monitor、Manager 和 OSD 守护进程。
- 移除启动 OSD 进程。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查要移除 OSD 的设备和节点:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止删除已排队的 OSD:
语法
ceph orch osd rm stop OSD_ID
ceph orch osd rm stop OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch osd rm stop 0
[ceph: root@host01 /]# ceph orch osd rm stop 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查移除 OSD 的状态:
示例
[ceph: root@host01 /]# ceph orch osd rm status
[ceph: root@host01 /]# ceph orch osd rm status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证已排队 Ceph OSD 以进行移除的设备和节点的详细信息:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.15. 使用 Ceph Orchestrator 激活 OSD 复制链接链接已复制到粘贴板!
在重新安装主机的操作系统时,您可以激活集群中的 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 监控、管理器和 OSD 守护进程部署在存储集群中。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新安装主机操作系统后,激活 OSD:
语法
ceph cephadm osd activate HOSTNAME
ceph cephadm osd activate HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph cephadm osd activate host03
[ceph: root@host01 /]# ceph cephadm osd activate host03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --service_name=SERVICE_NAME
ceph orch ps --service_name=SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --service_name=osd
[ceph: root@host01 /]# ceph orch ps --service_name=osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.16. 观察数据迁移 复制链接链接已复制到粘贴板!
将 OSD 添加到 CRUSH map 时,Ceph 开始通过将放置组迁移到新的或现有的 OSD 来重新平衡数据。您可以使用 ceph-w
命令观察数据迁移。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 最近添加或删除 OSD。
流程
观察数据迁移:
示例
[ceph: root@host01 /]# ceph -w
[ceph: root@host01 /]# ceph -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在迁移完成后,观察放置组状态从
active+clean
变为active, some degraded objects
,最终变为active+clean
。 -
要退出,请按
Ctrl + C
。
6.17. 重新计算放置组 复制链接链接已复制到粘贴板!
放置组(PG)定义将任何池数据分散到可用的 OSD 中。放置组基于要使用的给定冗余算法构建。对于三向复制,抗压定义冗余来使用 3 个不同的 OSD。对于纠删代码池,要使用的 OSD 数量由块数目定义。
在定义池数量时,放置组的数量定义了粒度的评分,数据会分散到所有可用的 OSD 中。容量负载相等的数量越高。但是,由于处理放置组在重组数据时也很重要,因此当重新构建数据时,这个数字非常重要。支持计算工具,可生成敏捷环境。
在存储池的生命周期内可能会超过最初的预期限制。当驱动器数量增加时,建议进行重新计算。每个 OSD 的 PG 数量应当大约为 100。向存储集群添加更多 OSD 时,每个 OSD 的 PG 数量会随着时间降低。从存储集群中最初使用 120 个驱动器,将池的 pg_num
设置为 4000 的结果是每个 OSD 有 100 个 PG(复制因子为三)。随着时间的推移,当增加到 OSD 数量的十倍时,每个 OSD 的 PG 数量将仅下降到十个。由于每个 OSD 的 PG 数量较小,因此通常分配不均匀地分配容量,因此请考虑调整每个池的 PG。
可以在线调整放置组的数量。重新计算 PG 数值不仅会重新计算 PG 数量,而且会涉及数据重定位,该过程会是一个冗长的过程。但是,数据可用性将随时维护。
应避免每个 OSD 有大量 PG,因为对一个有故障的 OSD 上的所有 PG 进行重新构建将会一次启动。需要及时重新构建方法(可能不可用)执行大量 IOPS。这会导致深度 I/O 队列和高延迟渲染存储集群不可用,或者会导致长时间修复时间。
第 7 章 使用 Ceph Orchestrator 管理监控堆栈 复制链接链接已复制到粘贴板!
作为存储管理员,您可以在后端中将 Ceph Orchestrator 与 Cephadm 搭配使用,以部署监控和警报堆栈。监控堆栈由 Prometheus、Prometheus 导出器、Prometheus Alertmanager 和 Grafana 组成。用户需要在 YAML 配置文件中通过 Cephadm 定义这些服务,或者可以使用 命令行界面来部署这些服务。当部署了同一类型的多个服务时,会部署高可用性设置。节点 exporter 是此规则的一个例外。
Red Hat Ceph Storage 不支持自定义镜像来部署监控服务,如 Prometheus、Grafana、Alertmanager 和 node-exporter。
以下监控服务可以通过 Cephadm 部署:
Prometheus 是监控和警报工具包。它收集 Prometheus exporters 提供的数据,并在达到预定义的阈值时触发预配置的警报。Prometheus manager 模块提供了一个 Prometheus exporter,用于传递
ceph-mgr
中的集合点的 Ceph 性能计数器。Prometheus 配置,包括提取目标(如提供守护进程的指标)由 Cephadm 自动设置。Cephadm 还部署默认警报的列表,如健康错误、10 个 OSD down 或 pgs inactive。
- Alertmanager 处理 Prometheus 服务器发送的警报。它取消复制、组并将警报路由到正确的接收器。默认情况下,Ceph 仪表板自动配置为接收器。Alertmanager 处理 Prometheus 服务器发送的警报。可以使用 Alertmanager 静默警报,但也可以使用 Ceph 控制面板管理静默。
Grafana 是一个视觉化和警报软件。此监控堆栈不使用 Grafana 的警报功能。对于警报,使用了 Alertmanager。
默认情况下,到 Grafana 的流量会通过 TLS 加密。您可以提供自己的 TLS 证书,也可以使用自签名证书。如果在部署 Grafana 前没有配置自定义证书,则会为 Grafana 自动创建和配置自签名证书。Grafana 的自定义证书可通过以下命令配置:
语法
ceph config-key set mgr/cephadm/HOSTNAME/grafana_key -i PRESENT_WORKING_DIRECTORY/key.pem ceph config-key set mgr/cephadm/HOSTNAME/grafana_crt -i PRESENT_WORKING_DIRECTORY/certificate.pem
ceph config-key set mgr/cephadm/HOSTNAME/grafana_key -i PRESENT_WORKING_DIRECTORY/key.pem ceph config-key set mgr/cephadm/HOSTNAME/grafana_crt -i PRESENT_WORKING_DIRECTORY/certificate.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
节点导出器是 Prometheus 的导出器,提供有关安装节点的数据。建议您在所有节点上安装节点导出器。这可以使用带有 node-exporter 服务类型的 monitoring.yml
文件来实现。
7.1. 使用 Ceph Orchestrator 部署监控堆栈 复制链接链接已复制到粘贴板!
监控堆栈由 Prometheus、Prometheus 导出器、Prometheus Alertmanager、Grafana 和 Ceph Exporter 组成。Ceph 控制面板利用这些组件在集群使用和性能上存储和视觉化详细指标。
您可以使用 YAML 文件格式的服务规格部署监控堆栈。所有监控服务都可以具有其绑定到 yml
文件中的网络和端口。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对节点的根级别访问权限。
流程
在 Ceph Manager 守护进程中启用 prometheus 模块。这会公开内部 Ceph 指标,以便 Prometheus 可以读取它们:
示例
[ceph: root@host01 /]# ceph mgr module enable prometheus
[ceph: root@host01 /]# ceph mgr module enable prometheus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在部署 Prometheus 前,请确保运行此命令。如果在部署前运行该命令,您必须重新部署 Prometheus 以更新配置:
ceph orch redeploy prometheus
ceph orch redeploy prometheus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入以下目录:
语法
cd /var/lib/ceph/DAEMON_PATH/
cd /var/lib/ceph/DAEMON_PATH/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 mds/]# cd /var/lib/ceph/monitoring/
[ceph: root@host01 mds/]# cd /var/lib/ceph/monitoring/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果目录
monitoring
不存在,则会创建它。创建
monitoring.yml
文件:示例
[ceph: root@host01 monitoring]# touch monitoring.yml
[ceph: root@host01 monitoring]# touch monitoring.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用类似以下示例的内容编辑规格文件:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意确保监控堆栈组件
alertmanager
、prometheus
和grafana
已部署到同一主机上。node-exporter
和ceph-exporter
组件应部署到所有主机上。应用监控服务:
示例
[ceph: root@host01 monitoring]# ceph orch apply -i monitoring.yml
[ceph: root@host01 monitoring]# ceph orch apply -i monitoring.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --service_name=SERVICE_NAME
ceph orch ps --service_name=SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --service_name=prometheus
[ceph: root@host01 /]# ceph orch ps --service_name=prometheus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Prometheus、Grafana 和 Ceph 仪表板都会自动配置为相互通信,从而导致 Ceph 仪表板中具有完全正常工作的 Grafana 集成。
7.2. 使用 Ceph Orchestrator 删除监控堆栈 复制链接链接已复制到粘贴板!
您可以使用 ceph orch rm
命令删除监控堆栈。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
ceph orch rm
命令删除监控堆栈:语法
ceph orch rm SERVICE_NAME --force
ceph orch rm SERVICE_NAME --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查进程的状态:
示例
[ceph: root@host01 /]# ceph orch status
[ceph: root@host01 /]# ceph orch status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps
ceph orch ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps
[ceph: root@host01 /]# ceph orch ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 8 章 基本 Red Hat Ceph Storage 客户端设置 复制链接链接已复制到粘贴板!
作为存储管理员,您必须使用基本配置设置客户端机器,才能与存储集群交互。大多数客户端机器只需要安装 ceph-common
软件包及其依赖项。它将提供基本的 ceph
和 rados
命令,以及其他命令,如 mount.ceph
和 rbd
。
8.1. 在客户端机器上配置文件设置 复制链接链接已复制到粘贴板!
客户端机器通常需要比功能完整的存储群集成员更小的配置文件。您可以生成最小的配置文件,向客户端提供详细信息以到达 Ceph 监视器。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 根访问节点。
流程
在您要设置文件的节点上,在
/etc
文件夹中创建一个目录ceph
:示例
mkdir /etc/ceph/
[root@host01 ~]# mkdir /etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
/etc/ceph
目录:示例
cd /etc/ceph/
[root@host01 ~]# cd /etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
ceph
目录中生成配置文件:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此文件的内容应安装在
/etc/ceph/ceph.conf
路径中。您可以使用此配置文件来访问 Ceph 监视器。
8.2. 在客户端机器上设置密钥环 复制链接链接已复制到粘贴板!
大多数 Ceph 集群都在启用身份验证的情况下运行,客户端需要密钥才能与集群机器通信。您可以生成密钥环,以向客户端提供访问 Ceph 监视器的详细信息。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 根访问节点。
流程
在您要设置密钥环的节点上,在
/etc
文件夹中创建一个目录ceph
:示例
mkdir /etc/ceph/
[root@host01 ~]# mkdir /etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
ceph
目录中的/etc/ceph
目录:示例
cd /etc/ceph/
[root@host01 ~]# cd /etc/ceph/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为客户端生成密钥环:
语法
ceph auth get-or-create client.CLIENT_NAME -o /etc/ceph/NAME_OF_THE_FILE
ceph auth get-or-create client.CLIENT_NAME -o /etc/ceph/NAME_OF_THE_FILE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph auth get-or-create client.fs -o /etc/ceph/ceph.keyring
[root@host01 ceph]# ceph auth get-or-create client.fs -o /etc/ceph/ceph.keyring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
ceph.keyring
文件中的输出:示例
cat ceph.keyring [client.fs] key = AQAvoH5gkUCsExAATz3xCBLd4n6B6jRv+Z7CVQ==
[root@host01 ceph]# cat ceph.keyring [client.fs] key = AQAvoH5gkUCsExAATz3xCBLd4n6B6jRv+Z7CVQ==
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成的输出应放入密钥环文件中,如
/etc/ceph/ceph.keyring
。
第 9 章 使用 Ceph Orchestrator 管理 MDS 服务 复制链接链接已复制到粘贴板!
作为存储管理员,您可以在后端中使用 Ceph 编排器和 Cephadm 部署 MDS 服务。默认情况下,Ceph 文件系统(CephFS)仅使用了一个活跃的 MDS 守护进程。但是,具有许多客户端的系统得益于多个活跃的 MDS 守护进程。
本节涵盖了以下管理任务:
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到集群中。
- 部署所有管理器、监控器和 OSD 守护进程。
9.1. 使用命令行界面部署 MDS 服务 复制链接链接已复制到粘贴板!
通过使用 Ceph 编排器,您可以使用命令行界面中的 placement
规格部署元数据服务器(MDS)服务。Ceph 文件系统(CephFS)需要一个或多个 MDS。
确保至少有一个池,一个用于 Ceph 文件系统(CephFS)数据,另一个用于 CephFS 元数据。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 部署所有管理器、监控和 OSD 守护进程。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用放置规格部署 MDS 守护进程有两种方法:
方法 1
使用
ceph fs volume
来创建 MDS 守护进程。这将创建 CephFS 卷和与 CephFS 关联的池,也会在主机上启动 MDS 服务。语法
ceph fs volume create FILESYSTEM_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
ceph fs volume create FILESYSTEM_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认情况下,为此命令创建池。
示例
[ceph: root@host01 /]# ceph fs volume create test --placement="2 host01 host02"
[ceph: root@host01 /]# ceph fs volume create test --placement="2 host01 host02"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 2
创建池 CephFS,然后使用放置规格部署 MDS 服务:
为 CephFS 创建池:
语法
ceph osd pool create DATA_POOL [PG_NUM] ceph osd pool create METADATA_POOL [PG_NUM]
ceph osd pool create DATA_POOL [PG_NUM] ceph osd pool create METADATA_POOL [PG_NUM]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph osd pool create cephfs_data 64 [ceph: root@host01 /]# ceph osd pool create cephfs_metadata 64
[ceph: root@host01 /]# ceph osd pool create cephfs_data 64 [ceph: root@host01 /]# ceph osd pool create cephfs_metadata 64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通常,元数据池可以从保守的 PG 数量开始,因为它的对象通常比数据池少得多。如果需要,可以增加 PG 数量。池大小范围从 64 个 PG 到 512 个 PG。数据池的大小与您文件系统中预期的文件的编号和大小成比例。
重要对于元数据池,请考虑使用:
- 更高的复制级别,因为对此池的任何数据丢失都可能会导致整个文件系统无法访问。
- 延迟较低的存储(如 Solid-State Drive(SSD)磁盘),因为这会直接影响客户端上观察到的文件系统操作延迟。
为数据池和元数据池创建文件系统:
语法
ceph fs new FILESYSTEM_NAME METADATA_POOL DATA_POOL
ceph fs new FILESYSTEM_NAME METADATA_POOL DATA_POOL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph fs new test cephfs_metadata cephfs_data
[ceph: root@host01 /]# ceph fs new test cephfs_metadata cephfs_data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
ceph orch apply
命令部署 MDS 服务:语法
ceph orch apply mds FILESYSTEM_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
ceph orch apply mds FILESYSTEM_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2 HOST_NAME_3"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply mds test --placement="2 host01 host02"
[ceph: root@host01 /]# ceph orch apply mds test --placement="2 host01 host02"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 CephFS 状态:
示例
[ceph: root@host01 /]# ceph fs ls [ceph: root@host01 /]# ceph fs status
[ceph: root@host01 /]# ceph fs ls [ceph: root@host01 /]# ceph fs status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mds
[ceph: root@host01 /]# ceph orch ps --daemon_type=mds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2. 使用服务规格部署 MDS 服务 复制链接链接已复制到粘贴板!
通过使用 Ceph 编排器,您可以使用服务规格部署 MDS 服务。
确保至少有两个池,一个用于 Ceph 文件系统(CephFS)数据,另一个用于 CephFS 元数据。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 部署所有管理器、监控和 OSD 守护进程。
流程
创建
mds.yaml
文件:示例
touch mds.yaml
[root@host01 ~]# touch mds.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
mds.yaml
文件,使其包含以下详情:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 YAML 文件挂载到容器中的一个目录下:
示例
cephadm shell --mount mds.yaml:/var/lib/ceph/mds/mds.yaml
[root@host01 ~]# cephadm shell --mount mds.yaml:/var/lib/ceph/mds/mds.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入该目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/mds/
[ceph: root@host01 /]# cd /var/lib/ceph/mds/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入以下目录:
示例
[ceph: root@host01 /]# cd /var/lib/ceph/mds/
[ceph: root@host01 /]# cd /var/lib/ceph/mds/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用服务规格部署 MDS 服务:
语法
ceph orch apply -i FILE_NAME.yaml
ceph orch apply -i FILE_NAME.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 mds]# ceph orch apply -i mds.yaml
[ceph: root@host01 mds]# ceph orch apply -i mds.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 MDS 服务后,创建 CephFS:
语法
ceph fs new CEPHFS_NAME METADATA_POOL DATA_POOL
ceph fs new CEPHFS_NAME METADATA_POOL DATA_POOL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph fs new test metadata_pool data_pool
[ceph: root@host01 /]# ceph fs new test metadata_pool data_pool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=mds
[ceph: root@host01 /]# ceph orch ps --daemon_type=mds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. 使用 Ceph Orchestrator 删除 MDS 服务 复制链接链接已复制到粘贴板!
您可以使用 ceph orch rm
命令删除该服务。或者,您也可以删除文件系统和相关池。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到集群中。
- 在主机上至少部署一个 MDS 守护进程。
流程
- 可以通过两种方式从集群中移除 MDS 守护进程:
方法 1
移除 CephFS 卷、关联的池和服务:
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将配置参数
mon_allow_pool_delete
设置为true
:示例
[ceph: root@host01 /]# ceph config set mon mon_allow_pool_delete true
[ceph: root@host01 /]# ceph config set mon mon_allow_pool_delete true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除文件系统:
语法
ceph fs volume rm FILESYSTEM_NAME --yes-i-really-mean-it
ceph fs volume rm FILESYSTEM_NAME --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph fs volume rm cephfs-new --yes-i-really-mean-it
[ceph: root@host01 /]# ceph fs volume rm cephfs-new --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将删除文件系统、其数据和元数据池。它还会尝试使用启用了
ceph-mgr
Orchestrator 模块来删除 MDS。
方法 2
使用
ceph orch rm
命令从整个集群中删除 MDS 服务:列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除服务
语法
ceph orch rm SERVICE_NAME
ceph orch rm SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch rm mds.test
[ceph: root@host01 /]# ceph orch rm mds.test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机、守护进程和进程:
语法
ceph orch ps
ceph orch ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps
[ceph: root@host01 /]# ceph orch ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 10 章 使用 Ceph Orchestrator 管理 Ceph 对象网关 复制链接链接已复制到粘贴板!
作为存储管理员,您可以使用命令行界面或使用服务规格部署 Ceph 对象网关。
您还可以配置多站点对象网关,并使用 Ceph 编排器删除 Ceph 对象网关。
Cephadm 将 Ceph 对象网关部署为守护进程的集合,可在多站点部署中管理单集群部署或特定 realm 和 zone。
使用 Cephadm 时,对象网关守护进程使用 monitor 配置数据库而不是 ceph.conf
或命令行来进行配置。如果 client.rgw
部分中还没有该配置,则对象网关守护进程将使用默认设置启动,并绑定到端口 80
。
只有 Ceph 对象网关中创建 bucket 之后,才会创建 .default.rgw.buckets.index
池,而数据上传到 bucket 后才会创建 .default.rgw.buckets.data
池。
本节涵盖了以下管理任务:
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到集群中。
- 所有管理器、监视器和 OSD 都部署在存储集群中。
10.1. 使用命令行界面部署 Ceph 对象网关 复制链接链接已复制到粘贴板!
利用 Ceph 编排器,您可以在命令行界面中使用 ceph orch
命令部署 Ceph 对象网关。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到集群中。
- 部署所有管理器、监控器和 OSD 守护进程。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 您可以通过三种不同的方式部署 Ceph 对象网关守护进程:
方法 1
创建 realm、zone group 和 zone,然后将放置规格与主机名搭配使用:
创建一个域:
语法
radosgw-admin realm create --rgw-realm=REALM_NAME --default
radosgw-admin realm create --rgw-realm=REALM_NAME --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建区组:
语法
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --master --default
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --master --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
[ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建区:
语法
radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default
radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=test_zone --master --default
[ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=test_zone --master --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提交更改:
语法
radosgw-admin period update --rgw-realm=REALM_NAME --commit
radosgw-admin period update --rgw-realm=REALM_NAME --commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin period update --rgw-realm=test_realm --commit
[ceph: root@host01 /]# radosgw-admin period update --rgw-realm=test_realm --commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
ceph orch apply
命令:语法
ceph orch apply rgw NAME [--realm=REALM_NAME] [--zone=ZONE_NAME] --placement="NUMBER_OF_DAEMONS [HOST_NAME_1 HOST_NAME_2]"
ceph orch apply rgw NAME [--realm=REALM_NAME] [--zone=ZONE_NAME] --placement="NUMBER_OF_DAEMONS [HOST_NAME_1 HOST_NAME_2]"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply rgw test --realm=test_realm --zone=test_zone --placement="2 host01 host02"
[ceph: root@host01 /]# ceph orch apply rgw test --realm=test_realm --zone=test_zone --placement="2 host01 host02"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 2
使用任意服务名称为单个集群部署部署两个 Ceph 对象网关守护进程:
语法
ceph orch apply rgw SERVICE_NAME
ceph orch apply rgw SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply rgw foo
[ceph: root@host01 /]# ceph orch apply rgw foo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 3
在标记的一组主机上使用任意服务名称:
语法
ceph orch host label add HOST_NAME_1 LABEL_NAME ceph orch host label add HOSTNAME_2 LABEL_NAME ceph orch apply rgw SERVICE_NAME --placement="label:LABEL_NAME count-per-host:NUMBER_OF_DAEMONS" --port=8000
ceph orch host label add HOST_NAME_1 LABEL_NAME ceph orch host label add HOSTNAME_2 LABEL_NAME ceph orch apply rgw SERVICE_NAME --placement="label:LABEL_NAME count-per-host:NUMBER_OF_DAEMONS" --port=8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意NUMBER_OF_DAEMONS 控制每个主机上部署的 Ceph 对象网关数量。要在不增加成本的情况下获得最佳性能,请将此值设为 2。
示例
[ceph: root@host01 /]# ceph orch host label add host01 rgw # the 'rgw' label can be anything [ceph: root@host01 /]# ceph orch host label add host02 rgw [ceph: root@host01 /]# ceph orch apply rgw foo --placement="2 label:rgw" --port=8000
[ceph: root@host01 /]# ceph orch host label add host01 rgw # the 'rgw' label can be anything [ceph: root@host01 /]# ceph orch host label add host02 rgw [ceph: root@host01 /]# ceph orch apply rgw foo --placement="2 label:rgw" --port=8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=rgw
[ceph: root@host01 /]# ceph orch ps --daemon_type=rgw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. 使用服务规格部署 Ceph 对象网关 复制链接链接已复制到粘贴板!
您可以使用服务规格和默认域、区域和区域组来部署 Ceph 对象网关。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对 bootstrap 启动主机的 root 级别访问权限。
- 主机添加到集群中。
- 部署所有管理器、监控和 OSD 守护进程。
流程
作为 root 用户,创建规格文件:
示例
touch radosgw.yml
[root@host01 ~]# touch radosgw.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
radosgw.yml
文件,使其包含 default realm、zone 和 zone group 的以下详情:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意NUMBER_OF_DAEMONS 控制每个主机上部署的 Ceph 对象网关数量。要在不增加成本的情况下获得最佳性能,请将此值设为 2。
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 对于自定义 realm、zone 和 zone group,请创建资源,然后创建
radosgw.yml
文件:创建自定义 realm、zone 和 zone 组:
示例
radosgw-admin realm create --rgw-realm=test_realm radosgw-admin zonegroup create --rgw-zonegroup=test_zonegroup radosgw-admin zone create --rgw-zonegroup=test_zonegroup --rgw-zone=test_zone radosgw-admin period update --rgw-realm=test_realm --commit
[root@host01 ~]# radosgw-admin realm create --rgw-realm=test_realm [root@host01 ~]# radosgw-admin zonegroup create --rgw-zonegroup=test_zonegroup [root@host01 ~]# radosgw-admin zone create --rgw-zonegroup=test_zonegroup --rgw-zone=test_zone [root@host01 ~]# radosgw-admin period update --rgw-realm=test_realm --commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下详细信息,创建
radosgw.yml
文件:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将
radosgw.yml
文件挂载到容器中的某个目录下:示例
cephadm shell --mount radosgw.yml:/var/lib/ceph/radosgw/radosgw.yml
[root@host01 ~]# cephadm shell --mount radosgw.yml:/var/lib/ceph/radosgw/radosgw.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意每次退出 shell 时,您都必须在部署守护进程前将该文件挂载到容器中。
使用服务规格部署 Ceph 对象网关:
语法
ceph orch apply -i FILE_NAME.yml
ceph orch apply -i FILE_NAME.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch apply -i radosgw.yml
[ceph: root@host01 /]# ceph orch apply -i radosgw.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出主机、守护进程和进程:
语法
ceph orch ps --daemon_type=DAEMON_NAME
ceph orch ps --daemon_type=DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps --daemon_type=rgw
[ceph: root@host01 /]# ceph orch ps --daemon_type=rgw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. 使用 Ceph 编排器部署多站点 Ceph 对象网关 复制链接链接已复制到粘贴板!
Ceph 编排器支持 Ceph 对象网关的多站点配置选项。
您可以将每个对象网关配置为在主动区域配置中工作,从而允许写入到非主要区域。多站点配置存储在名为 realm 的容器中。
realm 存储 zone group、区域和一个时间周期。rgw
守护进程处理同步消除了对独立同步代理的需求,因此使用主动-主动配置运行。
您还可以使用命令行界面(CLI)部署多站点区域。
以下配置假定在地理上至少有两个 Red Hat Ceph Storage 集群。但是,配置也在同一站点工作。
先决条件
- 至少两个正在运行的 Red Hat Ceph Storage 集群。
- 至少两个 Ceph 对象网关实例,每个实例对应一个 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 节点或容器添加到存储集群中。
- 部署所有 Ceph 管理器、监控器和 OSD 守护进程。
流程
在
cephadm
shell 中,配置主区:创建一个域:
语法
radosgw-admin realm create --rgw-realm=REALM_NAME --default
radosgw-admin realm create --rgw-realm=REALM_NAME --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果存储集群只有一个域,则指定
--default
标志。创建主要区组:
语法
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --master --default
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --master --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=us --endpoints=http://rgw1:80 --master --default
[ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=us --endpoints=http://rgw1:80 --master --default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个主要区:
语法
radosgw-admin zone create --rgw-zonegroup=PRIMARY_ZONE_GROUP_NAME --rgw-zone=PRIMARY_ZONE_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY
radosgw-admin zone create --rgw-zonegroup=PRIMARY_ZONE_GROUP_NAME --rgw-zone=PRIMARY_ZONE_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-1 --endpoints=http://rgw1:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
[ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-1 --endpoints=http://rgw1:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:删除默认 zone、zone group 和关联的池。
重要如果您使用默认 zone 和 zone group 存储数据,则不要删除默认区域及其池。此外,删除默认 zone group 也会删除系统用户。
要访问
default
zone 和 zonegroup 中的旧数据,请在radosgw-admin
命令中使用--rgw-zone default
和--rgw-zonegroup default
。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建系统用户:
语法
radosgw-admin user create --uid=USER_NAME --display-name="USER_NAME" --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY --system
radosgw-admin user create --uid=USER_NAME --display-name="USER_NAME" --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY --system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin user create --uid=zone.user --display-name="Zone user" --system
[ceph: root@host01 /]# radosgw-admin user create --uid=zone.user --display-name="Zone user" --system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录
access_key
和secret_key
。在主区中添加 access key 和 system key:
语法
radosgw-admin zone modify --rgw-zone=PRIMARY_ZONE_NAME --access-key=ACCESS_KEY --secret=SECRET_KEY
radosgw-admin zone modify --rgw-zone=PRIMARY_ZONE_NAME --access-key=ACCESS_KEY --secret=SECRET_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=us-east-1 --access-key=NE48APYCAODEPLKBCZVQ--secret=u24GHQWRE3yxxNBnFBzjM4jn14mFIckQ4EKL6LoW
[ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=us-east-1 --access-key=NE48APYCAODEPLKBCZVQ--secret=u24GHQWRE3yxxNBnFBzjM4jn14mFIckQ4EKL6LoW
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提交更改:
语法
radosgw-admin period update --commit
radosgw-admin period update --commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# radosgw-admin period update --commit
[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
cephadm
shell 外部,获取存储集群的FSID
及进程:示例
systemctl list-units | grep ceph
[root@host01 ~]# systemctl list-units | grep ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 Ceph 对象网关守护进程:
语法
systemctl start ceph-FSID@DAEMON_NAME systemctl enable ceph-FSID@DAEMON_NAME
systemctl start ceph-FSID@DAEMON_NAME systemctl enable ceph-FSID@DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service
[root@host01 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service [root@host01 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Cephadm shell 中,配置 second zone。
从主机拉取主要域配置:
语法
radosgw-admin realm pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
radosgw-admin realm pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host04 /]# radosgw-admin realm pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
[ceph: root@host04 /]# radosgw-admin realm pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从主机拉取主要 period 配置:
语法
radosgw-admin period pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
radosgw-admin period pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host04 /]# radosgw-admin period pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
[ceph: root@host04 /]# radosgw-admin period pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 second zone:
语法
radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME \ --rgw-zone=SECONDARY_ZONE_NAME --endpoints=http://RGW_SECONDARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 \ --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY \ --endpoints=http://FQDN:80 \ [--read-only]
radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME \ --rgw-zone=SECONDARY_ZONE_NAME --endpoints=http://RGW_SECONDARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 \ --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY \ --endpoints=http://FQDN:80 \ [--read-only]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-2 --endpoints=http://rgw2:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ --endpoints=http://rgw.example.com:80
[ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-2 --endpoints=http://rgw2:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ --endpoints=http://rgw.example.com:80
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:删除默认区。
重要如果您使用默认 zone 和 zone group 存储数据,则不要删除默认区域及其池。
要访问
default
zone 和 zonegroup 中的旧数据,请在radosgw-admin
命令中使用--rgw-zone default
和--rgw-zonegroup default
。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 Ceph 配置数据库:
语法
ceph config set SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME
ceph config set SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host04 /]# ceph config set rgw rgw_zone us-east-2
[ceph: root@host04 /]# ceph config set rgw rgw_zone us-east-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提交更改:
语法
radosgw-admin period update --commit
radosgw-admin period update --commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host04 /]# radosgw-admin period update --commit
[ceph: root@host04 /]# radosgw-admin period update --commit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Cephadm shell 外,获取存储集群的 FSID 及进程:
示例
systemctl list-units | grep ceph
[root@host04 ~]# systemctl list-units | grep ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 Ceph 对象网关守护进程:
语法
systemctl start ceph-FSID@DAEMON_NAME systemctl enable ceph-FSID@DAEMON_NAME
systemctl start ceph-FSID@DAEMON_NAME systemctl enable ceph-FSID@DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
[root@host04 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service [root@host04 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:使用放置规格部署多站点 Ceph 对象网关:
语法
ceph orch apply rgw NAME --realm=REALM_NAME --zone=PRIMARY_ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
ceph orch apply rgw NAME --realm=REALM_NAME --zone=PRIMARY_ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host04 /]# ceph orch apply rgw east --realm=test_realm --zone=us-east-1 --placement="2 host01 host02"
[ceph: root@host04 /]# ceph orch apply rgw east --realm=test_realm --zone=us-east-1 --placement="2 host01 host02"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查同步状态以验证部署:
示例
[ceph: root@host04 /]# radosgw-admin sync status
[ceph: root@host04 /]# radosgw-admin sync status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4. 使用 Ceph 编排器移除 Ceph 对象网关 复制链接链接已复制到粘贴板!
您可以使用 ceph orch rm
命令移除 Ceph 对象网关守护进程。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 主机添加到集群中。
- 主机上至少部署了一个 Ceph 对象网关守护进程。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出服务:
示例
[ceph: root@host01 /]# ceph orch ls
[ceph: root@host01 /]# ceph orch ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除服务:
语法
ceph orch rm SERVICE_NAME
ceph orch rm SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch rm rgw.test_realm.test_zone_bb
[ceph: root@host01 /]# ceph orch rm rgw.test_realm.test_zone_bb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出主机、守护进程和进程:
语法
ceph orch ps
ceph orch ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch ps
[ceph: root@host01 /]# ceph orch ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 11 章 SNMP trap 配置 复制链接链接已复制到粘贴板!
作为存储管理员,您可以在 Red Hat Ceph Storage 集群中部署和配置简单的网络管理协议(SNMP)网关,从 Prometheus Alertmanager 接收警报并将其作为 SNMP 陷入集群。
11.1. 简单的网络管理协议 复制链接链接已复制到粘贴板!
简单的网络管理协议(SNMP)是最广泛使用的开放协议之一,用于监控不同硬件和软件平台的分布式系统和设备。Ceph 的 SNMP 集成侧重于将警报从 Prometheus Alertmanager 集群转发到网关守护进程。网关守护进程将警报转换为 SNMP 通知,并将其发送到指定的 SNMP 管理平台。网关守护进程来自 snmp_notifier_project
,它通过验证和加密提供 SNMP V2c 和 V3 支持。
Red Hat Ceph Storage SNMP 网关服务默认部署一个网关实例。您可以通过提供放置信息来增加这个值。但是,如果您启用了多个 SNMP 网关守护进程,您的 SNMP 管理平台会接收同一事件的多个通知。
SNMP 陷阱是警报消息,Prometheus Alertmanager 会将这些警报发送到 SNMP notifier,然后在给定的警报标签中查找对象标识符(OID)。每个 SNMP trap 都有一个唯一的 ID,允许它将带有更新状态的其他 trap 发送到给定的 SNMP 轮询程序。SNMP hook 在 Ceph 健康检查中,使得每个健康警告都会生成特定的 SNMP 陷阱。
为了正常工作并将设备状态的信息传送到用户 monitor,SNMP 依赖于几个组件。makeup SNMP 有四个主要组件:
- SNMP Manager- SNMP manager,也称为管理站,是运行网络监控平台的计算机。具有轮询 SNMP 功能的设备并从中检索数据的平台。SNMP Manager 查询代理,从代理接收响应,并确认来自代理的异步事件。
- SNMP Agent - SNMP 代理是在要管理的系统上运行并包含系统的 MIB 数据库的程序。它们收集带宽和磁盘空间、聚合数据并将其发送到管理信息基础(MIB)。
- 管理信息基础(MIB) - 这些组件包含在 SNMP 代理中。SNMP 管理器将此用作数据库,并要求代理访问特定信息。网络管理系统(NMS)需要此信息。NMS 轮询代理以从这些文件获取信息,然后继续将其转换为图形,并显示用户可以查看这些信息。MiB 包含由网络设备决定的统计信息和控制值。
- SNMP 设备
以下 SNMP 版本在网关实施中兼容和支持:
- V2c - 使用一个没有身份验证的社区字符串,并容易受到外部攻击的影响。
- V3 authNoPriv - 在没有加密的情况下使用用户名和密码身份验证。
- V3 authPriv - 通过加密将用户名和密码身份验证用于 SNMP 管理平台。
在使用 SNMP 陷阱时,请确保您的版本号具有正确的安全配置,以最大程度降低 SNMP 固有的漏洞,防止您的网络不受未授权用户保护。
11.2. 配置 snmptrapd 复制链接链接已复制到粘贴板!
在部署 snmp-gateway
前务必要配置简单的网络管理协议(SNMP)目标,因为 snmptrapd
守护进程包含您在创建 snmp-gateway
服务时指定的 auth 设置。
SNMP 网关功能提供了将 Prometheus 堆栈中生成的警报公开给 SNMP 管理平台的方法。您可以根据 snmptrapd
工具配置 SNMP 陷入目的地。此工具允许您建立一个或多个 SNMP 陷阱监听程序。
以下参数对于配置非常重要:
-
engine-id
是设备的唯一标识符,hex 格式,SNNV3 网关需要。红帽建议在此参数中使用 '8000C53F_CLUSTER_FSID_WITHOUT_DASHES_'。 -
snmp-community
是 SNMP_COMMUNITY_FOR_SNMPV2 参数,对于 SNMPV2c 网关是public
。 -
auth-protocol
是 AUTH_PROTOCOL,它是 SNMPV3 网关的强制性,默认情况下是SHA
。 -
对于 SNMPV3 网关,
privacy-protocol
(为 PRIVACY_PROTOCOL)是必须的。 - PRIVACY_PASSWORD 是 SNMPV3 网关使用加密所必需的。
- SNMP_V3_AUTH_USER_NAME 是用户名,是 SNMPV3 网关所必需的。
- SNMP_V3_AUTH_PASSWORD 是密码,是 SNMPV3 网关所必需的。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对节点的根级别访问权限。
-
在 Red Hat Enterprise Linux 系统上安装
firewalld
。
流程
在 SNMP 管理主机上,安装 SNMP 软件包:
示例
dnf install -y net-snmp-utils net-snmp
[root@host01 ~]# dnf install -y net-snmp-utils net-snmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 SNMP 打开端口 162 以接收警报:
示例
firewall-cmd --zone=public --add-port=162/udp firewall-cmd --zone=public --add-port=162/udp --permanent
[root@host01 ~]# firewall-cmd --zone=public --add-port=162/udp [root@host01 ~]# firewall-cmd --zone=public --add-port=162/udp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 实施管理信息基础(MIB),以便对 SNMP 通知有意义,并增强目的地主机上的 SNMP 支持。从主存储库复制 raw 文件 :https://github.com/ceph/ceph/blob/master/monitoring/snmp/CEPH-MIB.txt
示例
curl -o CEPH_MIB.txt -L https://raw.githubusercontent.com/ceph/ceph/master/monitoring/snmp/CEPH-MIB.txt scp CEPH_MIB.txt root@host02:/usr/share/snmp/mibs
[root@host01 ~]# curl -o CEPH_MIB.txt -L https://raw.githubusercontent.com/ceph/ceph/master/monitoring/snmp/CEPH-MIB.txt [root@host01 ~]# scp CEPH_MIB.txt root@host02:/usr/share/snmp/mibs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
snmptrapd
目录。示例
mkdir /root/snmptrapd/
[root@host01 ~]# mkdir /root/snmptrapd/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据 SNMP 版本为每个协议创建
snmptrapd
目录中的配置文件:语法
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n createuser -e 0x_ENGINE_ID_ SNMPV3_AUTH_USER_NAME AUTH_PROTOCOL SNMP_V3_AUTH_PASSWORD PRIVACY_PROTOCOL PRIVACY_PASSWORD authuser log,execute SNMP_V3_AUTH_USER_NAME authCommunity log,execute,net SNMP_COMMUNITY_FOR_SNMPV2
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n createuser -e 0x_ENGINE_ID_ SNMPV3_AUTH_USER_NAME AUTH_PROTOCOL SNMP_V3_AUTH_PASSWORD PRIVACY_PROTOCOL PRIVACY_PASSWORD authuser log,execute SNMP_V3_AUTH_USER_NAME authCommunity log,execute,net SNMP_COMMUNITY_FOR_SNMPV2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 SNMPV2c,按如下所示创建
snmptrapd_public.conf
文件:示例
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n authCommunity log,execute,net public
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n authCommunity log,execute,net public
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此处的
public
设置必须与部署snmp-gateway
服务时使用的snmp_community
设置匹配。对于仅限通过身份验证的 SNMPV3,请创建
snmptrapd_auth.conf
文件,如下所示:示例
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n createuser -e 0x8000C53Ff64f341c655d11eb8778fa163e914bcc myuser SHA mypassword authuser log,execute myuser
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n createuser -e 0x8000C53Ff64f341c655d11eb8778fa163e914bcc myuser SHA mypassword authuser log,execute myuser
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 0x8000C53Ff64f341c655d11eb8778fa163e914bcc
字符串是engine_id
,myuser
和mypassword
是凭证。密码安全性由SHA
算法定义。这与部署
snmp-gateway
守护进程的设置对应。示例
snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword
snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于带有身份验证和加密的 SNMPV3,请创建
snmptrapd_authpriv.conf
文件,如下所示:示例
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n createuser -e 0x8000C53Ff64f341c655d11eb8778fa163e914bcc myuser SHA mypassword DES mysecret authuser log,execute myuser
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n createuser -e 0x8000C53Ff64f341c655d11eb8778fa163e914bcc myuser SHA mypassword DES mysecret authuser log,execute myuser
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 0x8000C53Ff64f341c655d11eb8778fa163e914bcc
字符串是engine_id
,myuser
和mypassword
是凭证。密码安全性由SHA
算法定义,而DES
是隐私加密的类型。这与部署
snmp-gateway
守护进程的设置对应。示例
snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword snmp_v3_priv_password: mysecret
snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword snmp_v3_priv_password: mysecret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 SNMP 管理主机上运行守护进程:
语法
/usr/sbin/snmptrapd -M /usr/share/snmp/mibs -m CEPH-MIB.txt -f -C -c /root/snmptrapd/CONFIGURATION_FILE -Of -Lo :162
/usr/sbin/snmptrapd -M /usr/share/snmp/mibs -m CEPH-MIB.txt -f -C -c /root/snmptrapd/CONFIGURATION_FILE -Of -Lo :162
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
/usr/sbin/snmptrapd -M /usr/share/snmp/mibs -m CEPH-MIB.txt -f -C -c /root/snmptrapd/snmptrapd_auth.conf -Of -Lo :162
[root@host01 ~]# /usr/sbin/snmptrapd -M /usr/share/snmp/mibs -m CEPH-MIB.txt -f -C -c /root/snmptrapd/snmptrapd_auth.conf -Of -Lo :162
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果存储集群上触发了任何警报,您可以监控 SNMP 管理主机上的输出。验证 SNMP 陷阱以及 MIB 解码的陷阱。
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上例中,在禁用 Prometheus 模块后生成一个警报。
11.3. 部署 SNMP 网关 复制链接链接已复制到粘贴板!
您可以使用 SNMPV2c 或 SNMPV3 部署简单网络管理协议(SNMP)网关。部署 SNMP 网关的方法有两种:
- 通过创建凭据文件。
- 使用所有详情创建一个服务配置 yaml 文件。
您可以使用以下参数根据版本部署 SNMP 网关:
-
service_type
是snmp-gateway
。 -
service_name
是任何用户定义的字符串。 -
count
是要在存储集群中部署的 SNMP 网关的数量。 -
snmp_destination
参数必须为 hostname:port 格式。 -
engine-id
是设备的唯一标识符,hex 格式,SNNV3 网关需要。红帽建议为此参数使用 '8000C53F_CLUSTER_FSID_WITHOUT_DASHES_'。 -
对于 SNMPV2c 网关,
snmp_community
参数为public
。 -
对于 SNMPV3 网关,
auth-protocol
是强制的,默认为SHA
。 -
对于需要 进行身份验证和加密的 SNMPV3 网关,
privacy-protocol
是必须的。 -
端口默认为
9464
。 -
您必须提供
-i FILENAME
,将 secret 和密码传递给编配器。
在部署或更新 SNMP 网关服务后,Prometheus Alertmanager 配置会自动更新,以将对象识别符转发到 SNMP 网关守护进程以进行进一步处理。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对节点的根级别访问权限。
-
在目标主机上配置
snmptrapd
,这是 SNMP 管理主机。
流程
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为需要部署 SNMP 网关的主机创建一个标签:
语法
ceph orch host label add HOSTNAME snmp-gateway
ceph orch host label add HOSTNAME snmp-gateway
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host label add host02 snmp-gateway
[ceph: root@host01 /]# ceph orch host label add host02 snmp-gateway
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据 SNMP 版本创建凭证文件或服务配置文件:
对于 SNMPV2c,按如下所示创建该文件:
示例
[ceph: root@host01 /]# cat snmp_creds.yml snmp_community: public
[ceph: root@host01 /]# cat snmp_creds.yml snmp_community: public
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于仅限使用身份验证的 SNMPV3,请按如下所示创建该文件:
示例
[ceph: root@host01 /]# cat snmp_creds.yml snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword
[ceph: root@host01 /]# cat snmp_creds.yml snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于使用验证和加密的 SNMPV3,请按如下所示创建该文件:
示例
[ceph: root@host01 /]# cat snmp_creds.yml snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword snmp_v3_priv_password: mysecret
[ceph: root@host01 /]# cat snmp_creds.yml snmp_v3_auth_username: myuser snmp_v3_auth_password: mypassword snmp_v3_priv_password: mysecret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行
ceph orch
命令:语法
ceph orch apply snmp-gateway --snmp_version=V2c_OR_V3 --destination=SNMP_DESTINATION [--port=PORT_NUMBER]\ [--engine-id=8000C53F_CLUSTER_FSID_WITHOUT_DASHES_] [--auth-protocol=MDS_OR_SHA] [--privacy_protocol=DES_OR_AES] -i FILENAME
ceph orch apply snmp-gateway --snmp_version=V2c_OR_V3 --destination=SNMP_DESTINATION [--port=PORT_NUMBER]\ [--engine-id=8000C53F_CLUSTER_FSID_WITHOUT_DASHES_] [--auth-protocol=MDS_OR_SHA] [--privacy_protocol=DES_OR_AES] -i FILENAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
语法
ceph orch apply -i FILENAME.yml
ceph orch apply -i FILENAME.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 SNMPV2c,使用
snmp_creds
文件,使用snmp-version
作为V2c
运行ceph orch
命令:示例
[ceph: root@host01 /]# ceph orch apply snmp-gateway --snmp-version=V2c --destination=192.168.122.73:162 --port=9464 -i snmp_creds.yml
[ceph: root@host01 /]# ceph orch apply snmp-gateway --snmp-version=V2c --destination=192.168.122.73:162 --port=9464 -i snmp_creds.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于只使用
snmp_creds
文件进行身份验证的 SNMPV3,请使用snmp-version
作为V3
和engine-id
运行ceph orch
命令:示例
[ceph: root@host01 /]# ceph orch apply snmp-gateway --snmp-version=V3 --engine-id=8000C53Ff64f341c655d11eb8778fa163e914bcc--destination=192.168.122.73:162 -i snmp_creds.yml
[ceph: root@host01 /]# ceph orch apply snmp-gateway --snmp-version=V3 --engine-id=8000C53Ff64f341c655d11eb8778fa163e914bcc--destination=192.168.122.73:162 -i snmp_creds.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于带有验证和加密的 SNMPV3,带有
snmp_creds
文件,运行ceph orch
命令,snmp-version
为V3
,privacy-protocol
, 和engine-id
:示例
[ceph: root@host01 /]# ceph orch apply snmp-gateway --snmp-version=V3 --engine-id=8000C53Ff64f341c655d11eb8778fa163e914bcc--destination=192.168.122.73:162 --privacy-protocol=AES -i snmp_creds.yml
[ceph: root@host01 /]# ceph orch apply snmp-gateway --snmp-version=V3 --engine-id=8000C53Ff64f341c655d11eb8778fa163e914bcc--destination=192.168.122.73:162 --privacy-protocol=AES -i snmp_creds.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
对于所有 SNMP 版本(使用
snmp-gateway
文件),请运行以下命令:示例
[ceph: root@host01 /]# ceph orch apply -i snmp-gateway.yml
[ceph: root@host01 /]# ceph orch apply -i snmp-gateway.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 12 章 处理节点故障 复制链接链接已复制到粘贴板!
作为存储管理员,您可以在存储集群中遇到整个节点故障,处理节点故障与处理磁盘故障类似。当节点出现故障时,只能为一个磁盘恢复放置组(PG),必须恢复该节点上磁盘上的所有 PG。Ceph 将检测 OSD 是否都停止,并且自动启动恢复过程,称为自我修复。
有三个节点故障场景。
- 使用来自故障节点的 root 和 Ceph OSD 磁盘替换节点。
- 通过重新安装操作系统并使用来自故障节点的 Ceph OSD 磁盘来替换节点。
- 通过重新安装操作系统和使用所有新的 Ceph OSD 磁盘来替换节点。
有关每个节点的替换场景的高级工作流,请参阅 link:https://docs.redhat.com/en/documentation/red_hat_ceph_storage/8/html-single/operations_guide/#ops_workflow-for 替换-a-node[用于替换节点的工作流]。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 失败的节点。
12.1. 在添加或删除节点前的注意事项 复制链接链接已复制到粘贴板!
Ceph 的一个未完成的功能是能够在运行时添加或删除 Ceph OSD 节点。这意味着,您可以在不关闭存储集群的情况下调整存储集群容量或替换硬件的大小。
在存储集群处于 degraded
状态时,为 Ceph 客户端提供服务的能力也具有操作优势。例如,您可以在常规工作时间内添加或删除硬件,而不是在工作时间外或周末操作。但是,添加和删除 Ceph OSD 节点可能会对性能产生重大影响。
在添加或删除 Ceph OSD 节点前,请考虑以下对存储集群性能的影响:
- 无论您要扩展或减少存储容量,添加或删除 Ceph OSD 节点,都会降低回填存储集群重新平衡。在进行重新平衡期间,Ceph 使用额外的资源,这可能会影响存储集群性能。
- 在生产环境的 Ceph 存储集群中,Ceph OSD 节点具有特定的硬件配置,有助于实现特定类型的存储策略。
- 由于 Ceph OSD 节点是 CRUSH 层次结构中的一部分,因此添加或删除节点的性能通常会影响使用 CRUSH 规则集的池的性能。
12.2. 替换节点的工作流 复制链接链接已复制到粘贴板!
有三个节点故障场景。在替换节点时,为每个场景使用这些高级别工作流。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 失败的节点。
12.2.1. 使用来自故障节点的 root 和 Ceph OSD 磁盘替换节点 复制链接链接已复制到粘贴板!
使用故障节点的 root 和 Ceph OSD 磁盘来替换节点。
流程
禁用回填。
语法
ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub
ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换节点,从旧节点获取磁盘,并将它们添加到新节点。
启用回填。
语法
ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub
ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.2. 通过重新安装操作系统并使用来自故障节点的 Ceph OSD 磁盘替换节点 复制链接链接已复制到粘贴板!
重新安装操作系统,并使用故障节点中的 Ceph OSD 磁盘来替换节点。
流程
禁用回填。
语法
ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub
ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Ceph 配置的备份。
语法
cp /etc/ceph/ceph.conf /PATH_TO_BACKUP_LOCATION/ceph.conf
cp /etc/ceph/ceph.conf /PATH_TO_BACKUP_LOCATION/ceph.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# cp /etc/ceph/ceph.conf /some/backup/location/ceph.conf
[ceph: root@host01 /]# cp /etc/ceph/ceph.conf /some/backup/location/ceph.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换节点,再添加来自故障节点的 Ceph OSD 磁盘。
将磁盘配置为 JBOD。
注意这应该由存储管理员完成。
安装操作系统。有关操作系统要求的更多信息,请参阅 Red Hat Ceph Storage 的操作系统要求。有关安装操作系统的更多信息,请参阅 Red Hat Enterprise Linux 产品文档。
注意这应该由系统管理员完成。
恢复 Ceph 配置。
语法
cp /PATH_TO_BACKUP_LOCATION/ceph.conf /etc/ceph/ceph.conf
cp /PATH_TO_BACKUP_LOCATION/ceph.conf /etc/ceph/ceph.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# cp /some/backup/location/ceph.conf /etc/ceph/ceph.conf
[ceph: root@host01 /]# cp /some/backup/location/ceph.conf /etc/ceph/ceph.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用 Ceph 编排器命令将新节点添加到存储集群。Ceph 守护进程自动放置到对应的节点上。有关更多信息,请参阅 添加 Ceph OSD 节点。
启用回填。
语法
ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub
ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.3. 通过重新安装操作系统和使用所有新 Ceph OSD 磁盘来替换节点 复制链接链接已复制到粘贴板!
重新安装操作系统,并使用所有新的 Ceph OSD 磁盘来替换节点。
流程
禁用回填。
语法
ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub
ceph osd set noout ceph osd set noscrub ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从存储集群中移除故障节点上的所有 OSD。有关更多信息,请参阅 删除 Ceph OSD 节点。
创建 Ceph 配置的备份。
语法
cp /etc/ceph/ceph.conf /PATH_TO_BACKUP_LOCATION/ceph.conf
cp /etc/ceph/ceph.conf /PATH_TO_BACKUP_LOCATION/ceph.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# cp /etc/ceph/ceph.conf /some/backup/location/ceph.conf
[ceph: root@host01 /]# cp /etc/ceph/ceph.conf /some/backup/location/ceph.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换节点,再添加来自故障节点的 Ceph OSD 磁盘。
将磁盘配置为 JBOD。
注意这应该由存储管理员完成。
安装操作系统。有关操作系统要求的更多信息,请参阅 Red Hat Ceph Storage 的操作系统要求。有关安装操作系统的更多信息,请参阅 Red Hat Enterprise Linux 产品文档。
注意这应该由系统管理员完成。
- 使用 Ceph 编排器命令将新节点添加到存储集群。Ceph 守护进程自动放置到对应的节点上。有关更多信息,请参阅 添加 Ceph OSD 节点。
启用回填。
语法
ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub
ceph osd unset noout ceph osd unset noscrub ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. 性能考虑 复制链接链接已复制到粘贴板!
在添加或删除 Ceph OSD 节点时,以下因素通常会影响存储集群的性能:
- Ceph 客户端将负载放到 Ceph 的 I/O 接口上;也就是说,客户端会将负载放入池。池映射到 CRUSH 规则集。底层 CRUSH 层次结构允许 Ceph 在故障域之间放置数据。如果底层 Ceph OSD 节点涉及有高客户端负载的池,客户端负载可能会显著影响恢复时间和降低性能。因为写入操作需要数据复制才能进行持久性,特别是写入密集型客户端负载可能会增加存储集群的时间来恢复。
- 通常,添加或删除的容量会影响存储集群的恢复时间。另外,您添加或删除的节点的存储密度可能会影响恢复时间。例如,具有 36 个 OSD 的节点通常需要更长的时间来恢复具有 12 个 OSD 的节点。
-
移除节点时,您需要确保有足够的备用容量,以便您的系统不会达到
全满比率
或接近满
比率。如果存储集群达到全满比率
,Ceph 将挂起写操作以防止数据丢失。 - Ceph OSD 节点映射到至少一个 Ceph CRUSH 层次结构,层次结构则映射到至少一个池。在添加或删除 Ceph OSD 节点时,使用 CRUSH 规则集的每个池都会遇到性能影响。
-
复制池往往使用更多网络带宽来复制数据的深度副本,而纠删代码池则倾向于使用更多 CPU 来计算
k+m
编码区块。数据存在的更多副本,存储集群需要更长的时间来恢复。例如,一个大于k+m
块的大池或一个要比同一数据副本较少的复制池恢复的时间要更长。 - 驱动器、控制器和网络接口卡都有可能影响恢复时间的吞吐量特征。通常,具有更高吞吐量的节点(如 10 Gbps 和 SSD)可以比具有较低吞吐量的节点快速恢复,如 1 Gbps 和 SATA 驱动器。
12.4. 添加或删除节点的建议 复制链接链接已复制到粘贴板!
红帽建议在一个节点中逐一添加或删除一个 OSD,并在继续执行下一个 OSD 前恢复存储集群。这有助于最大程度降低对存储集群性能的影响。请注意,如果某个节点失败,您可能需要一次性更改整个节点,而不是一次更改一个 OSD。
移除 OSD:
添加 OSD:
在添加或删除 Ceph OSD 节点时,请考虑其他持续进程也会影响存储集群性能。要减少对客户端 I/O 的影响,红帽向您推荐以下几项:
计算容量
在移除 Ceph OSD 节点之前,请确保存储集群可以回填所有 OSD 的内容,而不会达到全满比率
。达到 全满比率
将导致存储集群拒绝写操作。
临时禁用清理
清理是确保存储集群数据的持久性非常重要,但这是资源密集型。在添加或删除 Ceph OSD 节点之前,禁用清理和深度清理,并使当前清理操作在继续之前完成。
ceph osd set noscrub ceph osd set nodeep-scrub
ceph osd set noscrub
ceph osd set nodeep-scrub
在添加或删除 Ceph OSD 节点且存储集群返回 active+clean
状态后,取消设置 noscrub
和 nodeep-scrub
设置。
ceph osd unset noscrub ceph osd unset nodeep-scrub
ceph osd unset noscrub
ceph osd unset nodeep-scrub
限制回填和恢复
如果您有合理的数据持久性,则处于 degraded
状态应该不会出现问题。例如,您可以使用 osd_pool_default_size = 3
和 osd_pool_default_min_size = 2
来运行存储集群。您可以调整存储集群以最快的恢复时间,但这样做会对 Ceph 客户端 I/O 性能造成重大影响。要保持最高的 Ceph 客户端 I/O 性能,请限制回填和恢复操作,并允许它们花费更长的时间。
osd_max_backfills = 1 osd_recovery_max_active = 1 osd_recovery_op_priority = 1
osd_max_backfills = 1
osd_recovery_max_active = 1
osd_recovery_op_priority = 1
您还可以考虑设置 sleep 和 delay 参数,如 osd_recovery_sleep
。
增加放置组数量
最后,如果您扩展存储集群的大小,可能需要增加放置组的数量。如果您确定需要扩展放置组数量,红帽建议在放置组数量中进行增量增长。通过显著数量增加放置组的数量会导致性能下降。
12.5. 添加 Ceph OSD 节点 复制链接链接已复制到粘贴板!
要扩展 Red Hat Ceph Storage 集群的容量,您可以添加 OSD 节点。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 具有网络连接的置备节点。
流程
- 通过短主机名验证存储集群中的其他节点是否可以访问新节点。
临时禁用清理:
示例
[ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
[ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 限制回填和恢复功能:
语法
ceph tell DAEMON_TYPE.* injectargs --OPTION_NAME VALUE [--OPTION_NAME VALUE]
ceph tell DAEMON_TYPE.* injectargs --OPTION_NAME VALUE [--OPTION_NAME VALUE]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
[ceph: root@host01 /]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将集群的公共 SSH 密钥提取到文件夹:
语法
ceph cephadm get-pub-key > ~/PATH
ceph cephadm get-pub-key > ~/PATH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph cephadm get-pub-key > ~/ceph.pub
[ceph: root@host01 /]# ceph cephadm get-pub-key > ~/ceph.pub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 ceph 集群的公共 SSH 密钥复制到新主机上的 root 用户的
authorized_keys
文件中:语法
ssh-copy-id -f -i ~/PATH root@HOST_NAME_2
ssh-copy-id -f -i ~/PATH root@HOST_NAME_2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ssh-copy-id -f -i ~/ceph.pub root@host02
[ceph: root@host01 /]# ssh-copy-id -f -i ~/ceph.pub root@host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新节点添加到 CRUSH map:
语法
ceph orch host add NODE_NAME IP_ADDRESS
ceph orch host add NODE_NAME IP_ADDRESS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch host add host02 10.10.128.70
[ceph: root@host01 /]# ceph orch host add host02 10.10.128.70
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为节点上的每个磁盘添加一个 OSD 到存储集群。
将 OSD 节点添加到 Red Hat Ceph Storage 集群时,红帽建议一次添加一个 OSD 守护进程,并允许集群在进入下一个 OSD 前恢复到 active+clean
状态。
12.6. 删除 Ceph OSD 节点 复制链接链接已复制到粘贴板!
要减少存储集群的容量,请删除 OSD 节点。
在移除 Ceph OSD 节点之前,请确保存储集群可以回填所有 OSD 的内容,而无需达到全满比率
。达到 全满比率
将导致存储集群拒绝写操作。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对存储集群中所有节点的根级别访问权限。
流程
检查存储集群的容量:
语法
ceph df rados df ceph osd df
ceph df rados df ceph osd df
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 临时禁用清理:
语法
ceph osd set noscrub ceph osd set nodeep-scrub
ceph osd set noscrub ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 限制回填和恢复功能:
语法
ceph tell DAEMON_TYPE.* injectargs --OPTION_NAME VALUE [--OPTION_NAME VALUE]
ceph tell DAEMON_TYPE.* injectargs --OPTION_NAME VALUE [--OPTION_NAME VALUE]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
[ceph: root@host01 /]# ceph tell osd.* injectargs --osd-max-backfills 1 --osd-recovery-max-active 1 --osd-recovery-op-priority 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从存储集群中移除节点上的每个 OSD:
使用 使用 Ceph Orchestrator 删除 OSD 守护进程。
重要从存储集群中移除 OSD 节点时,红帽建议在节点中一次删除一个 OSD,并允许集群恢复到
active+clean
状态,然后继续移除下一个 OSD。移除 OSD 后,检查以验证存储集群是否没有达到
near-full 比率
:语法
ceph -s ceph df
ceph -s ceph df
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重复此步骤,直到将节点上的所有 OSD 从存储集群中移除。
删除所有 OSD 后,删除主机:
- 使用 Ceph 编排器 删除主机。
12.7. 模拟节点故障 复制链接链接已复制到粘贴板!
要模拟节点故障,请关闭节点并重新安装操作系统。
先决条件
- 一个正常运行的 Red Hat Ceph Storage 集群。
- 对存储集群中所有节点的 root 级别访问。
流程
检查存储集群的容量以了解删除节点的影响:
示例
[ceph: root@host01 /]# ceph df [ceph: root@host01 /]# rados df [ceph: root@host01 /]# ceph osd df
[ceph: root@host01 /]# ceph df [ceph: root@host01 /]# rados df [ceph: root@host01 /]# ceph osd df
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)禁用恢复和回填:
示例
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
[ceph: root@host01 /]# ceph osd set noout [ceph: root@host01 /]# ceph osd set noscrub [ceph: root@host01 /]# ceph osd set nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 关闭节点。
如果要更改主机名,请从 CRUSH 映射中删除节点:
示例
[ceph: root@host01 /]# ceph osd crush rm host03
[ceph: root@host01 /]# ceph osd crush rm host03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查存储集群的状态:
示例
[ceph: root@host01 /]# ceph -s
[ceph: root@host01 /]# ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在节点上重新安装操作系统。
添加新节点:
- 使用 Ceph 编排器 添加主机。
(可选)启用恢复和回填:
示例
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
[ceph: root@host01 /]# ceph osd unset noout [ceph: root@host01 /]# ceph osd unset noscrub [ceph: root@host01 /]# ceph osd unset nodeep-scrub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Ceph 的健康状况:
示例
[ceph: root@host01 /]# ceph -s
[ceph: root@host01 /]# ceph -s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 13 章 处理数据中心故障 复制链接链接已复制到粘贴板!
作为存储管理员,您可以采取预防措施来避免数据中心故障。这些防止措施包括:
- 配置数据中心基础架构.
- 在 CRUSH map 层次结构中设置故障域。
- 在域中设计故障节点。
先决条件
- 一个正常运行的 Red Hat Ceph Storage 集群。
- 对存储集群中所有节点的根级别访问权限。
13.1. 避免数据中心故障 复制链接链接已复制到粘贴板!
配置数据中心基础架构
扩展集群中的每个数据中心都可以有不同的存储集群配置,以反映本地的功能和依赖项。设置数据中心之间的复制,以帮助保留数据。如果一个数据中心失败,则存储集群中的其他数据中心包含数据的副本。
在 CRUSH map 层次结构中设置故障域
故障或故障转移,域是存储集群中域的冗余副本。如果活动域失败,则故障域将变为活动域。
默认情况下,CRUSH map 在扁平层次结构中列出存储群集中所有节点。但是,为获得最佳结果,在 CRUSH map 中创建一个逻辑层次结构。层次结构指定每个节点的域以及存储集群中这些域之间的关系,包括故障域。在层次结构中定义每个域的故障域可提高存储集群的可靠性。
当计划包含多个数据中心的存储集群时,将节点放置在 CRUSH map 层次结构中,以便在一个数据中心停机时,存储集群将保持启动并运行。
在域中设计故障节点
如果您计划在存储集群中使用三路复制数据,请考虑故障域中节点的位置。如果在数据中心内发生中断,某些数据可能只位于一个副本中。当发生这种情况时,有两个选项:
- 将数据保留为只读状态,并将数据保留为标准设置。
- 在停机期间只有一个副本。
使用标准设置,由于数据在节点间的数据放置的随机性,不是所有数据都会受到影响,一些数据只能有一个副本,而存储集群将恢复到只读模式。但是,如果一些数据只存在于一个副本中,则存储集群会恢复到只读模式。
13.2. 处理数据中心故障 复制链接链接已复制到粘贴板!
Red Hat Ceph Storage 可能会对基础架构造成灾难性故障,例如在扩展集群中丢失一个数据中心。对于标准对象存储用例,可通过之间设置来独立配置所有三个数据中心。在这种情况下,每个数据中心的存储集群配置可能会有所不同,反映本地功能和依赖项。
应考虑放置层次结构的逻辑结构。可以使用适当的 CRUSH map,反映基础架构中故障域的层次结构。使用逻辑分级定义可提高存储集群的可靠性,而不是使用标准分级定义。故障域在 CRUSH 映射中定义。默认 CRUSH map 包含扁平层次结构中的所有节点。在三个数据中心环境中,如扩展集群,节点放置应以一个数据中心停机的方式进行管理,但存储集群可以保持启动并运行。在为数据使用三向复制时,请考虑节点位于哪个故障域中。
在以下示例中,生成的 map 源自存储集群的初始设置,包含 6 个 OSD 节点。在本例中,所有节点都只有一个磁盘,因此有一个 OSD。所有节点在默认 root 下排列,这是层次结构树的标准 root。由于分配给两个 OSD 的权重,这些 OSD 接收比其他 OSD 更少的数据区块。这些节点比初始 OSD 磁盘大于初始 OSD 磁盘而稍后引入。这不会影响到一组节点失败的数据放置。
示例
使用逻辑分层定义将节点分组到同一数据中心可以达到数据放置成熟度。可能的定义类型 root, datacenter, rack, row 和 host 可以反映出三个数据中心扩展集群的故障域:
- 节点 host01 和 host02 位于数据中心 1(DC1)
- 节点 host03 和 host05 位于数据中心 2(DC2)
- 节点 host04 和 host06 位于数据中心 3(DC3)
- 所有数据中心都属于相同的结构(allDC)
由于主机中的所有 OSD 都属于主机定义,因此不需要更改。所有其他分配可在存储集群的运行时调整:
使用以下命令定义 bucket 结构:
ceph osd crush add-bucket allDC root ceph osd crush add-bucket DC1 datacenter ceph osd crush add-bucket DC2 datacenter ceph osd crush add-bucket DC3 datacenter
ceph osd crush add-bucket allDC root ceph osd crush add-bucket DC1 datacenter ceph osd crush add-bucket DC2 datacenter ceph osd crush add-bucket DC3 datacenter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过修改 CRUSH map,将节点移到此结构中的相应位置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在此结构中,也可以添加任何新主机以及新磁盘。将 OSD 放置到层次结构中的正确位置,即 CRUSH 算法将冗余部分放入结构中的不同故障域中。
上例结果如下:
示例
以上列表通过显示 osd 树来显示生成的 CRUSH map。便于查看现在,主机属于数据中心和所有数据中心如何属于相同的顶级结构,但清晰区分位置。
根据映射将数据放在正确的位置,只在健康的集群中正常工作。当某些 OSD 不可用时,misplacement 可能会发生。这些错误替换会在可能这样做后自动更正。
其它资源
- 如需更多信息,请参阅 Red Hat Ceph Storage 策略指南中的 CRUSH 管理 章节。