2.2. 安装带有 CephFS through NFS 和一个自定义 network_data 文件的 Red Hat OpenStack Platform (RHOSP)
要安装 CephFS through NFS,完成以下步骤:
- 安装 ceph-ansible 软件包。请查看 第 2.2.1 节 “安装 ceph-ansible 软件包”
-
生成自定义角色文件,
role_data.yaml
和network_data.yaml
文件。请查看 第 2.2.1.1 节 “生成自定义角色文件” -
使用带有自定义角色和环境的
openstack overcloud deploy
命令,部署 Ceph、共享文件系统服务(manila)和 CephFS。请查看 第 2.2.2 节 “部署更新的环境” - 配置 isolated StorageNFS 网络并创建默认共享类型。请查看 第 2.2.3 节 “完成部署后配置”
示例在 Red Hat Platform (RHOSP)环境中使用标准 stack
用户。
作为 RHOSP 安装或环境更新的一部分执行任务。
2.2.1. 安装 ceph-ansible 软件包
安装要在 undercloud 节点上安装的 ceph-ansible
软件包,以部署容器化 Ceph。
流程
-
以
stack
用户身份登录 undercloud 节点。 安装 ceph-ansible 软件包:
[stack@undercloud-0 ~]$ sudo dnf install -y ceph-ansible [stack@undercloud-0 ~]$ sudo dnf list ceph-ansible ... Installed Packages ceph-ansible.noarch 4.0.23-1.el8cp @rhelosp-ceph-4-tools
2.2.1.1. 生成自定义角色文件
ControllerStorageNFS
自定义角色配置隔离的 StorageNFS
网络。此角色类似于默认的 Controller.yaml
角色文件,它添加了 StorageNFS
网络和 CephNfs
服务,由 OS::TripleO::Services:CephNfs
命令指示。
[stack@undercloud ~]$ cd /usr/share/openstack-tripleo-heat-templates/roles [stack@undercloud roles]$ diff Controller.yaml ControllerStorageNfs.yaml 16a17 > - StorageNFS 50a45 > - OS::TripleO::Services::CephNfs
如需有关 openstack overcloud roles generate
命令的更多信息,请参阅高级 Overcloud 自定义指南中的角色。
openstack overcloud roles generate
命令创建一个自定义 roles_data.yaml
文件,包括 -o
指定的服务。在以下示例中,创建的 roles_data.yaml
文件具有 ControllerStorageNfs
、Compute
和 CephStorage
的服务。
如果您有一个现有的 roles_data.yaml
文件,请修改该文件以将 ControllerStorageNfs
、Compute
和 CephStorage
服务添加到配置文件中。有关更多信息,请参阅高级 Overcloud 自定义指南中的角色。
流程
-
以
stack
用户身份登录 undercloud 节点, 使用
openstack overcloud roles generate
命令创建roles_data.yaml
文件:[stack@undercloud ~]$ openstack overcloud roles generate --roles-path /usr/share/openstack-tripleo-heat-templates/roles -o /home/stack/roles_data.yaml ControllerStorageNfs Compute CephStorage
2.2.2. 部署更新的环境
当您准备好部署环境时,请使用 openstack overcloud deploy
命令以及使用 NFS-Ganesha 运行 CephFS 所需的自定义虚拟环境和角色。
overcloud 部署命令除其它所需选项外,还具有以下选项:
操作 | 选项 | 附加信息 |
---|---|---|
使用 |
| |
添加上一节中的 |
| |
使用 |
| Deploying an Overcloud with Containerized Red Hat Ceph 指南中的 Initiating Overcloud Deployment。 |
使用 |
| Deploying an Overcloud with Containerized Red Hat Ceph 指南中的 Initiating Overcloud Deployment。 |
通过 NFS 后端使用 CephFS 部署共享文件系统服务(manila)服务。使用 director 配置 NFS-Ganesha。 |
|
下例演示了一个 openstack overcloud deploy 命令
,带有选项通过 NFS-Ganesha、Ceph 集群、Ceph MDS 和隔离的 StorageNFS 网络部署 CephFS:
[stack@undercloud ~]$ openstack overcloud deploy \ --templates /usr/share/openstack-tripleo-heat-templates \ -n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml \ -r /home/stack/roles_data.yaml \ -e /home/stack/containers-default-parameters.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/network-environment.yaml \ -e/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
有关 openstack overcloud deploy
命令的更多信息,请参阅 Director 安装和使用 指南中的 部署命令。
2.2.2.1. StorageNFS 和 network_data_ganesha.yaml 文件
使用可组合网络定义自定义网络并将其分配到任何角色。您可以使用 network_data_ganesha.yaml
文件配置 StorageNFS 可组合网络,而不使用标准 network_data.yaml
文件。这两个角色都位于 /usr/share/openstack-tripleo-heat-templates
目录中。
network_data_ganesha.yaml
文件包含一个额外部分,用于定义隔离的 StorageNFS 网络。虽然大多数安装都可以的默认设置,但您必须编辑 YAML 文件以添加网络设置,包括 VLAN ID、子网和其他设置。
name: StorageNFS enabled: true vip: true name_lower: storage_nfs vlan: 70 ip_subnet: '172.17.0.0/20' allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}] ipv6_subnet: 'fd00:fd00:fd00:7000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::4', 'end': 'fd00:fd00:fd00:7000::fffe'}]
有关可组合网络的更多信息,请参阅高级 Overcloud 自定义指南中的使用可组合网络。
2.2.2.2. CephFS 后端环境文件
用于定义 CephFS 后端 manila-cephfsganesha-config.yaml
的集成式环境文件位于 /usr/share/openstack-tripleo-heat-templates/environments/
中。
manila-cephfsganesha-config.yaml
环境文件包含与部署共享文件系统服务(manila)相关的设置。后端默认设置可用于大多数环境。以下示例显示了 director 在部署共享文件系统服务过程中使用的默认值:
[stack@undercloud ~]$ cat /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml # A Heat environment file which can be used to enable a # a Manila CephFS-NFS driver backend. resource_registry: OS::TripleO::Services::ManilaApi: ../deployment/manila/manila-api-container-puppet.yaml OS::TripleO::Services::ManilaScheduler: ../deployment/manila/manila-scheduler-container-puppet.yaml # Only manila-share is pacemaker managed: OS::TripleO::Services::ManilaShare: ../deployment/manila/manila-share-pacemaker-puppet.yaml OS::TripleO::Services::ManilaBackendCephFs: ../deployment/manila/manila-backend-cephfs.yaml # ceph-nfs (ganesha) service is installed and configured by ceph-ansible # but it's still managed by pacemaker OS::TripleO::Services::CephNfs: ../deployment/ceph-ansible/ceph-nfs.yaml parameter_defaults: ManilaCephFSBackendName: cephfs 1 ManilaCephFSDriverHandlesShareServers: false 2 ManilaCephFSCephFSAuthId: 'manila' 3 ManilaCephFSCephFSEnableSnapshots: false 4 # manila cephfs driver supports either native cephfs backend - 'CEPHFS' # (users mount shares directly from ceph cluster), or nfs-ganesha backend - # 'NFS' (users mount shares through nfs-ganesha server) ManilaCephFSCephFSProtocolHelperType: 'NFS'
parameter_defaults
标头表示配置的开头。在此部分中,您可以编辑设置来覆盖 resource_registry
中设置的默认值。这包括 OS::Tripleo::Services::Services::ManilaBackendCephFs
设置的值,它为 CephFS 后端设置默认值。
- 1
ManilaCephFSBackendName
设置 CephFS 后端的 manila 配置名称。在这种情况下,默认后端名称为cephfs
。- 2
ManilaCephFSDriverHandlesShareServers
控制共享服务器的生命周期。当设置为false
时,驱动程序不会处理生命周期。这是唯一支持的选项。- 3
ManilaCephFSCephFSAuthId
定义了 director 为manila
服务访问 Ceph 集群而创建的 Ceph 身份验证 ID。- 4
ManilaCephFSEnableSnapshots
控制快照激活。false
值表示没有启用快照。当前不支持这个功能。
有关环境文件的更多信息,请参阅 Director 安装和使用指南中的环境文件。
2.2.3. 完成部署后配置
在创建 NFS 共享、授予用户访问权限和挂载 NFS 共享之前,您必须完成两个部署后配置任务。
- 将网络服务(neutron)StorageNFS 网络映射到隔离的数据中心存储 NFS 网络。
- 创建默认共享类型。
完成这些步骤后,租户计算实例可以创建、允许访问和挂载 NFS 共享。
2.2.3.1. 创建存储提供商网络
将新隔离存储NFS 网络映射到网络(neutron)提供商网络。Compute 虚拟机附加到网络,以访问由 NFS-Ganesha 网关提供的共享导出位置。
有关使用共享文件系统服务的网络安全性 ,请参阅安全和强化指南中的强化共享文件系统服务。
流程
openstack network create
命令定义 StorageNFS neutron 网络的配置。
在 undercloud 节点上输入以下命令:
[stack@undercloud ~]$ source ~/overcloudrc
在 undercloud 节点上,创建 StorageNFS 网络:
(overcloud) [stack@undercloud-0 ~]$ openstack network create StorageNFS --share --provider-network-type vlan --provider-physical-network datacentre --provider-segment 70
您可以使用以下选项输入这个命令:
-
对于
--provider-physical-network
选项,使用默认值datacentre
,除非您通过 tripleo-heat-templates 中的 NeutronBridgeMappings 为 br-isolated 网桥设置了另一个标签。 -
对于
--provider-segment
选项,在 heat 模板中为 StorageNFS 隔离网络设置的 VLAN 值/usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml
。此值为 70,除非部署者修改了隔离的网络定义。 -
对于
--provider-network-type
选项,请使用值vlan
。
-
对于
2.2.3.2. 配置共享供应商 StorageNFS 网络
在 neutron-shared 提供商网络上创建对应的 StorageNFSSubnet
。确保子网与 network_data.yml
文件中的 storage_nfs
网络定义相同,并确保 StorageNFS
子网的分配范围不会重叠。不需要网关,因为 StorageNFS
子网专用于提供 NFS 共享。
先决条件
- 分配池的开头和结束 IP 范围。
- 子网 IP 范围。