Openstack 安装部署指南翻译系列 之 Manila服务安装(Share Storage)
1.1.1.1. Manila服务安装(Share Storage)1.1.1.1.1. 服务概述OpenStack共享文件系统服务(manila)为虚拟机提供文件存储。共享文件系统服务提供了一个管理和配置文件共享的集合。该服务还支持共享类型的管理以及支持共享快照,前提是需要驱动程序支持。 共享文件系统服务由以下组件组成: manila-api 验证请求并将其路由到共享文件系统服务的WSGI应用程序。 manila-data 一个独立的服务,其目的是处理数据操作,如复制,共享迁移或备份。 manila-scheduler 安排和路由请求到适当的共享服务。调度程序使用可配置的过滤器和计量器来路由请求。筛选计划程序是默认筛选器,可在后端的各种属性(如容量,可用区和其他功能)上启用筛选。 manila-share 管理提供共享文件系统的后端设备。manila共享服务通过使用共享后端驱动程序作为接口与后端设备进行通信。共享驱动程序可以以两种模式之一运行,无论是否处理共享服务器。共享服务器通过共享网络导出文件共享。共享文件系统服务中的共享服务器不由驱动程序管理时,网络要求应该在共享文件系统服务的带外处理。 Messaging queue 在共享文件系统进程之间路由信息。 1.1.1.1.2. 安装和配置控制器节点本节介绍如何在运行Red Hat Enterprise Linux或CentOS的控制器节点上安装和配置代码为manila的共享文件系统服务。此服务至少需要一个管理文件存储后端的额外共享节点。 1.1.1.1.2.1. 前提条件在安装和配置共享文件系统服务之前,您必须创建数据库,服务凭据和API端点。 1、要创建数据库,请完成以下步骤: 使用数据库访问客户端以root用户身份连接到数据库服务器 : $ mysql -u root -p 创建manila数据库: CREATE DATABASE manila; 授予对manila数据库的正确访问权限: GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'localhost' \ IDENTIFIED BY 'MANILA_DBPASS'; GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'%' \ IDENTIFIED BY 'MANILA_DBPASS'; 用MANILA_DBPASS合适的密码替换。 退出数据库访问客户端。 2、获取管理员admin凭据CLI命令: $ . admin-openrc.sh 3、要创建服务凭据,请完成以下步骤: 创建一个manila用户: $ openstack user create --domain default --password-prompt manila User Password: Repeat User Password: 将admin角色添加到manila用户: $ openstack role add --project service --user manila admin 创建manila和manilav2服务实体: $ openstack service create --name manila \ --description "OpenStack Shared File Systems" share $ openstack service create --name manilav2 \ --description "OpenStack Shared File Systems" sharev2 注意:共享文件系统服务需要两个服务实体。 4、创建共享文件系统服务API端点: $ openstack endpoint create --region RegionOne \ share public http://controller:8786/v1/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ share internal http://controller:8786/v1/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ share admin http://controller:8786/v1/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ sharev2 public http://controller:8786/v2/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ sharev2 internal http://controller:8786/v2/%\(tenant_id\)s $ openstack endpoint create --region RegionOne \ sharev2 admin http://controller:8786/v2/%\(tenant_id\)s 注意:共享文件系统服务需要每个服务实体的端点。 1.1.1.1.2.2. 安装和配置的部件1、安装软件包: # yum install openstack-manila python-manilaclient 2、编辑/etc/manila/manila.conf文件并完成以下操作: 在该[database]部分中,配置数据库访问: [database] ... connection = mysql+pymysql://manila:MANILA_DBPASS@controller/manila 替换MANILA_DBPASS为您为共享文件系统数据库选择的密码。 3、完成其余的配置manila.conf: 在该[DEFAULT]部分中,配置RabbitMQ 消息队列访问: [DEFAULT] ... transport_url = rabbit://openstack:RABBIT_PASS@controller 替换RABBIT_PASS为您为该openstack 帐户选择的密码RabbitMQ。 在该[DEFAULT]部分中,设置以下配置值: [DEFAULT] ... default_share_type = default_share_type share_name_template = share-%s rootwrap_config = /etc/manila/rootwrap.conf api_paste_config = /etc/manila/api-paste.ini 重要:该default_share_type选项指定创建共享时使用的默认共享类型,而不指定请求中的共享类型。在配置文件中指定的默认共享类型必须根据driver_handles_share_servers所使用的驱动程序模式进行必要的额外规格(如driver_handles_share_servers)设置。在讨论共享节点的设置和配置的章节中对此进行了进一步说明。 在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问: [DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... memcached_servers = controller:11211 auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_type = password project_domain_id = default user_domain_id = default project_name = service username = manila password = MANILA_PASS 替换MANILA_PASS为您manila 在身份识别服务中为用户选择的密码。 在该[DEFAULT]部分中,将该my_ip选项配置为使用控制器节点的管理接口IP地址: [DEFAULT] ... my_ip = 10.0.0.11 在该[oslo_concurrency]部分中,配置锁定路径: [oslo_concurrency] ... lock_path = /var/lock/manila 4、填充共享文件系统数据库: # su -s /bin/sh -c "manila-manage db sync" manila 1.1.1.1.2.3. 完成安装启动共享文件系统服务并将其配置为在系统引导时启动: # systemctl enable openstack-manila-api.service openstack-manila-scheduler.service # systemctl start openstack-manila-api.service openstack-manila-scheduler.service 1.1.1.1.3. 安装并配置共享节点本节介绍如何为共享文件系统服务安装和配置共享节点。为简单起见,此配置引用一个存储节点与通用驱动程序管理共享服务器。通用后端使用计算、网络和块服务来管理共享服务器以供应共享。 注意:manila共享流程可以以两种模式运行,不管是否共享服务器。一些驱动可能支持这两种模式; 而有些可能只支持这两种模式之一。请参阅“ 配置参考” 以确定您选择的驱动程序是否支持所需的驱动程序模式。本教程介绍如何使用该模式的示例驱动程序设置每个驱动程序模式。 请注意,安装和配置因分布而异。 1.1.1.1.3.1. 安装和配置的部件1、安装软件包: # yum install openstack-manila-share python2-PyMySQL 2、编辑/etc/manila/manila.conf文件并完成以下操作: 在该[database]部分中,配置数据库访问: [database] ... connection = mysql://manila:MANILA_DBPASS@controller/manila 替换MANILA_DBPASS为您为共享文件系统数据库选择的密码。 3、完成其余的配置manila.conf。 在该[DEFAULT]部分中,配置RabbitMQ 消息队列访问: [DEFAULT] ... transport_url = rabbit://openstack:RABBIT_PASS@controller 替换RABBIT_PASS为您为该openstack帐户选择的密码 RabbitMQ。 在该[DEFAULT]部分中,设置以下配置值: [DEFAULT] ... default_share_type = default_share_type rootwrap_config = /etc/manila/rootwrap.conf 重要:该default_share_type选项指定创建共享时使用的默认共享类型,而不指定请求中的共享类型。在配置文件中指定的默认共享类型必须根据driver_handles_share_servers所使用的驱动程序模式进行必要的额外规格(如driver_handles_share_servers)设置。这在后面的步骤中解释。 在[DEFAULT]和[keystone_authtoken]部分中,配置身份服务访问: [DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... memcached_servers = controller:11211 auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_type = password project_domain_id = default user_domain_id = default project_name = service username = manila password = MANILA_PASS 替换MANILA_PASS为您manila 在身份识别服务中为用户选择的密码。 在该[DEFAULT]部分中,配置my_ip选项: [DEFAULT] ... my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS 替换MANAGEMENT_INTERFACE_IP_ADDRESS为共享节点上管理网络接口的IP地址,典型值为10.0.0.41,用于以下所示示例体系结构中的第一个节点: 在该[oslo_concurrency]部分中,配置锁定路径: [oslo_concurrency] ... lock_path = /var/lib/manila/tmp 1.1.1.1.3.1.1. 两个驱动模式
共享节点可以支持两种模式,有和没有共享服务器的处理。该模式取决于驱动程序的支持。 选项1 部署服务时不需要驱动程序支持共享服务器管理。在这种模式下,服务不会做任何与网络有关的事情。管理员必须确保实例与基于NAS协议的服务器之间的网络连接。 本教程演示如何设置在共享节点上创建LVM卷的LVM驱动程序,并在共享节点上本地安装的NFS服务器的帮助下将其导出。因此,它需要LVM和NFS软件包以及manila-shareLVM卷组的附加磁盘。 这种驱动模式可以被称为driver_handles_share_servers = False 模式,或者简单地称为DHSS=False模式。 选项2 部署服务与驱动程序支持共享服务器管理。在这种模式下,该服务与创建和管理共享服务器的后端驱动程序一起运行。本教程演示如何设置Generic驱动程序。该驱动程序需要计算服务(nova),图像服务(glance)和网络服务(neutron)来创建和管理共享服务器; 和块存储服务(cinder)来创建共享。 用于创建共享服务器的信息是在共享网络的帮助下配置的。 这种驱动模式可以被称为driver_handles_share_servers = True模式,或者简单地称为DHSS=True模式。 警告:在DHSS=True驱动程序模式下运行通用驱动程序时,共享服务应与网络服务在同一节点上运行。但是,DHSS=False由于某些Linux发行版中的错误,这样的服务可能无法有效运行以驱动程序模式运行的LVM驱动程序。有关更多信息,请参阅“ 配置参考指南”中的LVM驱动程序部分 。 选择以下选项之一来配置共享驱动程序: 1.1.1.1.3.1.2. 共享文件系统选项1:没有驱动程序支持共享服务器管理
为简单起见,此配置引用块存储服务的相同存储节点配置。但是,LVM驱动程序需要单独的空本地块存储设备,以避免与块存储服务发生冲突。说明使用/dev/sdc,但是您可以替换您的特定节点的不同值。 前提条件 注意:在存储节点上执行这些步骤。 1、安装支持的实用程序包: 安装LVM和NFS服务器软件包: # yum install lvm2 nfs-utils nfs4-acl-tools portmap 启动LVM元数据服务并将其配置为在系统引导时启动: # systemctl enable lvm2-lvmetad.service # systemctl start lvm2-lvmetad.service 2、创建LVM物理卷/dev/sdc: # pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created 3、创建LVM卷组manila-volumes: # vgcreate manila-volumes /dev/sdc Volume group "manila-volumes" successfully created 共享文件系统服务在此卷组中创建逻辑卷。 4、只有实例才能访问共享文件系统服务卷。但是,底层操作系统管理与卷关联的设备。默认情况下,LVM卷扫描工具会扫描/dev包含卷的块存储设备的 目录。如果项目在其卷上使用LVM,则扫描工具将检测这些卷并尝试缓存这些卷,这可能会导致底层操作系统和项目卷的各种问题。您必须重新配置LVM以仅扫描包含cinder-volume和manila-volumes卷组的设备。编辑/etc/lvm/lvm.conf文件并完成以下操作: 在该devices部分中,添加一个接受/dev/sdb和/dev/sdc设备的过滤器, 并拒绝所有其他设备: devices { ... filter = [ "a/sdb/", "a/sdc", "r/.*/"] 警告:如果您的存储节点在操作系统磁盘上使用LVM,则还必须将关联的设备添加到过滤器。例如,如果/dev/sda设备包含操作系统: filter = [ "a/sda/", "a/sdb/", "a/sdc", "r/.*/"] 同样,如果计算节点在操作系统磁盘上使用LVM,则还必须修改/etc/lvm/lvm.conf这些节点上的文件中的筛选器, 使其只包含操作系统磁盘。例如,如果/dev/sda 设备包含操作系统: filter = [ "a/sda/", "r/.*/"] 配置组件 编辑/etc/manila/manila.conf文件并完成以下操作: 在该[DEFAULT]部分中,启用LVM驱动程序和NFS协议: [DEFAULT] ... enabled_share_backends = lvm enabled_share_protocols = NFS 注意 后端名称是任意的。例如,本指南使用驱动程序的名称。 在本[lvm]节中,配置LVM驱动程序: [lvm] share_backend_name = LVM share_driver = manila.share.drivers.lvm.LVMShareDriver driver_handles_share_servers = False lvm_share_volume_group = manila-volumes lvm_share_export_ip = MANAGEMENT_INTERFACE_IP_ADDRESS 替换MANAGEMENT_INTERFACE_IP_ADDRESS为存储节点上管理网络接口的IP地址,典型值为10.0.0.41(对于以下所示示例体系结构中的第一个节点): 1.1.1.1.3.2. 共享文件系统选项2:驱动程序支持共享服务器管理为简单起见,此配置引用与用于块存储服务的存储节点相同的存储节点。 注意:本指南介绍如何将共享文件系统服务配置为在generic驱动程序启用共享服务器模式(DHSS)的情况下使用驱动程序。该驱动程序需要计算服务(nova),图像服务(glance)和网络服务(neutron)来创建和管理共享服务器; 和块存储服务(cinder)来创建共享。用于创建共享服务器的信息被配置为共享网络。启用DHSS的通用驱动程序还要求租户的专用网络(计算实例正在运行的位置)连接到公用路由器。 前提条件 在继续之前,请验证计算,网络和数据块存储服务的操作。此选项要求实施网络选项2,并要求在存储节点上安装一些网络服务组件。 安装网络服务组件: # yum install openstack-neutron openstack-neutron-linuxbridge ebtables 配置组件 编辑/etc/manila/manila.conf文件并完成以下操作: 在该[DEFAULT]部分中,启用通用驱动程序和NFS协议: [DEFAULT] ... enabled_share_backends = generic enabled_share_protocols = NFS 注意:后端名称是任意的。例如,本指南使用驱动程序的名称。 在[neutron],[nova]和[cinder]段,启用这些服务的身份验证: [neutron] ... url = http://controller:9696 auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = NEUTRON_PASS [nova] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = NOVA_PASS [cinder] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = cinder password = CINDER_PASS 在该[generic]部分中,配置通用驱动程序: [generic] share_backend_name = GENERIC share_driver = manila.share.drivers.generic.GenericShareDriver driver_handles_share_servers = True service_instance_flavor_id = 100 service_image_name = manila-service-image service_instance_user = manila service_instance_password = manila interface_driver = manila.network.linux.interface.BridgeInterfaceDriver 注意:您也可以使用SSH密钥代替服务实例凭证的密码认证。 重要:service_image_name,service_instance_flavor_id, service_instance_user和service_instance_password是参照所使用的驱动程序来创建共享服务器服务镜像。项目中generic 提供了与驱动程序一起使用的示例服务镜像manila-image-elements。在安装后步骤中介绍了其创建过程(请参阅: 创建和使用共享文件系统)。 完成安装 准备manila分享作为开始/停止服务。启动共享文件系统服务(包括其依赖关系),并将其配置为在系统引导时启动: # systemctl enable openstack-manila-share.service target.service # systemctl start openstack-manila-share.service target.service 1.1.1.1.4. 验证操作验证共享文件系统服务的操作。 注意:在控制器节点上执行这些命令。 1、生效admin凭据来访问仅管理员CLI命令: $ . admin-openrc.sh 2、列出服务组件以验证每个进程的成功启动: $ manila service-list 1.1.1.1.5. 创建和使用共享文件系统根据在安装共享节点时选择的选项(带有共享服务器管理的选项或者不带); 创建和使用共享文件系统的步骤将有所不同。当共享文件系统服务处理共享服务器的创建和管理时,您需要指定 带有share network请求创建共享。两种模式在各自的共享类型定义中都会有所不同。在自动处理共享服务器的情况下使用驱动程序模式时,需要根据您的配置中指定的服务镜像。以下说明列举了两种驱动程序模式的步骤。以遵循适合您的安装的内容。 1.1.1.1.5.1. 使用共享文件系统选项1创建共享(DHSS = False)
创建共享类型 在使用LVM驱动程序创建共享之前,禁用DHSS(driver_handles_share_servers)。 1、获取管理员凭据以访问仅限管理员的CLI命令: $ . admin-openrc 2、创建一个禁用DHSS的默认共享类型。默认共享类型将允许您使用此驱动程序创建共享,而无需在共享创建期间明确指定共享类型。 $ manila type-create default_share_type False 设置此默认共享键入manila.conf下的[DEFAULT] 部分,然后重新启动manila-api继续之前的服务。除非您这样做,否则默认分享类型将无效。 创建一个共享 1、生效demo环境作为非管理员,执行以下步骤: $ . demo-openrc 2、创建一个NFS共享。由于默认的共享类型已被创建和配置,因此不需要在请求中指定。 $ manila create NFS 1 --name share1 3、过了一段时间,股份状态应该从creating 变为available: $ manila list 4、确定共享的导出IP地址: $ manila show share1 允许访问共享 在尝试通过网络安装之前配置对新共享的访问。计算实例(其IP地址由以下INSTANCE_IP引用)必须具有与共享网络中指定的网络的网络连接。 $ manila access-allow share1 ip INSTANCE_IP 将共享挂载到计算实例上? 1、登录到您的计算实例,并创建一个文件夹放置的地方: $ mkdir ~/test_folder 2、使用共享的导出位置在计算实例中挂载NFS共享: # mount -vt nfs 10.0.0.41:/var/lib/manila/mnt/share-8e13a98f-c310-41df-ac90-fc8bce4910b8 ~/test_folder 1.1.1.1.5.2. 使用共享文件系统选项2创建共享(DHSS = True)在能够创建共享之前,具有通用驱动程序和启用DHSS(driver_handles_share_servers)模式的马尼拉需要至少定义用于创建共享服务器的镜像,网络和共享网络。对于后端配置,共享服务器是NFS共享服务的实例。 注意:此配置会自动为每个共享创建一个cinder卷。根据共享网络的定义,将cinder卷连接到共享服务器。 1、获取管理员凭据以访问仅限管理员的CLI命令: $ . admin-openrc.sh 2、创建启用DHSS的默认共享类型。默认共享类型将允许您使用此驱动程序创建共享,而无需在共享创建期间明确指定共享类型。 $ manila type-create default_share_type True 设置此默认共享manila.conf下的[DEFAULT] 部分,然后重新启动manila-api服务。除非您这样做,否则默认分享类型将不会生效。 3、在Image服务中创建一个马尼拉共享服务器镜像。您可以跳过这一步并使用任何现有的镜像。但是,为了装载共享,服务镜像必须包含适合操作系统的NFS软件包。无论你选择什么镜像成为服务镜像,一定要在 manila.conf设置service_image_name,service_instance_flavor_id, service_instance_user和service_instance_password。 注意:manila.conf在manila-share服务运行时所做的任何更改都需要重新启动服务才能生效。 注意:作为service_instance_password在配置中指定纯文本的替代方法, 可以使用选项指定密钥对,path_to_public_key和 path_to_private_key在共享节点和共享服务器之间配置和允许无密码SSH访问。 $ glance image-create \ --name "manila-service-image" \ --disk-format qcow2 \ --container-format bare \ --visibility public --progress 4、列出可用网络以获取专用网络的ID和子网: $ neutron net-list 获取demo非管理员环境变量,执行以下步骤: $ . demo-openrc.sh $ manila share-network-create --name demo-share-network1 \ --neutron-net-id PRIVATE_NETWORK_ID \ --neutron-subnet-id PRIVATE_NETWORK_SUBNET_ID 创建一个共享 1、使用共享网络创建一个NFS共享。由于默认的共享类型已被创建和配置,因此不需要在请求中指定。 $ manila create NFS 1 --name demo-share1 --share-network demo-share-network1 2、过了一段时间,股份状态应该从以下creating 变为available: $ manila list 3、确定共享的导出IP地址: $ manila show demo-share1 允许访问共享 在尝试通过网络安装之前配置对新共享的访问。计算实例(其IP地址由以下INSTANCE_IP引用)必须具有与共享网络中指定的网络的网络连接。 $ manila access-allow demo-share1 ip INSTANCE_IP 将共享挂载到计算实例上 1、登录到您的计算实例,并创建一个文件夹放置的地方: $ mkdir ~/test_folder 2、使用共享的导出位置在计算实例中挂载NFS共享: $ mount -vt nfs 10.254.0.6:/shares/share-0bfd69a1-27f0-4ef5-af17-7cd50bce6550 ~/test_folder
|