7.3. 在外部数据平面节点上部署对象存储服务


如果您在 OpenShift (RHOSO)部署的 Red Hat OpenStack Services (RHOSO)部署中运行具有大量存储的大型集群,您可以在外部数据平面节点上部署 Object Storage 服务(swift)。使用这个配置,Object Storage 代理服务将继续在 control plane 上运行,并在 data plane 节点上运行 Object Storage 服务。

注意

如果您不想将持久性卷用于数据存储,请在 OpenStackControlPlane CR 中将 swiftStorage 副本设置为 0。最初创建 OpenStackControlPlane CR 时,还必须将 swiftProxy 副本设置为 0。这是必要的,因为对象存储服务的代理需要正确构建环,且至少配置的副本设备数量才能启动。部署数据平面后,您可以将 swiftProxy 副本扩展到您想要的数量。

要在 data plane 节点上部署并运行 Object Storage 服务,首先启用 DNS 转发来解析 control plane pod 中的 data plane 主机名,然后使用以下属性创建 OpenStackDataPlaneNodeSet CR:

  • swift 服务
  • 用于对象存储服务存储的磁盘列表

流程

  1. 启用 DNS 转发来解析 control plane pod 中的 data plane 主机名。

    1. 获取解析器的 clusterIP

      $ oc get svc dnsmasq-dns -o jsonpath=`{.spec.clusterIP}`
    2. 更新默认 DNS 条目以添加解析器的 clusterIP

      apiVersion: operator.openshift.io/v1
      kind: DNS
      metadata:
        name: default
      spec:
        servers:
        - name: swift
          zones:
          - storage.example.com
          forwardPlugin:
            policy: Random
            upstreams:
            - <clusterIP>
      • <clusterIP > 替换为解析器的 clusterIP
  2. 通过将 swift 服务添加到 OpenStackDataPlaneNodeSet CR 中的 NodeSet 列表的末尾,在 data plane 节点上启用 swift 存储服务。该服务运行配置对象存储服务所需的 playbook:

    Example:

        services:
        - repo-setup
        - bootstrap
        - download-cache
        - configure-network
        - validate-network
        - install-os
        - configure-os
        - ssh-known-hosts
        - run-os
        - reboot-os
        - install-certs
        - swift
  3. 定义 data plane 节点上的对象存储服务使用的磁盘。

    • 在定义磁盘时,您可以执行以下操作:

      • OpenStackDataPlaneNodeSet CR 的全局 nodeTemplate 部分中定义磁盘,为所有节点使用相同的磁盘。
      • OpenStackDataPlaneNodeSet CR 的 nodes 部分中,以每个节点为基础定义磁盘。
      • 将磁盘分配给特定的区域或区域。
      • 启用 ring 管理来分发副本。
    • 您必须为每个磁盘指定一个权重。如果您在现有环中没有自定义权重,您可以将 weight 设置为磁盘的 GiB 容量。

      以下示例显示了具有三个存储节点的数据平面的 OpenStackDataPlaneNodeSet CR。每个节点都配置为使用 nodeTemplate 部分中的两个磁盘。第一个节点 edpm-swift-0 被配置为使用 nodes 部分中的第三个磁盘:

      Example:

      - apiVersion: dataplane.openstack.org/v1beta1
        kind: OpenStackDataPlaneNodeSet
        metadata:
          name: openstack-edpm-ipam
          namespace: openstack
        spec:
          ...
          networkAttachments:
          - ctlplane
          - storage
          nodeTemplate:
            ansible:
              ansibleVars:
                edpm_swift_disks:
                - device: /dev/vdb
                  path: /srv/node/vdb
                  region: 0
                  weight: 4000
                  zone: 0
                - device: /dev/vdc
                  path: /srv/node/vdc
                  region: 0
                  weight: 4000
                  zone: 0
          nodes:
            edpm-swift-0:
              ansible:
                ansibleVars:
                  edpm_swift_disks:
                  - device: /dev/vdd
                    path: /srv/node/vdd
                    weight: 1000
              hostName: edpm-swift-0
              networks:
              - defaultRoute: true
                fixedIP: 192.168.122.100
                name: ctlplane
                subnetName: subnet1
              - name: internalapi
                subnetName: subnet1
              - name: storage
                subnetName: subnet1
              - name: tenant
                subnetName: subnet1
            edpm-swift-1:
              hostName: edpm-swift-1
              networks:
              - defaultRoute: true
                fixedIP: 192.168.122.101
                name: ctlplane
                subnetName: subnet1
              - name: internalapi
                subnetName: subnet1
              - name: storage
                subnetName: subnet1
              - name: tenant
                subnetName: subnet1
            edpm-swift-2:
              hostName: edpm-swift-2
              networks:
              - defaultRoute: true
                fixedIP: 192.168.122.102
                name: ctlplane
                subnetName: subnet1
              - name: internalapi
                subnetName: subnet1
              - name: storage
                subnetName: subnet1
              - name: tenant
                subnetName: subnet1
          ...
          services:
          - repo-setup
          - bootstrap
          - download-cache
          - configure-network
          - validate-network
          - install-os
          - configure-os
          - ssh-known-hosts
          - run-os
          - reboot-os
          - install-certs
          - swift
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部