1 2 3 4 5 6 7 作者:李晓辉 联系方式: 微信:Lxh_Chat 邮箱:939958092@qq.com
前言 在OpenStack云环境中,块存储和文件存储是两种主要的存储服务类型。继Cinder块存储服务之后,接下来我们将聚焦于Manila文件共享服务的部署与配置。Manila服务为OpenStack云平台提供了共享文件系统的能力,使得多个虚拟机实例能够同时访问和修改同一文件系统,从而实现高效的数据共享与协作。
本文将详细介绍如何在OpenStack环境中安装和配置Manila文件共享服务。我们将逐步介绍Manila服务的安装、配置以及启动过程,以确保其能够正常运行并为虚拟机实例提供文件共享功能。通过本文的指导,你将能够成功部署并运行Manila服务,满足不同业务场景下的文件共享需求。
Manila服务概述 Manila的作用 Manila是OpenStack中的共享文件系统服务组件,其主要功能包括:
共享文件系统管理 :提供共享文件系统的创建、删除、挂载和配置管理功能,支持多种文件系统类型。
多租户支持 :支持多租户环境中的文件系统资源隔离和配额管理,确保不同租户的文件系统资源独立。
与计算服务集成 :与Nova服务紧密集成,为虚拟机实例提供文件共享功能,确保虚拟机能够正常访问共享文件系统。
文件系统类型管理 :支持多种文件系统类型,如NFS、CIFS等,允许用户根据需求选择合适的文件系统类型。
备份与恢复 :提供文件系统的备份和恢复功能,确保数据的安全性和可靠性。
Manila的架构 Manila服务由以下几个主要组件构成:
manila-api :提供RESTful API接口,供用户和管理员管理共享文件系统资源。
manila-scheduler :根据预定义的策略选择合适的存储节点来创建共享文件系统。
manila-share :负责实际的共享文件系统创建、管理和与后端存储设备的交互。
数据库 :Manila使用关系型数据库(如MariaDB)存储共享文件系统的配置信息。
工作原理 Manila的工作原理可以概括为以下几个步骤:
API请求处理 :用户通过Manila API发送请求,如创建共享文件系统、挂载共享文件系统等。manila-api
组件接收这些请求,并将其转发给相应的服务组件。
资源分配与配置 :根据用户的请求,manila-scheduler
选择合适的存储节点,并将配置信息传递给manila-share
。
共享文件系统管理 :manila-share
根据配置信息,与后端存储设备进行交互,完成共享文件系统的创建、挂载等操作。
备份与恢复 :提供共享文件系统的备份和恢复功能,确保数据的安全性和可靠性。
通过以上机制,Manila服务确保了共享文件系统资源的高效管理和灵活配置,为OpenStack环境中的虚拟机实例提供强大的文件共享功能。
我把manila服务并置在controller这台机器上
准备manila数据库 在控制节点上,为Manila服务创建数据库和用户,并分配相应的权限。
1 mysql -u root -pLiXiaohui
1 2 3 4 CREATE DATABASE manila; GRANT ALL PRIVILEGES ON manila.* TO 'manila' @'localhost' IDENTIFIED BY 'LiXiaohui' ; GRANT ALL PRIVILEGES ON manila.* TO 'manila' @'%' IDENTIFIED BY 'LiXiaohui' ; exit
创建manila服务用户 加载管理员环境变量文件,创建Manila服务用户并添加到service项目中,为其分配admin角色。
1 2 3 4 5 6 7 8 9 10 11 12 [root@controller ~]# openstack user create --domain default --password LiXiaohui manila +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 4427fcb6f82d412cac8da44118c2d1b1 | | name | manila | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ [root@controller ~]# openstack role add --project service --user manila admin
创建manila服务以及endpoint 创建manila服务 注册Manila服务到Keystone服务目录中,分别为Manila v1和v2版本创建服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@controller ~]# openstack service create --name manila --description "OpenStack Shared File Systems" share +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Shared File Systems | | enabled | True | | id | 3fc0e0b3f5404a8b8fe2e22e31c1fb97 | | name | manila | | type | share | +-------------+----------------------------------+ [root@controller ~]# openstack service create --name manilav2 --description "OpenStack Shared File Systems V2" sharev2 +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Shared File Systems V2 | | enabled | True | | id | e41e8c69b86e4e74bba6b2c931f7d673 | | name | manilav2 | | type | sharev2 | +-------------+----------------------------------+
创建manila endpoint 为Manila服务创建相应的API端点,确保其他服务能够通过Keystone发现和访问Manila服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 [root@controller ~]# openstack endpoint create --region RegionOne share public http://controller:8786/v1/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 22a3ac8a89874f94a8c9a53a120ac165 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 3fc0e0b3f5404a8b8fe2e22e31c1fb97 | | service_name | manila | | service_type | share | | url | http://controller:8786/v1/%(tenant_id)s | +--------------+-----------------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne share internal http://controller:8786/v1/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 385626d50d324d39873a503e6a81423c | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 3fc0e0b3f5404a8b8fe2e22e31c1fb97 | | service_name | manila | | service_type | share | | url | http://controller:8786/v1/%(tenant_id)s | +--------------+-----------------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne share admin http://controller:8786/v1/%\(tenant_id\)s +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 28568224c35e4c5b8d533888decfbe5f | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 3fc0e0b3f5404a8b8fe2e22e31c1fb97 | | service_name | manila | | service_type | share | | url | http://controller:8786/v1/%(tenant_id)s | +--------------+-----------------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne sharev2 public http://controller:8786/v2 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 7fdf805093a24aa09a4eee27681b38c2 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | e41e8c69b86e4e74bba6b2c931f7d673 | | service_name | manilav2 | | service_type | sharev2 | | url | http://controller:8786/v2 | +--------------+----------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne sharev2 internal http://controller:8786/v2 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 47b4ce4125294061a945e595c22770c4 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | e41e8c69b86e4e74bba6b2c931f7d673 | | service_name | manilav2 | | service_type | sharev2 | | url | http://controller:8786/v2 | +--------------+----------------------------------+ [root@controller ~]# openstack endpoint create --region RegionOne sharev2 admin http://controller:8786/v2 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | a88c310beef743fda7d8f93cd7f44b27 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | e41e8c69b86e4e74bba6b2c931f7d673 | | service_name | manilav2 | | service_type | sharev2 | | url | http://controller:8786/v2 | +--------------+----------------------------------+
安装配置minila组件 安装manila软件 在控制节点上安装Manila服务和客户端软件。
1 yum install openstack-manila python3-manilaclient -y
准备配置文件 编辑Manila配置文件/etc/manila/manila.conf,设置消息队列、身份认证、数据库连接以及Manila服务的相关参数。
/etc/manila/manila.conf
是manila配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 crudini --set /etc/manila/manila.conf DEFAULT my_ip 192.168.8.10 crudini --set /etc/manila/manila.conf DEFAULT auth_strategy keystone crudini --set /etc/manila/manila.conf DEFAULT default_share_type default_share_type crudini --set /etc/manila/manila.conf DEFAULT share_name_template share-%s crudini --set /etc/manila/manila.conf DEFAULT rootwrap_config /etc/manila/rootwrap.conf crudini --set /etc/manila/manila.conf DEFAULT api_paste_config /etc/manila/api-paste.ini crudini --set /etc/manila/manila.conf DEFAULT transport_url rabbit://openstack:LiXiaohui@controller crudini --set /etc/manila/manila.conf database connection mysql+pymysql://manila:LiXiaohui@controller/manila crudini --set /etc/manila/manila.conf keystone_authtoken memcached_servers controller:11211 crudini --set /etc/manila/manila.conf keystone_authtoken www_authenticate_uri http://controller:5000 crudini --set /etc/manila/manila.conf keystone_authtoken auth_url http://controller:5000 crudini --set /etc/manila/manila.conf keystone_authtoken auth_type password crudini --set /etc/manila/manila.conf keystone_authtoken project_domain_name Default crudini --set /etc/manila/manila.conf keystone_authtoken user_domain_name Default crudini --set /etc/manila/manila.conf keystone_authtoken project_name service crudini --set /etc/manila/manila.conf keystone_authtoken username manila crudini --set /etc/manila/manila.conf keystone_authtoken password LiXiaohui crudini --set /etc/manila/manila.conf oslo_concurrency lock_path /var/lib/manila/tmp
或者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [DEFAULT] my_ip = 192.168 .8.10 auth_strategy = keystonedefault_share_type = default_share_typeshare_name_template = share-%srootwrap_config = /etc/manila/rootwrap.confapi_paste_config = /etc/manila/api-paste.initransport_url = rabbit://openstack:LiXiaohui@controller[database] connection = mysql+pymysql://manila:LiXiaohui@controller/manila[keystone_authtoken] ... memcached_servers = controller:11211 www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = manilapassword = LiXiaohui[oslo_concurrency] lock_path = /var/lib/manila/tmp
填充manila数据库 运行manila-manage db sync命令,初始化或更新Manila服务使用的数据库。
1 su -s /bin/sh -c "manila-manage db sync" manila
启动manila服务 1 systemctl enable openstack-manila-api.service openstack-manila-scheduler.service --now
openstack-manila-api 该服务提供RESTful API接口,供用户和管理员管理共享文件系统资源。openstack-manila-scheduler 该服务根据预定义的策略选择合适的存储节点来创建共享文件系统。