1.9. Red Hat Ceph Storage 的先决条件


在从 Controller 节点迁移 Red Hat Ceph Storage 集群守护进程前,请在 Red Hat OpenStack Platform 17.1 环境中完成以下任务:

  • 将 Red Hat Ceph Storage 集群升级到版本 7。如需更多信息,请参阅 Framework 中将 Red Hat Ceph Storage 6 升级到 7 (16.2 升级到 17.1)。
  • 您的 Red Hat Ceph Storage 7 部署由 cephadm 管理。
  • undercloud 仍然可用,节点和网络由 director Operator 管理。
  • 如果使用外部部署的 Red Hat Ceph Storage 集群,则必须在目标节点中重新创建 ceph-nfs 集群,并探测 StorageNFS 网络。

完成特定 Red Hat Ceph Storage 环境的先决条件:

在使用监控堆栈组件迁移 Red Hat Ceph Storage 集群前,您必须收集监控堆栈信息,查看和更新容器镜像 registry,并删除 undercloud 容器镜像。

注意

除了更新与监控堆栈相关的容器镜像外,还需要更新与 container_image_base 相关的配置条目。这会影响依赖于 undercloud 镜像的所有 Red Hat Ceph Storage 守护进程。使用 Red Hat Ceph Storage 集群中配置的新镜像 registry 位置部署新的守护进程。

流程

  1. 收集监控堆栈的当前状态。当每个守护进程放置评估时,验证主机没有 监控 标签或 grafanaprometheusalertmanager

    注意

    整个重定位过程由 cephadm 驱动,它依赖于将标签分配给目标节点,其中调度守护进程。有关为节点分配标签的更多信息,请参阅红帽知识库文章 Red Hat Ceph Storage: 支持的配置

    [tripleo-admin@controller-0 ~]$ sudo cephadm shell -- ceph orch host ls
    
    HOST                    	ADDR       	LABELS                 	STATUS
    cephstorage-0.redhat.local  192.168.24.11  osd mds
    cephstorage-1.redhat.local  192.168.24.12  osd mds
    cephstorage-2.redhat.local  192.168.24.47  osd mds
    controller-0.redhat.local   192.168.24.35  _admin mon mgr
    controller-1.redhat.local   192.168.24.53  mon _admin mgr
    controller-2.redhat.local   192.168.24.10  mon _admin mgr
    6 hosts in cluster
    Copy to Clipboard Toggle word wrap

    确认集群处于健康状态,并且 ceph orch lsceph orch ps 都返回预期的部署的守护进程数量。

  2. 检查和更新容器镜像 registry:

    注意

    如果在迁移 Red Hat OpenStack Platform control plane 后运行 Red Hat Ceph Storage 外部化过程,请更新 Red Hat Ceph Storage 集群配置中的容器镜像。当前容器镜像指向 undercloud registry,可能不再可用。由于使用完成后 undercloud 不可用,因此请将 undercloud 提供的镜像替换为替代的 registry。

    $ ceph config dump
    ...
    ...
    mgr   advanced  mgr/cephadm/container_image_alertmanager    undercloud-0.ctlplane.redhat.local:8787/rh-osbs/openshift-ose-prometheus-alertmanager:v4.10
    mgr   advanced  mgr/cephadm/container_image_base            undercloud-0.ctlplane.redhat.local:8787/rh-osbs/rhceph
    mgr   advanced  mgr/cephadm/container_image_grafana         undercloud-0.ctlplane.redhat.local:8787/rh-osbs/grafana:latest
    mgr   advanced  mgr/cephadm/container_image_node_exporter   undercloud-0.ctlplane.redhat.local:8787/rh-osbs/openshift-ose-prometheus-node-exporter:v4.10
    mgr   advanced  mgr/cephadm/container_image_prometheus      undercloud-0.ctlplane.redhat.local:8787/rh-osbs/openshift-ose-prometheus:v4.10
    Copy to Clipboard Toggle word wrap
  3. 删除 undercloud 容器镜像:

    $ cephadm shell -- ceph config rm mgr mgr/cephadm/container_image_base
    for i in prometheus grafana alertmanager node_exporter; do
        cephadm shell -- ceph config rm mgr mgr/cephadm/container_image_$i
    done
    Copy to Clipboard Toggle word wrap

在开始 Ceph 对象网关(RGW)迁移前,请完成以下先决条件。

流程

  1. 检查 Red Hat Ceph Storage 节点的当前状态:

    (undercloud) [stack@undercloud-0 ~]$ metalsmith list
    
    
        +------------------------+    +----------------+
        | IP Addresses           |    |  Hostname      |
        +------------------------+    +----------------+
        | ctlplane=192.168.24.25 |    | cephstorage-0  |
        | ctlplane=192.168.24.10 |    | cephstorage-1  |
        | ctlplane=192.168.24.32 |    | cephstorage-2  |
        | ctlplane=192.168.24.28 |    | compute-0      |
        | ctlplane=192.168.24.26 |    | compute-1      |
        | ctlplane=192.168.24.43 |    | controller-0   |
        | ctlplane=192.168.24.7  |    | controller-1   |
        | ctlplane=192.168.24.41 |    | controller-2   |
        +------------------------+    +----------------+
    Copy to Clipboard Toggle word wrap
  2. 登录到 controller-0,并检查 Pacemaker 状态以识别 RGW 迁移的重要信息:

    Full List of Resources:
      * ip-192.168.24.46	(ocf:heartbeat:IPaddr2):     	Started controller-0
      * ip-10.0.0.103   	(ocf:heartbeat:IPaddr2):     	Started controller-1
      * ip-172.17.1.129 	(ocf:heartbeat:IPaddr2):     	Started controller-2
      * ip-172.17.3.68  	(ocf:heartbeat:IPaddr2):     	Started controller-0
      * ip-172.17.4.37  	(ocf:heartbeat:IPaddr2):     	Started controller-1
      * Container bundle set: haproxy-bundle
    
    [undercloud-0.ctlplane.redhat.local:8787/rh-osbs/rhosp17-openstack-haproxy:pcmklatest]:
        * haproxy-bundle-podman-0   (ocf:heartbeat:podman):  Started controller-2
        * haproxy-bundle-podman-1   (ocf:heartbeat:podman):  Started controller-0
        * haproxy-bundle-podman-2   (ocf:heartbeat:podman):  Started controller-1
    Copy to Clipboard Toggle word wrap
  3. 识别存储网络的范围。以下是一个示例,值可能与您环境中的不同:

    [heat-admin@controller-0 ~]$ ip -o -4 a
    
    1: lo	inet 127.0.0.1/8 scope host lo\   	valid_lft forever preferred_lft forever
    2: enp1s0	inet 192.168.24.45/24 brd 192.168.24.255 scope global enp1s0\   	valid_lft forever preferred_lft forever
    2: enp1s0	inet 192.168.24.46/32 brd 192.168.24.255 scope global enp1s0\   	valid_lft forever preferred_lft forever
    7: br-ex	inet 10.0.0.122/24 brd 10.0.0.255 scope global br-ex\   	valid_lft forever preferred_lft forever 
    1
    
    8: vlan70	inet 172.17.5.22/24 brd 172.17.5.255 scope global vlan70\   	valid_lft forever preferred_lft forever
    8: vlan70	inet 172.17.5.94/32 brd 172.17.5.255 scope global vlan70\   	valid_lft forever preferred_lft forever
    9: vlan50	inet 172.17.2.140/24 brd 172.17.2.255 scope global vlan50\   	valid_lft forever preferred_lft forever
    10: vlan30	inet 172.17.3.73/24 brd 172.17.3.255 scope global vlan30\   	valid_lft forever preferred_lft forever 
    2
    
    10: vlan30	inet 172.17.3.68/32 brd 172.17.3.255 scope global vlan30\   	valid_lft forever preferred_lft forever
    11: vlan20	inet 172.17.1.88/24 brd 172.17.1.255 scope global vlan20\   	valid_lft forever preferred_lft forever
    12: vlan40	inet 172.17.4.24/24 brd 172.17.4.255 scope global vlan40\   	valid_lft forever preferred_lft forever
    Copy to Clipboard Toggle word wrap
    1
    br-ex 代表外部网络,在当前环境中,HAProxy 已分配前端虚拟 IP (VIP)。
    2
    vlan30 代表存储网络,应在 Red Hat Ceph Storage 节点上启动新的 RGW 实例。
  4. 识别您之前在 HAProxy 中具有的网络,并通过 director Operator 传播到 Red Hat Ceph Storage 节点。使用此网络保留由 Red Hat Ceph Storage 拥有的新 VIP,作为 RGW 服务的入口点。

    1. 登录到 controller-0,并在当前 HAProxy 配置中找到 ceph_rgw 部分:

      $ less /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg
      ...
      ...
      listen ceph_rgw
        bind 10.0.0.103:8080 transparent
        bind 172.17.3.68:8080 transparent
        mode http
        balance leastconn
        http-request set-header X-Forwarded-Proto https if { ssl_fc }
        http-request set-header X-Forwarded-Proto http if !{ ssl_fc }
        http-request set-header X-Forwarded-Port %[dst_port]
        option httpchk GET /swift/healthcheck
        option httplog
        option forwardfor
        server controller-0.storage.redhat.local 172.17.3.73:8080 check fall 5 inter 2000 rise 2
        server controller-1.storage.redhat.local 172.17.3.146:8080 check fall 5 inter 2000 rise 2
        server controller-2.storage.redhat.local 172.17.3.156:8080 check fall 5 inter 2000 rise 2
      Copy to Clipboard Toggle word wrap
    2. 确认网络已用作 HAProxy 前端。下例演示了 controller-0 使用外部网络来公开服务,这不包括在 Red Hat Ceph Storage 节点。您必须通过 director Operator 传播外部网络:

      [controller-0]$ ip -o -4 a
      
      ...
      7: br-ex	inet 10.0.0.106/24 brd 10.0.0.255 scope global br-ex\   	valid_lft forever preferred_lft forever
      ...
      Copy to Clipboard Toggle word wrap
      注意

      如果目标节点不是由 director 管理,则无法使用此流程配置网络。管理员必须手动配置所有必需的网络。

  5. 将 HAProxy 前端网络传播到 Red Hat Ceph Storage 节点。

    1. 在用来定义 ceph-storage 网络接口的 NIC 模板中,在 Red Hat Ceph Storage 网络配置模板文件中添加新配置部分,例如 /home/stack/composable_roles/network/nic-configs/ceph-storage.j2

      ---
      network_config:
      - type: interface
        name: nic1
        use_dhcp: false
        dns_servers: {{ ctlplane_dns_nameservers }}
        addresses:
        - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }}
        routes: {{ ctlplane_host_routes }}
      - type: vlan
        vlan_id: {{ storage_mgmt_vlan_id }}
        device: nic1
        addresses:
        - ip_netmask: {{ storage_mgmt_ip }}/{{ storage_mgmt_cidr }}
        routes: {{ storage_mgmt_host_routes }}
      - type: interface
        name: nic2
        use_dhcp: false
        defroute: false
      - type: vlan
        vlan_id: {{ storage_vlan_id }}
        device: nic2
        addresses:
        - ip_netmask: {{ storage_ip }}/{{ storage_cidr }}
        routes: {{ storage_host_routes }}
      - type: ovs_bridge
        name: {{ neutron_physical_bridge_name }}
        dns_servers: {{ ctlplane_dns_nameservers }}
        domain: {{ dns_search_domains }}
        use_dhcp: false
        addresses:
        - ip_netmask: {{ external_ip }}/{{ external_cidr }}
        routes: {{ external_host_routes }}
        members: []
        - type: interface
          name: nic3
          primary: true
      Copy to Clipboard Toggle word wrap
    2. 将外部网络添加到裸机文件中,例如: /home/stack/composable_roles/network/baremetal_deployment.yaml,该文件由 metalsmith:

      注意

      在触发 os-net-config 时,确保为目标节点启用了 network_config_update,以传播到目标节点。

      - name: CephStorage
        count: 3
        hostname_format: cephstorage-%index%
        instances:
        - hostname: cephstorage-0
        name: ceph-0
        - hostname: cephstorage-1
        name: ceph-1
        - hostname: cephstorage-2
        name: ceph-2
        defaults:
        profile: ceph-storage
        network_config:
            template: /home/stack/composable_roles/network/nic-configs/ceph-storage.j2
            network_config_update: true
        networks:
        - network: ctlplane
            vif: true
        - network: storage
        - network: storage_mgmt
        - network: external
      Copy to Clipboard Toggle word wrap
    3. 在裸机节点上配置新网络:

      (undercloud) [stack@undercloud-0]$
      
      openstack overcloud node provision
         -o overcloud-baremetal-deployed-0.yaml \
         --stack overcloud \
         --network-config -y \
        $PWD/composable_roles/network/baremetal_deployment.yaml
      Copy to Clipboard Toggle word wrap
    4. 验证 Red Hat Ceph Storage 节点上的新网络是否已配置:

      [root@cephstorage-0 ~]# ip -o -4 a
      
      1: lo	inet 127.0.0.1/8 scope host lo\   	valid_lft forever preferred_lft forever
      2: enp1s0	inet 192.168.24.54/24 brd 192.168.24.255 scope global enp1s0\   	valid_lft forever preferred_lft forever
      11: vlan40	inet 172.17.4.43/24 brd 172.17.4.255 scope global vlan40\   	valid_lft forever preferred_lft forever
      12: vlan30	inet 172.17.3.23/24 brd 172.17.3.255 scope global vlan30\   	valid_lft forever preferred_lft forever
      14: br-ex	inet 10.0.0.133/24 brd 10.0.0.255 scope global br-ex\   	valid_lft forever preferred_lft forever
      Copy to Clipboard Toggle word wrap

在开始 Red Hat Ceph Storage Rados 块设备(RBD)迁移前,请完成以下先决条件。

  • 目标 CephStorage 或 ComputeHCI 节点都配置为具有 storagestorage_mgmt 网络。这可确保使用来自同一节点的 Red Hat Ceph Storage 公共和集群网络。从 Red Hat OpenStack Platform 17.1 及之后的版本,您不必运行堆栈更新。
  • NFS Ganesha 从 director Operator 部署迁移到 cephadm。如需更多信息,请参阅创建 NFS Ganesha 集群
  • Ceph 元数据服务器、监控堆栈、Ceph 对象网关以及 Controller 节点上部署的任何其他守护进程。
  • 守护进程分布遵循 Red Hat Ceph Storage 中描述的卡性约束:支持的配置
  • Red Hat Ceph Storage 集群处于健康状态,ceph -s 命令返回 HEALTH_OK
  • 在裸机节点上运行 os-net-config 并配置额外网络:

    1. 如果目标节点是 CephStorage,请确保在 CephStorage 节点的裸机文件中定义了网络,例如 /home/stack/composable_roles/network/baremetal_deployment.yaml

      - name: CephStorage
      count: 2
      instances:
      - hostname: oc0-ceph-0
      name: oc0-ceph-0
      - hostname: oc0-ceph-1
      name: oc0-ceph-1
      defaults:
      networks:
      - network: ctlplane
      vif: true
      - network: storage_cloud_0
      subnet: storage_cloud_0_subnet
      - network: storage_mgmt_cloud_0
      subnet: storage_mgmt_cloud_0_subnet
      network_config:
      template: templates/single_nic_vlans/single_nic_vlans_storage.j2
      Copy to Clipboard Toggle word wrap
    2. 添加缺少的网络:

      $ openstack overcloud node provision \
      -o overcloud-baremetal-deployed-0.yaml --stack overcloud-0 \
      /--network-config -y --concurrency 2 /home/stack/metalsmith-0.yaml
      Copy to Clipboard Toggle word wrap
    3. 验证存储网络是否在目标节点上配置:

      (undercloud) [stack@undercloud ~]$ ssh heat-admin@192.168.24.14 ip -o -4 a
      1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
      5: br-storage    inet 192.168.24.14/24 brd 192.168.24.255 scope global br-storage\       valid_lft forever preferred_lft forever
      6: vlan1    inet 192.168.24.14/24 brd 192.168.24.255 scope global vlan1\       valid_lft forever preferred_lft forever
      7: vlan11    inet 172.16.11.172/24 brd 172.16.11.255 scope global vlan11\       valid_lft forever preferred_lft forever
      8: vlan12    inet 172.16.12.46/24 brd 172.16.12.255 scope global vlan12\       valid_lft forever preferred_lft forever
      Copy to Clipboard Toggle word wrap

1.9.4. 创建 NFS Ganesha 集群

重要

本节中的内容 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

如果您将 CephFS through NFS 与共享文件系统服务(manila)搭配使用,您必须在 Red Hat Ceph Storage 集群上创建新的集群的 NFS 服务。此服务替换您在 Red Hat OpenStack Platform (RHOSP) 17.1 中使用的独立、由 Pacemaker 控制的 ceph-nfs 服务。

流程

  1. 识别 Red Hat Ceph Storage 节点,以部署新的集群 NFS 服务,如 cephstorage-0cephstorage-1cephstorage-2

    注意

    您必须在 StorageNFS 隔离的网络中部署此服务,以便您可以通过新的 NFS 导出位置挂载现有的共享。您可以在现有 Ceph 存储节点或 HCI 节点上部署新的集群 NFS 服务,也可以在 Red Hat Ceph Storage 集群中注册的新硬件上部署。

  2. 如果您使用 director Operator 部署 Red Hat Ceph Storage 节点,请将 StorageNFS 网络传播到部署 ceph-nfs 服务的目标节点。

    注意

    如果目标节点不是由 director 管理,则无法使用此流程配置网络。管理员必须手动配置所有必需的网络。

    1. 识别 RHOSP 环境中使用的节点定义文件 overcloud-baremetal-deploy.yaml。有关识别 overcloud-baremetal-deploy.yaml 文件的更多信息,请参阅 OpenShift 部署上自定义 Red Hat OpenStack Services 中的自定义 overcloud 网络
    2. 编辑与 Red Hat Ceph Storage 节点关联的网络,使其包含 StorageNFS 网络:

      - name: CephStorage
        count: 3
        hostname_format: cephstorage-%index%
        instances:
        - hostname: cephstorage-0
          name: ceph-0
        - hostname: cephstorage-1
          name: ceph-1
        - hostname: cephstorage-2
          name: ceph-2
        defaults:
          profile: ceph-storage
          network_config:
            template: /home/stack/network/nic-configs/ceph-storage.j2
            network_config_update: true
          networks:
          - network: ctlplane
            vif: true
          - network: storage
          - network: storage_mgmt
          - network: storage_nfs
      Copy to Clipboard Toggle word wrap
    3. 编辑 Red Hat Ceph Storage 节点的 /home/stack/network/nic-configs/ceph-storage.j2,使其包含连接到 StorageNFS 网络的接口:

      - type: vlan
        device: nic2
        vlan_id: {{ storage_nfs_vlan_id }}
        addresses:
        - ip_netmask: {{ storage_nfs_ip }}/{{ storage_nfs_cidr }}
        routes: {{ storage_nfs_host_routes }}
      Copy to Clipboard Toggle word wrap
    4. 更新 Red Hat Ceph Storage 节点:

      $ openstack overcloud node provision \
          --stack overcloud   \
          --network-config -y  \
          -o overcloud-baremetal-deployed-storage_nfs.yaml \
          --concurrency 2 \
          /home/stack/network/baremetal_deployment.yaml
      Copy to Clipboard Toggle word wrap

      更新完成后,确保 Red Hat Ceph Storage 节点中创建了一个新接口,并使用与 StorageNFS 关联的 VLAN 标记。

  3. 识别 StorageNFS 网络的 IP 地址,以用作 Ceph NFS 服务的虚拟 IP 地址(VIP):

    $ openstack port list -c "Fixed IP Addresses" --network storage_nfs
    Copy to Clipboard Toggle word wrap
  4. 在正在运行的 cephadm shell 中,识别 NFS 服务的主机:

    $ ceph orch host ls
    Copy to Clipboard Toggle word wrap
  5. 标记您确定的每个主机。对您要标记的每个主机重复这个命令:

    $ ceph orch host label add <hostname> nfs
    Copy to Clipboard Toggle word wrap
    • <hostname > 替换为您识别的主机的名称。
  6. 创建 NFS 集群:

    $ ceph nfs cluster create cephfs \
        "label:nfs" \
        --ingress \
        --virtual-ip=<VIP> \
        --ingress-mode=haproxy-protocol
    Copy to Clipboard Toggle word wrap
    • <VIP > 替换为 Ceph NFS 服务的 VIP。

      注意

      您必须将 ingress-mode 参数设置为 haproxy-protocol。不支持其他 ingress 模式。此入口模式允许您通过共享文件系统服务强制客户端限制。有关部署集群 Ceph NFS 服务的更多信息,请参阅 Red Hat Ceph Storage 7 Operations Guide 中的使用 Ceph Orchestrator (Limited Availability)管理 NFS-Ganesha 网关

  7. 检查 NFS 集群的状态:

    $ ceph nfs cluster ls
    $ ceph nfs cluster info cephfs
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat