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服务 - 用于对象存储服务存储的磁盘列表
流程
启用 DNS 转发来解析 control plane pod 中的 data plane 主机名。
获取解析器的
clusterIP:$ oc get svc dnsmasq-dns -o jsonpath=`{.spec.clusterIP}`更新默认 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。
-
将
通过将
swift服务添加到OpenStackDataPlaneNodeSetCR 中的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定义 data plane 节点上的对象存储服务使用的磁盘。
在定义磁盘时,您可以执行以下操作:
-
在
OpenStackDataPlaneNodeSetCR 的全局nodeTemplate部分中定义磁盘,为所有节点使用相同的磁盘。 -
在
OpenStackDataPlaneNodeSetCR 的nodes部分中,以每个节点为基础定义磁盘。 - 将磁盘分配给特定的区域或区域。
- 启用 ring 管理来分发副本。
-
在
您必须为每个磁盘指定一个权重。如果您在现有环中没有自定义权重,您可以将 weight 设置为磁盘的 GiB 容量。
以下示例显示了具有三个存储节点的数据平面的
OpenStackDataPlaneNodeSetCR。每个节点都配置为使用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