搜索

5.2. 自定义对象存储服务

download PDF

根据 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 选项。

流程

  1. 编辑 swift_params.yaml

    $ cat > swift_params.yaml << EOF
      parameter_defaults:
          ExtraConfig:
            swift::proxy::copy::object_post_as_copy: False
      EOF
  2. 部署或更新 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。

流程

  1. /usr/share/openstack-tripleo-heat-templates 复制 roles_data.yaml
  2. 编辑新文件。
  3. 删除不需要的控制器角色,如 Aodh*、Ceilometer、Ceph*、Cinder*、Glance*、Ironic*、Manila*、Nova*、Octaana、Octaana、Swift*。
  4. roles_data.yaml 中查找 ObjectStorage 角色。
  5. 将此角色复制到同一文件中的新角色,并将其命名为 ObjectProxy
  6. 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
  7. 使用常规的 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 节点上同时定义了 sdbsdc 磁盘。

在 RHEL 9 中,sdx 名称可能在 overcloud 节点之间有所不同,即使您的硬件配置是相同的。有关 定义用于 SwiftRawDisks 参数的磁盘的详情,请查看 Red Hat 知识库文章,在 Red Hat OpenStack Platform 17 中使用 OpenStack Swift

重要

在配置多个磁盘时,请确保 Bare Metal 服务(ironic)使用预期的根磁盘。

其他资源

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/"}}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.