Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
自定义块存储后端部署指南
在 Red Hat OpenStack Platform Overcloud 中部署自定义块存储后端的指南
OpenStack Documentation Team
rhos-docs@redhat.com
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 简介
Red Hat OpenStack Platform (RHOSP) director是一个安装和管理完整的 RHOSP 环境的工具组。它主要基于上游 TripleO (OpenStack-on-OpenStack)项目。director 的主要目标是通过最少的手动配置来完全编排功能的企业级 RHOSP 部署。它有助于解决手动配置各个 OpenStack 组件固有的许多问题。
director 提供的 end-result RHOSP 部署称为 overcloud。overcloud 包含为最终用户提供服务的所有组件,包括块存储。本文档提供了有关如何将自定义后端部署到 overcloud 的块存储服务的指导。
本文档介绍了与手动块存储配置相关的现有概念。在测试 OpenStack 部署(例如通过 Packstack)进行配置时,此服务涉及编辑其主机节点的 /etc/cinder/cinder.conf
。该文件中的大多数块存储设置在其他位置进行了更详细的记录;本文档描述了如何将相同的设置应用到 overcloud 以附加自定义后端。
在有限的用例中,此步骤已被成功测试。请确保您首先在非生产环境中测试您的计划部署。如果您有任何问题,请联系红帽支持。
1.1. 自定义后端
出于本文档的目的,自定义后端被定义为存储服务器,设备或配置已完全集成到 Red Hat OpenStack Platform director 中。某些支持的块存储后端已经集成到 director 中,这意味着已经提供了预先配置的 director 文件。可以通过这些文件将集成的后端配置和部署到 overcloud。集成后端的示例包括 Red Hat Ceph 和 Dell EMC PS 系列、Dell Storage Center 和 NetApp 设备的单后端配置。
此外,一些存储设备已经集成到 director 中,仅支持单实例后端。例如,Dell Storage Center 的预配置 director 文件只支持部署单一后端。如本文档中所示,部署此设备的多个后端实例需要自定义配置。
虽然您可以通过直接编辑其节点的 /etc/cinder/cinder.conf
文件来手动配置块存储服务,但 director 在运行 openstack overcloud deploy
命令时会覆盖配置。因此,部署块存储后端的建议方法是通过 director,这样可确保您的设置保留在 overcloud 部署和更新中。
如果后端配置已经完全集成,您可以编辑并调用其打包环境文件。但是,使用自定义后端,您必须编写自己的环境文件。有关更多信息,请参阅 Director 安装和使用 指南中的在 Overcloud 创建 中包含环境文件。本文档包括了一个注解的示例,您可以为您自己的部署编辑: /home/stack/templates/custom-env.yaml。此示例文件可用于配置块存储服务以使用两个 NetApp 后端。
1.2. 要求
前提条件
- 除手动配置块存储和您想要部署的后端的信息外。
- 如果您使用第三方后端设备,则它们必须正确配置为存储库。
- overcloud 已经通过 director 部署。请参阅 Director 安装和使用 指南。
-
您有具有升级权限的帐户的用户名和密码。您可以使用您创建的帐户来部署 overcloud。请参阅 Director 安装和使用 指南中的 创建 stack 用户。为满足此目的创建了
stack
用户。 -
您已映射了
/etc/cinder/cinder.conf
中 Block Storage 后端生成的配置。
第 2 章 进程描述
块存储服务的设置存储在 /etc/cinder/cinder.conf
中,这些设置包括 后端定义。大部分第三方后端可用于(或甚至受支持)块存储服务提供涉及编辑 /etc/cinder/cinder.conf
设置的设置说明。如 第 1 章 简介 中所述,这样做将配置块存储服务;但是,这些设置将在以后被 Overcloud 更新中覆盖。
无论如何,任何与通过 /etc/cinder/cinder.conf
进行手动配置的文档对于 Overcloud 部署仍很有用。毕竟 Director 会将相同的配置应用到 /etc/cinder/cinder.conf
,通过 heat 将 albeit 应用到 /etc/cinder/cinder.conf。因此,规划后端配置需要您:
- 全面规划您想要的块存储后端配置,
-
为此配置映射生成的
/etc/cinder/cinder.conf
文件。
在映射生成的 /etc/cinder/cinder.conf
文件后,创建可编排后端设置的环境文件。环境文件 使用示例文件 /home/stack/templates/custom-env.yaml
更详细地描述这一步。使环境文件手动设置将有助于确保后端设置在将来的 Overcloud 更新中保留。
第 3 章 创建环境文件
环境文件包含您要定义的每个后端的设置,以及其他相关设置。有关环境文件的更多信息, 请参阅高级 Overcloud 自定义指南中的 环境文件。
以下示例环境文件定义了两个 NetApp 后端: netapp1 和 netapp2 :
/home/stack/templates/custom-env.yaml
parameter_defaults: # 1 CinderEnableIscsiBackend: false CinderEnableRbdBackend: false CinderEnableNfsBackend: false NovaEnableRbdBackend: false GlanceBackend: file # 2 ControllerExtraConfig: # 3 cinder::config::cinder_config: netapp1/volume_driver: # 4 value: cinder.volume.drivers.netapp.common.NetAppDriver netapp1/netapp_storage_family: value: ontap_7mode netapp1/netapp_storage_protocol: value: iscsi netapp1/netapp_server_hostname: value: 10.35.64.11 netapp1/netapp_server_port: value: 80 netapp1/netapp_login: value: root netapp1/netapp_password: value: p@$$w0rd netapp1/volume_backend_name: value: netapp1 netapp2/volume_driver: # 5 value: cinder.volume.drivers.netapp.common.NetAppDriver # 6 netapp2/netapp_storage_family: value: ontap_7mode netapp2/netapp_storage_protocol: value: iscsi netapp2/netapp_server_hostname: value: 10.35.64.11 netapp2/netapp_server_port: value: 80 netapp2/netapp_login: value: root netapp2/netapp_password: value: p@$$w0rd netapp2/volume_backend_name: value: netapp2 cinder_user_enabled_backends: ['netapp1','netapp2'] # 7
- 1
- 以下参数被设置为
false
,因此禁用其他后端类型:-
CinderEnableIscsiBackend
:其他 iSCSI 后端. -
CinderEnableRbdBackend
: Red Hat Ceph。 -
CinderEnableNfsBackend
: NFS. -
NovaEnableRbdBackend
: ephemeral Red Hat Ceph Storage.
-
- 2
- GlanceBackend 参数设置镜像服务应该用来存储镜像的内容。支持以下值:
-
文件
:将镜像存储在每个 Controller 节点上的/var/lib/glance/images
上。 -
Swift
:将对象存储服务用于镜像存储。 -
Cinder
:使用块存储服务进行镜像存储。
-
- 3
ControllerExtraConfig
定义应用到所有 Controller 节点的自定义设置。cinder::config::cinder_config
类意味着设置应应用到块存储(cinder
)服务。反过来,这意味着后端设置最终将在每个 Controller 节点的/etc/cinder/cinder.conf
文件中结束。- 4
netapp1/volume_driver
和netapp2/volume_driver
设置遵循 部分/设置 语法。使用 Block Storage 服务时,每个后端在/etc/cinder/cinder.conf
中的其自己的部分中定义。使用netapp1
前缀的每个设置将在一个新的[netapp1]
后端部分定义。- 5
- 同样,
netapp2
设置在单独的[netapp2]
部分中定义。 - 6
值
前缀配置前面的设置。- 7
cinder_user_enabled_backends
类集合并启用自定义后端。顾名思义,此类应当仅用于启用用户的后端;特别是cinder::config::cinder_config
类中定义的后端。不要使用
cinder_user_enabled_backends
来列出后端,您可以通过 Director 进行原生启用。这包括支持的 NetApp 或 Dell 设备的 Red Hat Ceph、NFS 和单一后端。例如,如果您还启用了 Red Hat Ceph 后端,请不要在cinder_user_enabled_backends
中列出它;相反,则使用CinderEnableRbdBackend: true
来启用它。
如需有关为 OpenStack Block Storage 定义 Red Hat Ceph 后端的更多信息,请参阅使用容器化 Red Hat Ceph 部署 Overcloud。
部署 Configured Back Ends 描述了如何使用环境文件 /home/stack/templates/custom-env.yaml 编配自定义后端部署。要查看 /home/stack/templates/custom-env.yaml
中生成的 /etc/cinder/cinder.conf
设置,请参阅 第 A.2 节 “从示例环境文件生成的配置”。
第 4 章 部署配置后端
在 /home/stack/templates/
中创建 custom-env.yaml 文件后,以 stack
用户身份登录。然后,运行以下命令部署自定义后端配置:
$ openstack overcloud deploy --templates -e /home/stack/templates/custom-env.yaml
如果您在创建 overcloud 时传递任何额外的环境文件,请使用 -e
选项再次传递它们,以避免对 overcloud 进行不必要的更改。有关更多信息,请参阅 Director 安装和使用 指南中的 修改 Overcloud 环境。
在 director 编排完成后测试后端。请参阅 第 5 章 测试配置后端。
第 5 章 测试配置后端
将后端部署到 overcloud 后,测试您是否可以在其中成功创建卷。您必须首先加载必要的环境变量。默认情况下,这些变量在 /home/stack/overcloudrc
中定义。
-
要载入变量,以
stack
用户身份运行以下命令:
$ source /home/stack/overcloudrc
有关更多信息,请参阅 Director 安装和使用 指南中的 访问 overcloud。
-
为每个后端创建一个 卷类型。以
stack
用户身份登录 overcloud 的 Controller 节点,再运行以下命令:
$ cinder type-create backend1 $ cinder type-create backend2
这些命令创建卷类型 backend1
和 backend2
,每个后端通过 envfile
的 cinder::config::cinder_config
类定义。
-
将各个卷类型映射到通过
cinder_user_enabled_backends
类启用的后端的volume_backend_name
。以下命令将卷类型
backend1
映射到netapp1
,将backend2
映射到netapp2
:
$ cinder type-key backend1 set volume_backend_name=netapp1 $ cinder type-key backend2 set volume_backend_name=netapp2
-
现在,您可以测试每个后端。通过调用
backend1
卷类型,在netapp1
后端上创建一个名为netapp_volume_1
的 1GB 卷:
$ cinder create --volume-type backend1 --display_name netappvolume_1 1
-
通过调用
backend2
卷类型,在netapp2
后端中创建类似的卷:
$ cinder create --volume-type backend2 --display_name netappvolume_2 1
附录 A. 附录
A.1. stack 用户
您可以使用 stack
用户帐户来运行需要提升权限的命令,如部署后端或加载用于访问 overcloud 的环境变量。有关 stack
用户的更多信息,请参阅 Director 安装和使用 指南中的 创建 stack 用户。
A.2. 从示例环境文件生成的配置
第 3 章 创建环境文件 中的 环境文件,将块存储服务配置为使用两个 NetApp 后端。以下片段显示相关的设置:
enabled_backends = netapp1,netapp2 [netapp1] volume_backend_name=netapp_1 volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver netapp_login=root netapp_storage_protocol=iscsi netapp_password=p@$$w0rd netapp_storage_family=ontap_7mode netapp_server_port=80 netapp_server_hostname=10.35.64.11 [netapp2] volume_backend_name=netapp_2 volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver netapp_login=root netapp_storage_protocol=iscsi netapp_password=p@$$w0rd netapp_storage_family=ontap_7mode netapp_server_port=80 netapp_server_hostname=10.35.64.11