5.2. 自定义对象存储服务
根据 Red Hat OpenStack Platform (RHOSP)环境的要求,您可能需要自定义 Object Storage 服务(swift)的一些默认设置来优化部署性能。
5.2.1. 配置 fast-post
默认情况下,Object Storage 服务(swift)会在其元数据的任何部分更改时完整复制对象。您可以使用 fast-post 功能来防止这种情况。当更改多个大型对象的内容类型时,fast-post 功能会节省时间。
要启用 fast-post 功能,请在 Object Storage 代理服务中禁用 object_post_as_copy
选项。
流程
编辑
swift_params.yaml
:$ cat > swift_params.yaml << EOF parameter_defaults: ExtraConfig: swift::proxy::copy::object_post_as_copy: False EOF
部署或更新 overcloud 时包含参数文件:
$ openstack overcloud deploy [... previous args ...] \ -e swift_params.yaml
5.2.2. 启用 at-rest 加密
默认情况下,上传到 Object Storage 服务(swift)的对象是未加密的。因此,可以从文件系统中直接访问对象。如果在磁盘被丢弃前没有正确清除磁盘,这可能会带来安全风险。对象存储对象。如需更多信息,请参阅使用 Key Manager 服务管理 secret 中的加密 Object Storage (swift) at-rest 对象。
5.2.3. 部署独立对象存储服务集群
您可以使用可组合角色概念来部署独立 Object Storage 服务(swift)集群,其最小其他服务,如 OpenStack Identity service (keystone)或 HAProxy。
流程
-
从
/usr/share/openstack-tripleo-heat-templates
复制roles_data.yaml
。 - 编辑新文件。
- 删除不需要的控制器角色,如 Aodh*、Ceilometer、Ceph*、Cinder*、Glance*、Ironic*、Manila*、Nova*、Octaana、Octaana、Swift*。
-
在
roles_data.yaml
中查找 ObjectStorage 角色。 -
将此角色复制到同一文件中的新角色,并将其命名为
ObjectProxy
。 将
SwiftStorage
替换为此角色中的SwiftProxy
。以下
roles_data.yaml
文件示例显示了示例角色。- name: Controller description: | Controller role that has all the controller services loaded and handles Database, Messaging and Network functions. CountDefault: 1 tags: - primary - controller networks: - External - InternalApi - Storage - StorageMgmt - Tenant HostnameFormatDefault: '%stackname%-controller-%index%' ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Clustercheck - OS::TripleO::Services::Docker - OS::TripleO::Services::Ec2Api - OS::TripleO::Services::Etcd - OS::TripleO::Services::HAproxy - OS::TripleO::Services::Keepalived - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::Memcached - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::Pacemaker - OS::TripleO::Services::RabbitMQ - OS::TripleO::Services::Securetty - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Vpp - name: ObjectStorage CountDefault: 1 description: | Swift Object Storage node role networks: - InternalApi - Storage - StorageMgmt disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::SwiftStorage - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - name: ObjectProxy CountDefault: 1 description: | Swift Object proxy node role networks: - InternalApi - Storage - StorageMgmt disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::SwiftProxy - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages
使用常规的
openstack deploy
命令部署 overcloud,包括新角色。$ openstack overcloud deploy --templates -r roles_data.yaml -e [...]
5.2.4. 对象存储服务的磁盘建议
为 Red Hat OpenStack Platform (RHOSP) Object Storage 服务(swift)使用一个或多个单独的本地磁盘。
默认情况下,RHOSP director 将系统磁盘上的 /srv/node/d1
目录用于对象存储服务。在 Controller 上,其他服务也会使用这个磁盘,磁盘可能会成为性能瓶颈。
以下示例是 RHOSP 编排服务(heat)自定义环境文件摘录。在每个 Controller 节点上,对象存储服务使用两个独立磁盘。两个磁盘的完整都包含一个 XFS 文件系统:
parameter_defaults: SwiftRawDisks: {"sdb": {}, "sdc": {}}
SwiftRawDisks
定义节点上的每个存储磁盘。这个示例在每个 Controller 节点上同时定义了 sdb
和 sdc
磁盘。
在 RHEL 9 中,sdx
名称可能在 overcloud 节点之间有所不同,即使您的硬件配置是相同的。有关 定义用于 SwiftRawDisks
参数的磁盘的详情,请查看 Red Hat 知识库文章,在 Red Hat OpenStack Platform 17 中使用 OpenStack Swift。
在配置多个磁盘时,请确保 Bare Metal 服务(ironic)使用预期的根磁盘。
其他资源
- 在使用 director 安装和管理 Red Hat OpenStack Platform 中,为多磁盘集群定义根磁盘。
5.2.5. 使用外部 SAN 磁盘
默认情况下,Object Storage 服务(swift)配置为配置为使用独立的本地磁盘。此配置可确保工作负载在所有磁盘上分布,这有助于在节点故障或其他系统问题期间最大程度降低性能影响。
在性能影响事件时,使用单个 SAN 的环境可能会遇到所有 LUN 的性能降低。对象存储服务无法缓解使用 SAN 磁盘的环境中的性能问题。因此,为对象存储使用额外的本地磁盘来满足性能和磁盘空间要求。
将外部 SAN 用于对象存储需要根据具体情况进行评估。如需更多信息,请联系红帽支持团队。
如果您选择将外部 SAN 用于对象存储,请评估并测试部署的性能要求。要确认您的 SAN 部署经过测试、受支持并满足您的性能要求,请联系您的存储供应商。
红帽不提供对以下问题的支持:
- 与使用外部 SAN 进行对象存储的性能相关的问题。
- 核心对象存储服务产品外出现的问题。要获得高可用性和性能的支持,请联系您的存储厂商。
流程
此模板是如何将两个设备(
/dev/mapper/vdb
和/dev/mapper/vdc
)用于对象存储的示例:parameter_defaults: SwiftMountCheck: true SwiftUseLocalDir: false SwiftRawDisks: {"vdb": {"base_dir":"/dev/mapper/"}, \ "vdc": {"base_dir":"/dev/mapper/"}}