7.5. 在边缘使用预安装的 Red Hat Ceph Storage 集群

您可以将 Red Hat OpenStack Platform 配置为使用已存在的 Ceph 集群。这称为外部 Ceph 部署。

先决条件

  • 您必须有一个预安装的 Ceph 集群,它与 DCN 站点本地,以便不会超过延迟要求。

流程

  1. 在 Ceph 集群中创建以下池。如果要在中央位置部署,请包含 backupsmetrics 池:

    [root@ceph ~]# ceph osd pool create volumes <_PGnum_>
    [root@ceph ~]# ceph osd pool create images <_PGnum_>
    [root@ceph ~]# ceph osd pool create vms <_PGnum_>
    [root@ceph ~]# ceph osd pool create backups <_PGnum_>
    [root@ceph ~]# ceph osd pool create metrics <_PGnum_>

    将 <_PGnum_> 替换为放置组数量。您可以使用 每个池的 Ceph Placement Groups (PG)计算器 来确定合适的值。

  2. 在 Ceph 中创建 OpenStack 客户端用户,以提供 Red Hat OpenStack Platform 环境对适当池的访问权限:

    ceph auth add client.openstack mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rwx pool=images'

    保存返回的 Ceph 客户端密钥。在配置 undercloud 时,使用此键作为 CephClientKey 参数的值。

    注意

    如果您在中央位置运行此命令,并计划使用 Cinder 备份或遥测服务,请在命令中添加 allow rwx pool=backups,在命令中允许 pool=metrics。

  3. 保存 Ceph Storage 集群的文件系统 ID。Ceph 配置文件的 [global] 部分中的 fsid 参数的值是文件系统 ID:

    [global]
    fsid = 4b5c8c0a-ff60-454b-a1b4-9747aa737d19
    ...

    在配置 undercloud 时,使用这个值作为 CephClusterFSID 参数的值。

  4. 在 undercloud 上,创建一个环境文件来配置节点以连接到非受管 Ceph 集群。使用可识别的命名惯例,如 ceph-external-<SITE>.yaml,其中 SITE 是部署的位置,如 ceph-external-central.yaml、ceph-external-dcn1.yaml 等。

      parameter_defaults:
        # The cluster FSID
        CephClusterFSID: '4b5c8c0a-ff60-454b-a1b4-9747aa737d19'
        # The CephX user auth key
        CephClientKey: 'AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ=='
        # The list of IPs or hostnames of the Ceph monitors
        CephExternalMonHost: '172.16.1.7, 172.16.1.8, 172.16.1.9'
        # The desired name of the generated key and conf files
        CephClusterName: dcn1
    1. 将之前保存的值用于 CephClusterFSID 和 CephClientKey 参数。
    2. 使用 Ceph 监视器中以逗号分隔的 ip 地址列表,作为 CephExternalMonHost 参数的值。
    3. 您必须在边缘站点间为 CephClusterName 参数选择一个唯一值。重新使用名称将导致配置文件被覆盖。
  5. 如果您使用 Red Hat OpenStack Platform director 部署 Red Hat Ceph Storage,您可以将 ceph 配置导出到环境文件 central_ceph_external.yaml。此环境文件将 DCN 站点连接到中央 hub Ceph 集群,因此信息特定于上一步中部署的 Ceph 集群:

    sudo -E openstack overcloud export ceph \
    --stack central \
    --output-file /home/stack/dcn-common/central_ceph_external.yaml

    如果中央位置从外部部署 Red Hat Ceph Storage,则无法使用 openstack overcloud export ceph 命令生成 central_ceph_external.yaml 文件。您必须手动创建 central_ceph_external.yaml 文件:

    parameter_defaults:
      CephExternalMultiConfig:
        - cluster: "central"
          fsid: "3161a3b4-e5ff-42a0-9f53-860403b29a33"
          external_cluster_mon_ips: "172.16.11.84, 172.16.11.87, 172.16.11.92"
          keys:
            - name: "client.openstack"
              caps:
                mgr: "allow *"
                mon: "profile rbd"
                osd: "profile rbd pool=vms, profile rbd pool=volumes, profile rbd pool=images"
              key: "AQD29WteAAAAABAAphgOjFD7nyjdYe8Lz0mQ5Q=="
              mode: "0600"
          dashboard_enabled: false
          ceph_conf_overrides:
            client:
              keyring: /etc/ceph/central.client.openstack.keyring
  6. 创建一个环境文件,其中包含与每个站点的类似详细信息,其具有非受管 Red Hat Ceph Storage 集群用于中央位置。openstack overcloud export ceph 命令不适用于带有非受管 Red Hat Ceph Storage 集群的站点。当您更新中央位置时,此文件将允许存储集群位于边缘站点的中央位置作为二级位置

    parameter_defaults:
      CephExternalMultiConfig:
    cluster: dcn1
    …
    cluster: dcn2
    …
  7. 在部署 overcloud 时,使用 external-ceph.yaml、ceph-external-<SITE>.yaml 和 central_ceph_external.yaml 环境文件:

    openstack overcloud deploy \
        --stack dcn1 \
        --templates /usr/share/openstack-tripleo-heat-templates/ \
        -r ~/dcn1/roles_data.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/external-ceph.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/dcn-storage.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/nova-az-config.yaml \
        -e /home/stack/dnc1/ceph-external-dcn1.yaml  \
        ....
        -e /home/stack/overcloud-deploy/central/central-export.yaml \
        -e /home/stack/dcn-common/central_ceph_external.yaml \
        -e /home/stack/dcn1/dcn_ceph_keys.yaml \
        -e /home/stack/dcn1/role-counts.yaml \
        -e /home/stack/dcn1/ceph.yaml \
        -e /home/stack/dcn1/site-name.yaml \
        -e /home/stack/dcn1/tuning.yaml \
        -e /home/stack/dcn1/glance.yaml
  8. 部署所有边缘位置后重新部署中央位置。