1.15. 使用共享文件系统服务
OpenStack Manila 是共享文件系统服务。它为 OpenStack 用户提供自助服务 API,用于创建和管理文件共享。文件共享(或只是"共享"),由任意数量的客户端为并发读/写访问权限构建。这与底层存储的固有弹性相结合,使共享文件系统服务在云环境需要 RWX ("read write many")持久性存储中至关重要。
1.15.1. 网络 复制链接链接已复制到粘贴板!
OpenStack 中的文件共享通过网络访问。因此,务必要规划云的网络,以便为共享文件系统创建成功且可持续的编配层。
Manila 支持两种级别的存储网络抽象 - 用户可以直接控制其各自文件共享的网络,另一个则由 OpenStack 管理员配置存储网络。在采用后,务必要确保 Red Hat OpenStack Platform 17.1 中的网络与您的新云的网络计划匹配。这样可确保租户工作负载通过采用过程保持与存储连接,即使 control plane 会出现较小的中断。Manila 的 control plane 服务不在数据路径中;关闭 API、调度程序和共享管理器服务不会影响对现有共享文件系统的访问。
通常,存储和存储设备管理网络是独立的。Manila 服务只需要访问存储设备管理网络。例如,如果在部署中使用了 Ceph 集群,"storage"网络指的是 Ceph 集群的公共网络,并且 Manila 的共享管理器服务需要可以访问它。
1.15.2. 先决条件 复制链接链接已复制到粘贴板!
- 确保 manila systemd 服务(api、cron、调度程序)已停止。如需更多信息,请参阅 停止 OpenStack 服务。
- 确保 manila pacemaker 服务("openstack-manila-share")已停止。如需更多信息,请参阅 停止 OpenStack 服务。
- 确保数据库迁移已完成。如需更多信息,请参阅将 数据库迁移到 MariaDB 实例。
-
确保部署
manila-share
服务的 OpenShift 节点可以访问存储系统所在的管理网络。 - 在使用 manila 服务前,请确保可以使用 keystone 和 memcached 等服务。
-
如果启用了租户驱动的网络(
driver_handles_share_servers=True
),请确保在采用 manila 服务前已经部署了 neutron。
1.15.3. 流程 - Manila 采用 复制链接链接已复制到粘贴板!
1.15.3.1. 从 RHOSP 17.1 部署复制配置 复制链接链接已复制到粘贴板!
定义 CONTROLLER1_SSH
环境变量( 如果尚未定义 )。然后,从 RHOSP 17.1 复制配置文件以参考。
$CONTROLLER1_SSH cat /var/lib/config-data/puppet-generated/manila/etc/manila/manila.conf | awk '!/^ *#/ && NF' > ~/manila.conf
$CONTROLLER1_SSH cat /var/lib/config-data/puppet-generated/manila/etc/manila/manila.conf | awk '!/^ *#/ && NF' > ~/manila.conf
检查此配置,以及自 RHOSP 17.1 起记录的配置更改。并非所有项都对进入新的云环境有意义:
-
manila 操作器能够设置数据库相关配置(
[database]
)、服务身份验证(auth_strategy
,[keystone_authtoken]
)、消息总线配置(transport_url
,control_exchange
)、默认的粘贴配置(api_paste_config
)和 inter-service 通信配置(', '[nova]
,[cinder]
, [glance][glance]
[oslo_messagingClaimTemplate
])。因此,所有这些都可以被忽略。 -
忽略
osapi_share_listen
配置。在 RHOSP 18 中,依赖 OpenShift 路由和入口。 -
请注意策略覆盖。在 RHOSP 18 中,manila 附带一个安全的默认 RBAC,并且可能不需要覆盖。请使用 Oslo 策略生成器 工具查看 RBAC 默认值。如果需要自定义策略,则必须将其作为
ConfigMap
提供。以下示例 spec 演示了如何使用名为policy.yaml
的文件的内容设置名为manila-policy
的ConfigMap
。
spec: manila: enabled: true template: manilaAPI: customServiceConfig: | [oslo_policy] policy_file=/etc/manila/policy.yaml extraMounts: - extraVol: - extraVolType: Undefined mounts: - mountPath: /etc/manila/ name: policy readOnly: true propagation: - ManilaAPI volumes: - name: policy projected: sources: - configMap: name: manila-policy items: - key: policy path: policy.yaml
spec:
manila:
enabled: true
template:
manilaAPI:
customServiceConfig: |
[oslo_policy]
policy_file=/etc/manila/policy.yaml
extraMounts:
- extraVol:
- extraVolType: Undefined
mounts:
- mountPath: /etc/manila/
name: policy
readOnly: true
propagation:
- ManilaAPI
volumes:
- name: policy
projected:
sources:
- configMap:
name: manila-policy
items:
- key: policy
path: policy.yaml
-
Manila API 服务需要在
manila: template: manilaAPI
的customServiceConfig
部分添加enabled_share_protocols
选项。 -
如果您有调度程序覆盖,请将它们添加到
manila: template: manilaScheduler
中的customServiceConfig
部分。 -
如果您使用 RHOSP 17.1 配置多个存储后端驱动程序,则需要在部署 RHOSP 18 时分割它们。每个存储后端驱动程序都需要使用自己的
manila-share
服务实例。 -
如果存储后端驱动程序需要自定义容器镜像,请在 RHOSP Ecosystem Catalog 上找到它,并设置
manila: template: manilaShares: <custom name> : containerImage
值。以下示例演示了使用自定义容器镜像的多个存储后端驱动程序。
spec: manila: enabled: true template: manilaAPI: customServiceConfig: | [DEFAULT] enabled_share_protocols = nfs replicas: 3 manilaScheduler: replicas: 3 manilaShares: netapp: customServiceConfig: | [DEFAULT] debug = true enabled_share_backends = netapp [netapp] driver_handles_share_servers = False share_backend_name = netapp share_driver = manila.share.drivers.netapp.common.NetAppDriver netapp_storage_family = ontap_cluster netapp_transport_type = http replicas: 1 pure: customServiceConfig: | [DEFAULT] debug = true enabled_share_backends=pure-1 [pure-1] driver_handles_share_servers = False share_backend_name = pure-1 share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver flashblade_mgmt_vip = 203.0.113.15 flashblade_data_vip = 203.0.10.14 containerImage: registry.connect.redhat.com/purestorage/openstack-manila-share-pure-rhosp-18-0 replicas: 1
spec:
manila:
enabled: true
template:
manilaAPI:
customServiceConfig: |
[DEFAULT]
enabled_share_protocols = nfs
replicas: 3
manilaScheduler:
replicas: 3
manilaShares:
netapp:
customServiceConfig: |
[DEFAULT]
debug = true
enabled_share_backends = netapp
[netapp]
driver_handles_share_servers = False
share_backend_name = netapp
share_driver = manila.share.drivers.netapp.common.NetAppDriver
netapp_storage_family = ontap_cluster
netapp_transport_type = http
replicas: 1
pure:
customServiceConfig: |
[DEFAULT]
debug = true
enabled_share_backends=pure-1
[pure-1]
driver_handles_share_servers = False
share_backend_name = pure-1
share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
flashblade_mgmt_vip = 203.0.113.15
flashblade_data_vip = 203.0.10.14
containerImage: registry.connect.redhat.com/purestorage/openstack-manila-share-pure-rhosp-18-0
replicas: 1
-
如果提供敏感信息,如密码、主机名和用户名,建议使用 OpenShift secret 和
customServiceConfigSecrets
密钥。例如:
cat << __EOF__ > ~/netapp_secrets.conf [netapp] netapp_server_hostname = 203.0.113.10 netapp_login = fancy_netapp_user netapp_password = secret_netapp_password netapp_vserver = mydatavserver __EOF__ oc create secret generic osp-secret-manila-netapp --from-file=~/netapp_secrets.conf -n openstack
cat << __EOF__ > ~/netapp_secrets.conf
[netapp]
netapp_server_hostname = 203.0.113.10
netapp_login = fancy_netapp_user
netapp_password = secret_netapp_password
netapp_vserver = mydatavserver
__EOF__
oc create secret generic osp-secret-manila-netapp --from-file=~/netapp_secrets.conf -n openstack
-
customConfigSecrets
可用于任何服务,以下是一个使用上面创建的 secret 的配置映射。
spec: manila: enabled: true template: < . . . > manilaShares: netapp: customServiceConfig: | [DEFAULT] debug = true enabled_share_backends = netapp [netapp] driver_handles_share_servers = False share_backend_name = netapp share_driver = manila.share.drivers.netapp.common.NetAppDriver netapp_storage_family = ontap_cluster netapp_transport_type = http customServiceConfigSecrets: - osp-secret-manila-netapp replicas: 1 < . . . >
spec:
manila:
enabled: true
template:
< . . . >
manilaShares:
netapp:
customServiceConfig: |
[DEFAULT]
debug = true
enabled_share_backends = netapp
[netapp]
driver_handles_share_servers = False
share_backend_name = netapp
share_driver = manila.share.drivers.netapp.common.NetAppDriver
netapp_storage_family = ontap_cluster
netapp_transport_type = http
customServiceConfigSecrets:
- osp-secret-manila-netapp
replicas: 1
< . . . >
-
如果您需要向任何服务提供额外文件,您可以使用
extraMounts
。例如,在使用 ceph 时,您需要 Manila 用户的密钥环文件以及ceph.conf
配置文件。它们通过extraMounts
挂载,如下例所示。 -
确保后端的名称(
share_backend_name
)在 RHOSP 17.1 上保持不变。 -
建议将
manilaAPI
服务的副本数和manilaScheduler
服务设置为 3。您应该确保将manilaShares
服务/s 的副本数设置为 1。 -
确保
manilaShares
部分中指定了适当的存储管理网络。以下示例将manilaShares
实例与 CephFS 后端驱动程序连接到存储网络
。
1.15.3.2. 部署 manila control plane 复制链接链接已复制到粘贴板!
修补 OpenStackControlPlane 来部署 Manila;这里是一个使用原生 CephFS 的示例:
cat << __EOF__ > ~/manila.patch spec: manila: enabled: true apiOverride: route: {} template: databaseInstance: openstack secret: osp-secret manilaAPI: replicas: 3 customServiceConfig: | [DEFAULT] enabled_share_protocols = cephfs override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer manilaScheduler: replicas: 3 manilaShares: cephfs: replicas: 1 customServiceConfig: | [DEFAULT] enabled_share_backends = tripleo_ceph [tripleo_ceph] driver_handles_share_servers=False share_backend_name=tripleo_ceph share_driver=manila.share.drivers.cephfs.driver.CephFSDriver cephfs_conf_path=/etc/ceph/ceph.conf cephfs_auth_id=openstack cephfs_cluster_name=ceph cephfs_volume_mode=0755 cephfs_protocol_helper_type=CEPHFS networkAttachments: - storage __EOF__
cat << __EOF__ > ~/manila.patch
spec:
manila:
enabled: true
apiOverride:
route: {}
template:
databaseInstance: openstack
secret: osp-secret
manilaAPI:
replicas: 3
customServiceConfig: |
[DEFAULT]
enabled_share_protocols = cephfs
override:
service:
internal:
metadata:
annotations:
metallb.universe.tf/address-pool: internalapi
metallb.universe.tf/allow-shared-ip: internalapi
metallb.universe.tf/loadBalancerIPs: 172.17.0.80
spec:
type: LoadBalancer
manilaScheduler:
replicas: 3
manilaShares:
cephfs:
replicas: 1
customServiceConfig: |
[DEFAULT]
enabled_share_backends = tripleo_ceph
[tripleo_ceph]
driver_handles_share_servers=False
share_backend_name=tripleo_ceph
share_driver=manila.share.drivers.cephfs.driver.CephFSDriver
cephfs_conf_path=/etc/ceph/ceph.conf
cephfs_auth_id=openstack
cephfs_cluster_name=ceph
cephfs_volume_mode=0755
cephfs_protocol_helper_type=CEPHFS
networkAttachments:
- storage
__EOF__
oc patch openstackcontrolplane openstack --type=merge --patch-file=~/manila.patch
oc patch openstackcontrolplane openstack --type=merge --patch-file=~/manila.patch
1.15.4. post-checks 复制链接链接已复制到粘贴板!
1.15.4.1. 检查生成的 manila 服务 pod 复制链接链接已复制到粘贴板!
oc get pods -l service=manila
oc get pods -l service=manila
1.15.4.2. 检查 Manila API 服务是否在 Keystone 中注册 复制链接链接已复制到粘贴板!
openstack service list | grep manila
openstack service list | grep manila
openstack endpoint list | grep manila | 1164c70045d34b959e889846f9959c0e | regionOne | manila | share | True | internal | http://manila-internal.openstack.svc:8786/v1/%(project_id)s | | 63e89296522d4b28a9af56586641590c | regionOne | manilav2 | sharev2 | True | public | https://manila-public-openstack.apps-crc.testing/v2 | | af36c57adcdf4d50b10f484b616764cc | regionOne | manila | share | True | public | https://manila-public-openstack.apps-crc.testing/v1/%(project_id)s | | d655b4390d7544a29ce4ea356cc2b547 | regionOne | manilav2 | sharev2 | True | internal | http://manila-internal.openstack.svc:8786/v2 |
openstack endpoint list | grep manila
| 1164c70045d34b959e889846f9959c0e | regionOne | manila | share | True | internal | http://manila-internal.openstack.svc:8786/v1/%(project_id)s |
| 63e89296522d4b28a9af56586641590c | regionOne | manilav2 | sharev2 | True | public | https://manila-public-openstack.apps-crc.testing/v2 |
| af36c57adcdf4d50b10f484b616764cc | regionOne | manila | share | True | public | https://manila-public-openstack.apps-crc.testing/v1/%(project_id)s |
| d655b4390d7544a29ce4ea356cc2b547 | regionOne | manilav2 | sharev2 | True | internal | http://manila-internal.openstack.svc:8786/v2 |
1.15.4.3. 验证资源 复制链接链接已复制到粘贴板!
测试服务的健康状况:
openstack share service list openstack share pool list --detail
openstack share service list
openstack share pool list --detail
检查现有工作负载:
openstack share list openstack share snapshot list
openstack share list
openstack share snapshot list
您可以创建其他资源:
openstack share create cephfs 10 --snapshot mysharesnap --name myshareclone
openstack share create cephfs 10 --snapshot mysharesnap --name myshareclone