第 8 章 multicloud Object Gateway 存储桶和存储桶类复制

bucket 间的数据复制提供了更高的弹性和更好的协作选项。这些 bucket 可以是由任何受支持的存储解决方案支持的数据存储桶(S3、Azure 等)或命名空间存储桶(不支持 PV Pool 和 GCP)。

bucket 复制策略由复制规则列表组成。每条规则定义目的地桶,并可基于对象密钥前缀指定过滤器。在第二个存储桶中配置补充复制策略会导致双向复制。

先决条件

  • 正在运行的 OpenShift Data Foundation 平台。
  • 访问 Multicloud Object Gateway(MCG) ,请参阅使用应用程序访问 Multicloud 对象网关
  • 下载 MCG 命令行界面。

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms
    # yum install mcg
    重要

    指定使用订阅管理器启用存储库的适当架构。例如,对于 IBM Power,使用以下命令:

    # subscription-manager repos --enable=rh-odf-4-for-rhel-8-ppc64le-rpms
  • 另外,您还可以从位于 https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages 的 OpenShift Data Foundation RPM 安装 mcg 软件包。

    重要

    根据您的架构选择正确的产品变体。

    注意

    某些特定的 MCG 功能仅在某些 MCG 版本中可用,必须使用适当的 MCG CLI 工具版本来充分利用 MCG 的功能。

要复制存储桶,请参阅将存储桶复制到另一个存储桶

要设置存储桶类复制策略,请参阅设置存储桶类复制策略

8.1. 将存储桶复制到其他存储桶

您可以通过两种方式设置存储桶复制策略:

8.1.1. 使用 MCG 命令行界面将存储桶复制到另一个存储桶

需要多云对象网关(MCG)存储桶具有特定复制策略的应用程序可以创建一个对象 Bucket 声明(OBC),并在 JSON 文件中定义复制策略参数。

流程

  • 在 MCG 命令行界面中,运行以下命令来创建具有特定复制策略的 OBC:

    noobaa obc create <bucket-claim-name> -n openshift-storage --replication-policy /path/to/json-file.json
    <bucket-claim-name>
    指定存储桶声明的名称。
    /path/to/json-file.json

    是定义复制策略的 JSON 文件的路径。

    JSON 文件示例:

    [{ "rule_id": "rule-1", "destination_bucket": "first.bucket", "filter": {"prefix": "repl"}}]
    "prefix"
    是可选的。它是要复制的对象键的前缀,甚至可以留空,例如 {"prefix": ""}

    例 8.1. 示例

    noobaa obc create my-bucket-claim -n openshift-storage --replication-policy /path/to/json-file.json

8.1.2. 使用 YAML 将存储桶复制到另一个存储桶

需要 Multicloud Object Gateway(MCG)存储桶具有特定复制策略的应用程序可以创建一个对象 Bucket Claim(OBC),并将 spec.additionalConfig.replication-policy 参数添加到 OBC。

流程

  • 应用以下 YAML:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <desired-bucket-claim>
      namespace: <desired-namespace>
    spec:
      generateBucketName: <desired-bucket-name>
      storageClassName: openshift-storage.noobaa.io
      additionalConfig:
        replication-policy: [{ "rule_id": "<rule id>", "destination_bucket": "first.bucket", "filter": {"prefix": "<object name prefix>"}}]
    <desired-bucket-claim>
    指定存储桶声明的名称。
    <desired-namespace>
    指定命名空间。
    <desired-bucket-name>
    指定存储桶名称的前缀。
    "rule_id"
    指定规则的 ID 号,例如 {"rule_id": "rule-1"}
    "destination_bucket"
    指定目标存储桶的名称,例如 {"destination_bucket": "first.bucket"}
    "prefix"
    是可选的。它是要复制的对象键的前缀,甚至可以留空,例如 {"prefix": ""}

附加信息