Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

自定义块存储后端部署指南

Red Hat OpenStack Platform 13

在 Red Hat OpenStack Platform Overcloud 中部署自定义块存储后端的指南

OpenStack Documentation Team

摘要

本文档论述了如何在 Red Hat OpenStack Platform 13 Overcloud 中为块存储服务部署自定义、非集成后端。

使开源包含更多

红帽致力于替换我们的代码、文档和 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 后端: netapp1netapp2

/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_drivernetapp2/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 中定义。

  1. 要载入变量,以 stack 用户身份运行以下命令:
$ source /home/stack/overcloudrc
注意

有关更多信息,请参阅 Director 安装和使用 指南中的 访问 overcloud

  1. 为每个后端创建一个 卷类型。以 stack 用户身份登录 overcloud 的 Controller 节点,再运行以下命令:
$ cinder type-create backend1
$ cinder type-create backend2

这些命令创建卷类型 backend1backend2,每个后端通过 envfilecinder::config::cinder_config 类定义。

  1. 将各个卷类型映射到通过 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
  1. 现在,您可以测试每个后端。通过调用 backend1 卷类型,在 netapp1 后端上创建一个名为 netapp_volume_1 的 1GB 卷:
$ cinder create --volume-type backend1 --display_name netappvolume_1 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

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.