5.2. 安装 Red Hat Ceph Storage 集群

使用 Ansible 应用程序和 ceph-ansible playbook 在裸机或容器中安装 Red Hat Ceph Storage。在生产环境中使用 Ceph 存储集群时,必须至少有三个监控节点和三个 OSD 节点,其中包含多个 OSD 守护进程。生产环境中运行的典型 Ceph 存储群集通常包含十个或更多个节点。

在以下步骤中,从 Ansible 管理节点运行命令,除非另有指示。除非另有指定,否则此流程适用于裸机和容器部署。

重要

Ceph 可以使用一个监控器运行;但是,为了保证生产环境集群中的高可用性,红帽将仅支持具有至少三个 monitor 节点的部署。

重要

在 Red Hat Enterprise Linux 7.7 上的容器中部署 Red Hat Ceph Storage 4 将在 Red Hat Enterprise Linux 8 容器镜像上部署 Red Hat Ceph Storage 4。

先决条件

  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • 用于 Ansible 应用的 ansible 用户帐户。
  • 启用 Red Hat Ceph Storage Tools 和 Ansible 存储库
  • 对于 ISO 安装,将最新的 ISO 镜像下载到 Ansible 节点上。请参阅Red Hat Ceph Storage 安装指南中的启用红帽 Ceph 存储存储库一章中有关 ISO 安装的章节。

流程

  1. 在 Ansible 管理节点上,作为 root 用户帐户登录。
  2. 对于所有部署(裸机容器),请安装 ceph-ansible 软件包:

    Red Hat Enterprise Linux 7

    [root@admin ~]# yum install ceph-ansible

    Red Hat Enterprise Linux 8

    [root@admin ~]# dnf install ceph-ansible

  3. 进入 /usr/share/ceph-ansible/ 目录:

    [root@admin ~]# cd /usr/share/ceph-ansible
  4. 创建新的 yml 文件:

    [root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml
    [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml
    1. 裸机部署:

      [root@admin ceph-ansible]# cp site.yml.sample site.yml
    2. 容器部署:

      [root@admin ceph-ansible]# cp site-container.yml.sample site-container.yml
  5. 编辑新文件。

    1. 打开以编辑 group_vars/all.yml 文件。

      重要

      不支持使用自定义存储集群名称。不要将 cluster 参数设置为 ceph 以外的任何值。仅支持使用自定义存储集群名称的 Ceph 客户端,例如:librados、Ceph 对象网关和 RADOS 块设备镜像。

      警告

      默认情况下,Ansible 会尝试重启已安装但屏蔽的 firewalld 服务,这可能会导致 Red Hat Ceph Storage 部署失败。要临时解决这个问题,请在 all.yml 文件中将 configure_firewall 选项设置为 false。如果您正在运行 firewalld 服务,则不需要在 all.yml 文件中使用 configure_firewall 选项。

      注意

      ceph_rhcs_version 选项设置为 4 将引入最新版本的 Red Hat Ceph Storage 4。

      注意

      红帽建议在 group_vars/all.yml 文件中将 dashboard_enabled 选项设置为 True,而不要将它改为 False。如果要禁用仪表板 ,请参阅禁用 Ceph 仪表板

      注意

      与仪表板相关的组件已容器化。因此,对于 Bare-metalContainer 部署,必须包含 ceph_docker_registry_usernameceph_docker_registry_password 参数,以便 ceph-ansible 能够获取控制面板所需的容器镜像。

      注意

      如果您没有 Red Hat Registry Service Account,请使用 Registry Service Account 网页 创建一个。如需了解如何创建和管理令牌的详细信息,请参阅 Red Hat Container Registry Authentication 知识库。

      注意

      除了将服务帐户用于 ceph_docker_registry_usernameceph_docker_registry_password 参数外,您还可以使用客户门户凭据,但若要确保安全性,可以对 ceph_docker_registry_password 参数进行加密。如需更多信息,请参阅使用 ansible-vault 加密 Ansible 密码变量

      1. CDN 安装的 all.yml 文件的 裸机 示例:

        fetch_directory: ~/ceph-ansible-keys
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: cdn
        ceph_rhcs_version: 4
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_registry: registry.redhat.io
        ceph_docker_registry_auth: true
        ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
        ceph_docker_registry_password: TOKEN
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
        alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
        1
        这是公共网络上的接口。
        重要

        从 Red Hat Ceph Storage 4.1 开始,您必须在 /usr/share/ceph-ansible/group_vars/all.yml 中取消注释或设置 dashboard_admin_passwordgrafana_admin_password。为每个用户设置安全密码.另外,为 dashboard_admin_usergrafana_admin_user 设置自定义用户名。

        注意

        对于 Red Hat Ceph Storage 4.2,如果您使用本地 registry 进行安装,请使用 4.6 作为 Prometheus 镜像标签。

      2. ISO 安装的 all.yml 文件的 裸机 示例:

        fetch_directory: ~/ceph-ansible-keys
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: iso
        ceph_rhcs_iso_path: /home/rhceph-4-rhel-8-x86_64.iso
        ceph_rhcs_version: 4
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_registry: registry.redhat.io
        ceph_docker_registry_auth: true
        ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
        ceph_docker_registry_password: TOKEN
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
        alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
        1
        这是公共网络上的接口。
      3. all.yml 文件的容器示例:

        fetch_directory: ~/ceph-ansible-keys
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_image: rhceph/rhceph-4-rhel8
        ceph_docker_image_tag: latest
        containerized_deployment: true
        ceph_docker_registry: registry.redhat.io
        ceph_docker_registry_auth: true
        ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
        ceph_docker_registry_password: TOKEN
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: cdn
        ceph_rhcs_version: 4
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: registry.redhat.io/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
        alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6
        1
        这是公共网络上的接口。
        重要

        查看红帽生态系统目录中的最新容器镜像标签,以安装最新的容器镜像,并应用所有最新的补丁。

      4. all.yml 文件的容器示例,当 Red Hat Ceph Storage 节点在部署过程中无法访问互联网:

        fetch_directory: ~/ceph-ansible-keys
        monitor_interface: eth0 1
        public_network: 192.168.0.0/24
        ceph_docker_image: rhceph/rhceph-4-rhel8
        ceph_docker_image_tag: latest
        containerized_deployment: true
        ceph_docker_registry: LOCAL_NODE_FQDN:5000
        ceph_docker_registry_auth: false
        ceph_origin: repository
        ceph_repository: rhcs
        ceph_repository_type: cdn
        ceph_rhcs_version: 4
        dashboard_admin_user:
        dashboard_admin_password:
        node_exporter_container_image: LOCAL_NODE_FQDN:5000/openshift4/ose-prometheus-node-exporter:v4.6
        grafana_admin_user:
        grafana_admin_password:
        grafana_container_image: LOCAL_NODE_FQDN:5000/rhceph/rhceph-4-dashboard-rhel8
        prometheus_container_image: LOCAL_NODE_FQDN:5000/openshift4/ose-prometheus:4.6
        alertmanager_container_image: LOCAL_NODE_FQDN:5000/openshift4/ose-prometheus-alertmanager:4.6
        1
        这是公共网络上的接口。
        替换
        • LOCAL_NODE_FQDN,使用您的本地主机 FQDN。
      5. 从 Red Hat Ceph Storage 4.2 开始,dashboard_protocol 设置为 https,Ansible 将生成仪表板和 grafana 密钥和证书。对于自定义证书,在 all.yml 文件中,为 裸机容器 部署更新 dashboard_crtdashboard_keygrafana_crtgrafana_key 的 Ansible 安装程序主机的路径。

        语法

        dashboard_protocol: https
        dashboard_port: 8443
        dashboard_crt: 'DASHBOARD_CERTIFICATE_PATH'
        dashboard_key: 'DASHBOARD_KEY_PATH'
        dashboard_tls_external: false
        dashboard_grafana_api_no_ssl_verify: "{{ True if dashboard_protocol == 'https' and not grafana_crt and not grafana_key else False }}"
        grafana_crt: 'GRAFANA_CERTIFICATE_PATH'
        grafana_key: 'GRAFANA_KEY_PATH'

    2. 要使用可通过 http 或 https 代理访问的容器 registry 安装 Red Hat Ceph Storage,请在 group_vars/all.yml 文件中设置 ceph_docker_http_proxyceph_docker_https_proxy 变量。

      示例

      ceph_docker_http_proxy: http://192.168.42.100:8080
      ceph_docker_https_proxy: https://192.168.42.100:8080

      如果您需要排除代理配置的一些主机,请使用 group_vars/all.yml 文件中的 ceph_docker_no_proxy 变量。

      示例

      ceph_docker_no_proxy: "localhost,127.0.0.1"

    3. 除了为 Red Hat Ceph Storage 的代理安装编辑 all.yml 文件外,编辑 /etc/environment 文件:

      示例

      HTTP_PROXY: http://192.168.42.100:8080
      HTTPS_PROXY: https://192.168.42.100:8080
      NO_PROXY: "localhost,127.0.0.1"

      这会触发 podman 启动容器化服务,如 prometheus、grafana-server、alertmanager 和 node-exporter,并下载所需的镜像。

    4. 对于 裸机容器中的所有部署,请编辑 group_vars/osds.yml 文件。

      重要

      不要在安装操作系统的设备上安装 OSD。在操作系统和 OSD 之间共享相同的设备会导致性能问题。

      Ceph-ansible 使用 ceph-volume 工具准备存储设备,供 Ceph 使用。您可以将 osds.yml 配置为以不同的方式使用存储设备,以优化特定工作负载的性能。

      重要

      以下示例使用 BlueStore 对象存储,即 Ceph 用于存储设备上数据的格式。在以前的版本中,Ceph 使用 FileStore 作为对象存储。这种格式对于新的 Red Hat Ceph Storage 4.0 安装已弃用,因为 BlueStore 提供了更多功能和更高的性能。虽然仍可使用 FileStore,但使用它需要红帽支持例外。如需有关 BlueStore 的更多信息,请参阅 Red Hat Ceph Storage 架构指南中的 Ceph BlueStore

      1. 自动发现

        osd_auto_discovery: true

        上例使用系统上的所有空存储设备来创建 OSD,因此您不必显式指定它们。ceph-volume 工具检查是否有空设备,因此不会使用不为空的设备。

        注意

        如果稍后决定使用 purge-docker-cluster.ymlpurge-cluster.yml 来删除集群,您必须注释掉 osd_auto_discovery,并声明 osds.yml 文件中的 OSD 设备。如需更多信息,请参阅 Ansible 部署的存储集群

      2. 简单配置

        第一个场景

        devices:
          - /dev/sda
          - /dev/sdb

        第二个场景

        devices:
          - /dev/sda
          - /dev/sdb
          - /dev/nvme0n1
          - /dev/sdc
          - /dev/sdd
          - /dev/nvme1n1

        第三个场景

        lvm_volumes:
           - data: /dev/sdb
           - data: /dev/sdc

        第四个场景

        lvm_volumes:
            - data: /dev/sdb
            - data:/dev/nvme0n1

        当仅使用 devices 选项时,ceph-volume lvm batch 模式会自动优化 OSD 配置。

        在第一个场景中,如果 devices 是传统的硬盘驱动器或 SSD,则每个设备会创建一个 OSD。

        在第二种场景中,如果结合了传统的硬盘驱动器和 SSD,数据将放置在传统的硬盘驱动器(sdasdb)上,并且将 BlueStore 数据库尽可能在 SSD (nvme0n1) 上创建。同样,无论上述设备顺序如何,数据都放置在传统的硬盘驱动器(sdcsdd)上,而 BlueStore 数据库则在 SSD nvme1n1 上创建。

        注意

        默认情况下,ceph-ansible 不会覆盖 bluestore_block_db_sizebluestore_block_wal_size 的默认值。您可以使用 group_vars/all.yml 文件中的 ceph_conf_overrides 设置 bluestore_block_db_sizebluestore_block_db_size 的值应大于 2 GB。

        在第三个场景中,数据放置在传统硬盘驱动器(sdbsdc)上,而 BlueStore 数据库则在同一设备上并置。

        在第四个场景中,数据放置在传统的硬盘驱动器 (sdb) 和 SSD (nvme1n1) 上,并且 BlueStore 数据库同时驻留在同一设备上。这不同于使用 devices 指令,将 BlueStore 数据库放置在 SSD 上。

        重要

        ceph-volume lvm batch mode 通过将数据放置在传统硬盘驱动器上以及 SSD 上的 BlueStore 数据库来创建优化的 OSD 配置。如果要指定要使用的逻辑卷和卷组,您可以直接按照以下高级配置场景创建它们。

      3. 高级配置

        第一个场景

        devices:
          - /dev/sda
          - /dev/sdb
        dedicated_devices:
          - /dev/sdx
          - /dev/sdy

        第二个场景

        devices:
          - /dev/sda
          - /dev/sdb
        dedicated_devices:
          - /dev/sdx
          - /dev/sdy
        bluestore_wal_devices:
          - /dev/nvme0n1
          - /dev/nvme0n2

        在第一种场景中,有两个 OSD。sdasdb 设备各自都有自己的数据片段和 WAL(write-ahead logs)。额外的字典 dedicated_devices 用于分别在 sdxsdy 上隔离其数据库,也称为 block.db

        在第二个场景中,使用另一个额外的字典 bluestore_wal_devices 来隔离 NVMe devices nvme0n1nvme0n2 上的 WAL。通过使用 devicesdedicated_devicesbluestore_wal_devices 选项,您可以将 OSD 的所有组件隔离到单独的设备上。像这样布置 OSD 可以提高整体性能。

      4. 预先创建的逻辑卷

        第一个场景

        lvm_volumes:
          - data: data-lv1
            data_vg: data-vg1
            db: db-lv1
            db_vg: db-vg1
            wal: wal-lv1
            wal_vg: wal-vg1
          - data: data-lv2
            data_vg: data-vg2
            db: db-lv2
            db_vg: db-vg2
            wal: wal-lv2
            wal_vg: wal-vg2

        第二个场景

        lvm_volumes:
          - data: /dev/sdb
            db:    db-lv1
            db_vg: db-vg1
            wal: wal-lv1
            wal_vg: wal-vg1

        默认情况下,Ceph 使用逻辑卷管理器在 OSD 设备上创建逻辑卷。在上述简单配置高级配置示例中,Ceph 会自动在设备上创建逻辑卷。您可以通过指定 lvm_volumes 字典,将之前创建的逻辑卷用于 Ceph。

        在第一种场景中,数据放置在专用逻辑卷、数据库和 WAL 上。您还可以仅指定数据、数据和 WAL,或数据和数据库。data: 行必须指定要存储数据的逻辑卷名称,data_vg: 必须指定包含数据逻辑卷的卷组的名称。同样,db: 用于指定数据库存储在 上的逻辑卷,而 db_vg: 用于指定其逻辑卷所在的卷组。wal: 行指定 WAL 存储的逻辑卷,而 wal_vg: 行则指定包含它的卷组。

        在第二种场景中,为 data: 选项设置实际设备名称,这样做不需要指定 data_vg: 选项。您必须为 BlueStore 数据库和 WAL 设备指定逻辑卷名称和卷组详情。

        重要

        使用 lvm_volumes: 必须事先创建卷组和逻辑卷。ceph-ansible 不会创建卷组和逻辑卷。

        注意

        如果使用所有 NVMe SSD,则设置 osds_per_device: 2。如需更多信息,请参阅 Red Hat Ceph Storage 安装指南为所有 NVMe 存储配置 OSD Ansible 设置

        注意

        重启 Ceph OSD 节点后,块设备分配可能会改变。例如,sdc 可能成为 sdd。您可以使用持久的命名设备,如 /dev/disk/by-path/ 设备路径,而不是传统的块设备名称。

  6. 对于裸机容器中的所有部署,请创建 Ansible 清单文件,然后打开它进行编辑:

    [root@admin ~]# cd /usr/share/ceph-ansible/
    [root@admin ceph-ansible]# touch hosts

    相应地编辑 hosts 文件。

    注意

    有关编辑 Ansible 清单位置的信息,请参阅配置 Ansible 清单位置

    1. [grafana-server] 下添加一个节点。此角色安装 Grafana 和 Prometheus,以提供 Ceph 集群性能的实时洞察。这些指标显示在 Ceph 控制面板中,您可以通过它来监控和管理集群。需要安装仪表板、Grafana 和 Prometheus。您可以在 Ansible 管理节点上并置指标功能。如果这样做,请确保节点的系统资源大于独立指标节点所需的值

      [grafana-server]
      GRAFANA-SERVER_NODE_NAME
    2. [mons] 部分添加 monitor 节点:

      [mons]
      MONITOR_NODE_NAME_1
      MONITOR_NODE_NAME_2
      MONITOR_NODE_NAME_3
    3. [osds] 部分下添加 OSD 节点:

      [osds]
      OSD_NODE_NAME_1
      OSD_NODE_NAME_2
      OSD_NODE_NAME_3
      注意

      如果节点名称是按照数字有顺序的,您可以在节点名称的末尾添加一个范围指定符 ([1:10])。例如:

      [osds]
      example-node[1:10]
      注意

      对于新安装的 OSD,默认的对象存储格式为 BlueStore。

    4. 另外,在容器部署中,通过在 [mon][osd] 部分下添加相同的节点,将 Ceph 监控守护进程与一个节点上的 Ceph OSD 守护进程共存。有关更多信息,请参见下面附加资源部分中的 Ceph 守护进程链接。
    5. [mgrs] 部分下,添加 Ceph Manager (ceph-mgr) 节点。这会将 Ceph 管理器守护进程与 Ceph 监控守护进程共存。

      [mgrs]
      MONITOR_NODE_NAME_1
      MONITOR_NODE_NAME_2
      MONITOR_NODE_NAME_3
  7. 另外,如果您想要使用主机特定参数,对于所有部署(裸机容器中 ),创建 host_vars 目录,其中包含主机文件,使其包含特定于主机的任何参数。

    1. 创建 host_vars 目录:

      [ansible@admin ~]$ mkdir /usr/share/ceph-ansible/host_vars
    2. 进入 host_vars 目录:

      [ansible@admin ~]$ cd /usr/share/ceph-ansible/host_vars
    3. 创建主机文件。将 host-name-short-name 格式用于文件名称,例如:

      [ansible@admin host_vars]$ touch tower-osd6
    4. 使用任何主机特定参数更新该文件,例如:

      1. 裸机部署中,使用 devices 参数指定 OSD 节点要使用的设备。当 OSD 使用具有不同名称的设备或其中一个设备在其中一个 OSD 上出现故障时,使用 devices 会比较有用。

        devices:
            DEVICE_1
            DEVICE_2

        示例

        devices:
            /dev/sdb
            /dev/sdc

        注意

        在指定没有设备时,将 group_vars/osds.yml 文件中的 osd_auto_discovery 参数设置为 true

  8. 另外,对于所有部署、裸机或 容器 中,您可以使用 Ceph Ansible 创建自定义 CRUSH 层次结构:

    1. 设置 Ansible 清单文件。使用 osd_crush_location 参数,指定 OSD 主机处于 CRUSH map 的层次结构中的位置。您必须指定至少两种 CRUSH bucket 类型来指定 OSD 的位置,一种 bucket 类型 必须是 host。默认情况下,包括 root, datacenter, room, row, pod, pdu, rack, chassishost

      语法

      [osds]
      CEPH_OSD_NAME osd_crush_location="{ 'root': ROOT_BUCKET_', 'rack': 'RACK_BUCKET', 'pod': 'POD_BUCKET', 'host': 'CEPH_HOST_NAME' }"

      示例

      [osds]
      ceph-osd-01 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'pod': 'monpod', 'host': 'ceph-osd-01' }"

    2. 编辑 group_vars/osds.yml 文件,并将 crush_rule_configcreate_crush_tree 参数设置为 True。如果您不想使用默认的 CRUSH 规则,请至少创建一个 CRUSH 规则,例如:

      crush_rule_config: True
      crush_rule_hdd:
          name: replicated_hdd_rule
          root: root-hdd
          type: host
          class: hdd
          default: True
      crush_rules:
        - "{{ crush_rule_hdd }}"
      create_crush_tree: True

      如果您使用更快的 SSD 设备,请按如下所示编辑参数:

      crush_rule_config: True
      crush_rule_ssd:
          name: replicated_ssd_rule
          root: root-ssd
          type: host
          class: ssd
          default: True
      crush_rules:
        - "{{ crush_rule_ssd }}"
      create_crush_tree: True
      注意

      如果未部署 ssdhdd OSD,默认 CRUSH 规则会失败,因为默认规则现在包含 类参数,必须定义。

    3. 创建池,并在 group_vars/clients.yml 文件中创建 crush_rules

      示例

      copy_admin_key: True
      user_config: True
      pool1:
        name: "pool1"
        pg_num: 128
        pgp_num: 128
        rule_name: "HDD"
        type: "replicated"
        device_class: "hdd"
      pools:
        - "{{ pool1 }}"

    4. 查看树:

      [root@mon ~]# ceph osd tree
    5. 验证池:

      [root@mon ~]# for i in $(rados lspools); do echo "pool: $i"; ceph osd pool get $i crush_rule; done
      
      pool: pool1
      crush_rule: HDD
  9. 对于所有部署,裸机容器中,请使用 ansible 用户登录或切换到该容器。

    1. 创建 ceph-ansible-keys 目录,其中 Ansible 存储 ceph-ansible playbook 生成的临时值:

      [ansible@admin ~]$ mkdir ~/ceph-ansible-keys
    2. 进入 /usr/share/ceph-ansible/ 目录:

      [ansible@admin ~]$ cd /usr/share/ceph-ansible/
    3. 验证 Ansible 能否访问 Ceph 节点:

      [ansible@admin ceph-ansible]$ ansible all -m ping -i hosts
  10. 运行 ceph-ansible playbook。

    1. 裸机部署:

      [ansible@admin ceph-ansible]$ ansible-playbook site.yml -i hosts
    2. 容器部署:

      [ansible@admin ceph-ansible]$ ansible-playbook site-container.yml -i hosts
      注意

      如果您将 Red Hat Ceph Storage 部署到 Red Hat Enterprise Linux Atomic Host 主机,请使用 --skip-tags=with_pkg 选项:

      [user@admin ceph-ansible]$ ansible-playbook site-container.yml --skip-tags=with_pkg -i hosts
      注意

      要提高部署速度,请在 ansible-playbook 中使用 --forks 选项。默认情况下,ceph-ansible 将 fork 设置为 20。在这个版本中,最多 20 个节点将同时安装。要一次安装最多 30 个节点,请运行 ansible-playbook --forks 30 PLAYBOOK FILE -i hosts。必须监控管理节点上的资源,以确保它们不会被过度使用。如果是,则减少传递给 --forks 的数字。

  11. 等待 Ceph 部署完成。

    输出示例

    INSTALLER STATUS *******************************
    Install Ceph Monitor           : Complete (0:00:30)
    Install Ceph Manager           : Complete (0:00:47)
    Install Ceph OSD               : Complete (0:00:58)
    Install Ceph RGW               : Complete (0:00:34)
    Install Ceph Dashboard         : Complete (0:00:58)
    Install Ceph Grafana           : Complete (0:00:50)
    Install Ceph Node Exporter     : Complete (0:01:14)
  12. 验证 Ceph 存储集群的状态。

    1. 裸机部署:

      [root@mon ~]# ceph health
      HEALTH_OK
    2. 容器部署:

      Red Hat Enterprise Linux 7

      [root@mon ~]# docker exec ceph-mon-ID ceph health

      Red Hat Enterprise Linux 8

      [root@mon ~]# podman exec ceph-mon-ID ceph health

      替换
      • 使用 Ceph 监控节点的主机名替换 ID

        示例

        [root@mon ~]# podman exec ceph-mon-mon0 ceph health
        HEALTH_OK

  13. 对于裸机容器中的所有部署,使用 rados 验证存储集群是否正常工作。

    1. 从 Ceph 监控节点,创建具有八个放置组 (PG) 的测试池:

      语法

      [root@mon ~]# ceph osd pool create POOL_NAME PG_NUMBER

      示例

      [root@mon ~]# ceph osd pool create test 8

    2. 创建名为 hello-world.txt 的文件:

      语法

      [root@mon ~]# vim FILE_NAME

      示例

      [root@mon ~]# vim hello-world.txt

    3. 使用对象名称 hello-worldhello-world.txt 上传到测试池中:

      语法

      [root@mon ~]# rados --pool POOL_NAME put OBJECT_NAME OBJECT_FILE_NAME

      示例

      [root@mon ~]# rados --pool test put hello-world hello-world.txt

    4. 从 test 池下载 hello-world,保存为 fetch.txt

      语法

      [root@mon ~]# rados --pool POOL_NAME get OBJECT_NAME OBJECT_FILE_NAME

      示例

      [root@mon ~]# rados --pool test get hello-world fetch.txt

    5. 检查 fetch.txt 的内容:

      [root@mon ~]# cat fetch.txt
      "Hello World!"
      注意

      除了验证存储集群状态外,您还可以使用 ceph-medic 工具来全面诊断 Ceph 存储集群。请参阅 Red Hat Ceph Storage 4 故障排除指南中的安装和使用 ceph-medic 来诊断 Ceph 存储集群章节。

其它资源