5.8. 使用多站点同步策略


作为存储管理员,您可以在存储桶级别使用多站点同步策略来控制不同区域中 bucket 之间的数据移动。这些策略称为存储桶粒度同步策略。在以前的版本中,区中的所有存储桶都是对称的。这意味着每个区域都包含给定存储桶的镜像副本,并且存储桶副本在所有区域中都相同。同步过程假定存储桶同步源和存储桶同步目的地引用同一存储桶。

重要

bucket 同步策略仅适用于数据,无论存在存储桶同步策略,在多站点中的所有区域间同步元数据。当存储桶同步策略处于 allowedforbidden 时,创建、修改或删除的对象,它不会在策略生效时自动同步。运行 bucket sync run 命令来同步这些对象。

重要

如果在 zonegroup 级别定义了多个同步策略,则任何时候都只能有一个策略处于 enabled 状态。如果需要,我们可以切换策略

同步策略替代旧的 zone group coarse 配置(sync_from*)。同步策略可以在 zone group 级别上配置。如果配置了该配置,它将替换 zone group 级别的旧式配置,但也可在 bucket 级别上进行配置。

重要

bucket 同步策略适用于存档区域。归档区域的移动不是双向的,其中所有对象可以从活跃区域移到存档区域。但是,您无法将对象从存档区域移到活跃区域,因为存档区域是只读的。

zone group 的存储桶同步策略示例

[ceph: root@host01 /]# radosgw-admin sync info --bucket=buck
{
    "sources": [
        {
            "id": "pipe1",
            "source": {
                "zone": "us-east",
                "bucket": "buck:115b12b3-....4409.1"
            },
            "dest": {
                "zone": "us-west",
                "bucket": "buck:115b12b3-....4409.1"
            },
           ...
        }
    ],
    "dests": [
        {
            "id": "pipe1",
            "source": {
                "zone": "us-west",
                "bucket": "buck:115b12b3-....4409.1"
            },
            "dest": {
                "zone": "us-east",
                "bucket": "buck:115b12b3-....4409.1"
            },
           ...
        },
        {
            "id": "pipe1",
            "source": {
                "zone": "us-west",
                "bucket": "buck:115b12b3-....4409.1"
            },
            "dest": {
                "zone": "us-west-2",
                "bucket": "buck:115b12b3-....4409.1"
            },
           ...
        }
    ],
    ...
}

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • Ceph 监控节点的根级别访问权限.
  • 安装 Ceph 对象网关软件.

5.8.1. 多站点同步策略组状态

在同步策略中,可以定义可以包含 data-flow 配置列表的多个组,以及管道配置列表。data-flow 定义不同区域之间的数据流。它可以定义对称数据流,其中有多个区域同步数据,并且可以定义方向数据流,其中的数据从一个区域移动到另一个区域。

管道定义可以使用这些数据流的实际存储桶,以及与它关联的属性,如源对象前缀。

同步策略组可能处于 3 个状态:

  • 已启用并启用了 5-4sync。
  • 允许允许 wagon-wagonsync。
  • 禁止禁止 由此组定义的 Forbiddensync。

当区域复制时,您可以使用同步策略禁用特定存储桶的复制。以下是解决策略冲突需要遵循的语义:

zonegroupBucket结果

enabled

enabled

enabled

enabled

allowed

enabled

enabled

forbidden

disabled

allowed

enabled

enabled

allowed

allowed

disabled

allowed

forbidden

disabled

forbidden

enabled

disabled

forbidden

allowed

disabled

forbidden

forbidden

disabled

对于设置为反映任何同步对的多个组策略(SOURCE_ZONESOURCE_BUCKET)、(DESTINATION_ZONE,DESTINATION_BUCKET),以下规则按以下顺序应用:

  • 即使禁用了一个同步策略 同步也会 被禁用
  • 至少应 启用 一个策略,以便允许同步。

此组中的同步状态可以覆盖其他组。

策略可以在 bucket 级别上定义。bucket 级别同步策略继承 zonegroup 策略的数据流,并且只能定义 zonegroup 允许的子集。

通配符区域,策略中的通配符 bucket 参数定义所有相关区域或所有相关存储桶。在 bucket 策略的上下文中,这意味着当前的 bucket 实例。镜像整个区的灾难恢复配置不需要在存储桶上配置任何内容。但是,对于精细的存储桶同步,最好在 zonegroup 级别(例如,使用通配符)允许(status=allowed)将管道配置为同步。但是,仅在存储桶级别启用特定的同步(status=enabled)。如果需要,存储桶级别的策略可以将数据移动限制到特定的相关区域。

重要

对 zonegroup 策略的任何更改都需要应用到 zonegroup master zone,并且需要周期更新和提交。对 bucket 策略的更改需要应用到 zonegroup master zone。Ceph 对象网关动态处理这些更改。

S3 存储桶复制 API

S3 bucket 复制 API 已实施,允许用户在不同存储桶之间创建复制规则。请注意,虽然 AWS 复制功能允许在同一区域内复制 bucket,但 Ceph 对象网关目前不允许它。但是,Ceph 对象网关 API 也添加了一个 Zone 数组,允许用户选择要同步特定存储桶的区域。

其它资源

5.8.2. 检索当前策略

您可以使用 get 命令检索当前 zonegroup 同步策略或特定的存储桶策略。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。

流程

  • 检索当前的 zonegroup 同步策略或存储桶策略。要检索特定的存储桶策略,请使用 the- bucket 选项:

    语法

    radosgw-admin sync policy get --bucket=BUCKET_NAME

    Example

    [ceph: root@host01 /]# radosgw-admin sync policy get --bucket=mybucket

5.8.3. 创建同步策略组

您可以为当前 zone group 或特定存储桶创建同步策略组。

当为存储桶粒度复制创建同步策略时,已从 禁止 变为 启用的 同步策略组,可能需要手动更新才能完成同步过程。

例如,如果在 禁止 策略将任何数据写入 bucket1,则在策略更改为 启用 后,数据可能无法在区域间正确同步。要正确同步更改,请在同步策略 上运行 bucket sync 命令。如果在策略被禁止时重新划分存储桶,则需要 这一步。在这种情况下,在启用策略后,还必须使用 bucket sync run 命令。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。
  • 为存档区域创建时,请确保在同步策略组之前创建归档区域。

流程

  1. 创建同步策略组或存储桶策略。要创建存储桶策略,请使用 --bucket 选项:

    语法

    radosgw-admin sync group create --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled | allowed | forbidden

    Example

    [ceph: root@host01 /]# radosgw-admin sync group create --group-id=mygroup1 --status=enabled

  2. 可选:为存储桶粒度复制手动完成同步过程。

    注意

    当将 用作存储桶粒度复制的归档区的一部分时,如果策略已写入,或者策略被禁止,则此步骤是强制的。

    语法

    radosgw-admin bucket sync run

    Example

    [ceph: root@host01 /]# radosgw-admin bucket sync run

其它资源

有关配置存档区域和 bucket 粒度复制的更多信息,请参阅配置归档区域

5.8.4. 修改同步策略组

您可以修改当前 zone group 或特定存储桶的现有同步策略组。

当为已 禁止 的同步策略组修改存储桶的同步策略 ,可能需要手动更新才能完成同步过程。

例如,如果在 禁止 策略将任何数据写入 bucket1,则在策略更改为 启用 后,数据可能无法在区域间正确同步。要正确同步更改,请在同步策略 上运行 bucket sync 命令。如果在策略被禁止时重新划分存储桶,则需要 这一步。在这种情况下,在启用策略后,还必须使用 bucket sync run 命令。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。
  • 修改存档区域时,请确保在同步策略组之前创建归档区域。

流程

  1. 修改同步策略组或存储桶策略。要修改存储桶策略,请使用 the- bucket 选项。

    语法

    radosgw-admin sync group modify --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled | allowed | forbidden

    Example

    [ceph: root@host01 /]# radosgw-admin sync group modify --group-id=mygroup1 --status=forbidden

  2. 可选:为存储桶粒度复制手动完成同步过程。

    注意

    当将 用作存储桶粒度复制的归档区的一部分时,如果策略已写入,或者策略被禁止,则此步骤是强制的。

    语法

    radosgw-admin bucket sync run

    Example

    [ceph: root@host01 /]# radosgw-admin bucket sync run

其它资源

有关配置存档区域和 bucket 粒度复制的更多信息,请参阅配置归档区域

5.8.5. 获取同步策略组

您可以使用 group get 命令来按组 ID 显示当前的同步策略组,或者显示特定的存储桶策略。

如果没有提供-- bucket 选项,则在 zonegroup 级别中创建的组会检索,而不是存储桶级别的组。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。

流程

  • 显示当前的同步策略组或存储桶策略。要显示特定的存储桶策略,请使用 the- bucket 选项:

    语法

    radosgw-admin sync group get --bucket=BUCKET_NAME --group-id=GROUP_ID

    Example

    [ceph: root@host01 /]# radosgw-admin sync group get --group-id=mygroup

5.8.6. 删除同步策略组

您可以使用 group remove 命令删除按组 ID 的当前同步策略组,或者删除特定的存储桶策略策略。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。

流程

  • 删除当前的同步策略组或存储桶策略。要删除特定的存储桶策略,请使用 the- bucket 选项:

    语法

    radosgw-admin sync group remove --bucket=BUCKET_NAME --group-id=GROUP_ID

    Example

    [ceph: root@host01 /]# radosgw-admin sync group remove --group-id=mygroup

5.8.7. 创建同步流

您可以为同步策略组或特定存储桶创建两种不同类型的流:

  • 方向性同步流
  • 对称同步流

group flow create 命令创建一个同步流。如果您为已具有同步流的同步策略组或存储桶发出 group flow create 命令,该命令将覆盖同步流的现有设置,并应用您指定的设置。

选项描述必填/选填

--bucket

需要配置同步策略的存储桶名称。仅在存储桶级别的同步策略中使用。

选填

--group-id

同步组的 ID。

必填

--flow-id

流的 ID。

必填

--flow-type

同步策略组或特定存储桶的流类型 - 方向或对称。

必填

--source-zone

指定应进行同步的源区。将数据发送到同步组的区域。如果同步组的流类型是方向,则需要此项。

选填

--dest-zone

指定应进行同步的目标区域。从同步组接收数据的区。如果同步组的流类型是方向,则需要此项。

选填

--zones

同步组一部分的区域。区域提到将是发送者和接收器区域。指定由 "," 分隔的区域。如果同步组的流类型是 symmetrical,则需要此项。

选填

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。

流程

  1. 创建或更新方向同步流。要为特定存储桶创建或更新同步流,请使用 --bucket 选项。

    语法

    radosgw-admin sync group flow create --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE --dest-zone=DESTINATION_ZONE

  2. 创建或更新对称同步流。要为对称流类型指定多个区域,请在 --zones 选项中使用逗号分隔的列表。

    语法

    radosgw-admin sync group flow create --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2

    zones 是需要添加到流中的所有区域的逗号分隔列表。

5.8.8. 删除同步流和区域

group flow remove 命令从同步策略组或存储桶中删除同步流或区域。

对于使用方向流的同步策略组或 bucket,group flow remove 命令会删除流。对于使用对称流的同步策略组或 bucket,您可以使用 group flow remove 命令从流中删除指定区域,或者移除流。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。

流程

  1. 删除方向同步流。要删除特定存储桶的方向同步流,请使用 --bucket 选项。

    语法

    radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE --dest-zone=DESTINATION_ZONE

  2. 从对称同步流中删除特定区域。要从对称流中删除多个区域,请对 --zones 选项使用逗号分隔的列表。

    语法

    radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2

  3. 移除对称同步流。要删除 zonegroup 级别的同步流,请删除 the- bucket 选项。

    语法

    radosgw-admin sync group flow remove --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2

5.8.9. 创建或修改同步组管道

作为存储管理员,您可以定义管道来指定哪些存储桶可以使用您配置的数据流,以及与这些数据流关联的属性。

sync group pipe create 命令允许您创建管道,它们是特定存储桶或 bucket 组或特定区域组之间的自定义同步组数据流。

这个命令使用以下选项:

选项描述必填/选填

--bucket

需要配置同步策略的存储桶的名称。仅在存储桶级别的同步策略中使用。

选填

--group-id

同步组的 ID

必填

--pipe-id

管道 ID

必填

--source-zones

将数据发送到同步组的区域。使用单引号(')作为值。使用逗号分隔多个区域。对于与数据流规则匹配的所有区域,使用通配符 *

必填

--source-bucket

将数据发送到同步组的 bucket 或 bucket。如果没有提到存储桶名称,则将 * (wildcard)作为默认值。在 bucket 级别上,源存储桶将是创建同步组的存储桶,在 zonegroup-level 时,源存储桶将是所有存储桶。

选填

--source-bucket-id

源存储桶的 ID。

选填

--dest-zones

接收同步数据的区域或区域。使用单引号(')作为值。使用逗号分隔多个区域。对于与数据流规则匹配的所有区域,使用通配符 *

必填

--dest-bucket

接收同步数据的 bucket。如果没有提到存储桶名称,则将 * (wildcard)作为默认值。在 bucket 级别,目标存储桶将是创建同步组的存储桶,在 zonegroup-level 中,目标存储桶将是所有存储桶

选填

--dest-bucket-id

目标 bucket 的 ID。

选填

--prefix

bucket 前缀。使用通配符 * 过滤源对象。

选填

--prefix-rm

不要使用 bucket 前缀进行过滤。

选填

--tags-add

键=值对的逗号分隔列表。

选填

--tags-rm

删除一个或多个标签的 key=value 对。

选填

--dest-owner

来自源的对象的目的地所有者。

选填

--storage-class

来自源的对象的目的地存储类。

选填

--mode

system 用于系统模式或 user 作为用户模式。

选填

--uid

用于用户模式的权限验证。指定发布同步操作的用户 ID。

选填

注意

如果要在 zonegroup 级别上为特定存储桶启用/禁用同步,请将 zonegroup 级别同步策略设置为启用/禁用,并为每个 bucket with-source-bucket 和-- dest- bucket-id 启用/禁用同步,或使用 bucket- id、i.e、 --source-bucket -id 和-- dest-bucket-id

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。

流程

  • 创建同步组管道。create 命令还用于通过仅创建相关选项的同步组管道来更新命令。

    语法

    radosgw-admin sync group pipe create --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET --dest-bucket-id=DESTINATION_BUCKET_ID --prefix=SOURCE_PREFIX --prefix-rm --tags-add=KEY1=VALUE1,KEY2=VALUE2,.. --tags-rm=KEY1=VALUE1,KEY2=VALUE2, ... --dest-owner=OWNER_ID --storage-class=STORAGE_CLASS --mode=USER --uid=USER_ID

5.8.10. 修改或删除同步组管道

作为存储管理员,您可以使用 sync group pipe modify 命令或 sync group pipe remove 命令,通过删除某些选项来修改同步组管道。您还可以使用 sync group pipe remove 命令删除区域、存储桶或同步组管道。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。

流程

  • 使用 modify 参数修改同步组管道选项。

    语法

    radosgw-admin sync group pipe modify --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET1 --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET1 --dest-bucket-id=_DESTINATION_BUCKET-ID

    注意

    确保将区域放在单引号(')中。源存储桶不需要引号。

    Example

    [root@host01 ~]# radosgw-admin sync group pipe modify --group-id=zonegroup --pipe-id=pipe --dest-zones='primary','secondary','tertiary' --source-zones='primary','secondary','tertiary' --source-bucket=pri-bkt-1 --dest-bucket=pri-bkt-1

  • 使用 remove 参数修改同步组管道选项。

    语法

    radosgw-admin sync group pipe remove --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET, --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET --dest-bucket-id=DESTINATION_BUCKET-ID

    Example

    [root@host01 ~]# radosgw-admin sync group pipe remove --group-id=zonegroup --pipe-id=pipe --dest-zones='primary','secondary','tertiary' --source-zones='primary','secondary','tertiary' --source-bucket=pri-bkt-1 --dest-bucket=pri-bkt-1

  • 删除同步组管道。

    语法

    radosgw-admin sync group pipe remove --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID

    Example

    [root@host01 ~]# radosgw-admin sync group pipe remove -bucket-name=mybuck --group-id=zonegroup --pipe-id=pipe

5.8.11. 获取同步操作的信息

sync info 命令可让您获取有关同步策略所定义的预期同步源和目标的信息。

当您为存储桶创建同步策略时,该策略定义数据如何从该存储桶移动到不同区域的不同 bucket。创建策略也会创建一个 bucket 依赖项列表,每当该 bucket 与其他存储桶同步时,它们就可用作提示。请注意,存储桶可以引用另一个存储桶,而无需实际同步,因为同步取决于数据流是否允许同步进行。

--bucketeffective-zone-name 参数是可选的。如果您调用 sync info 命令但不指定任何选项,则对象网关会返回所有区域中同步策略定义的所有同步操作。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群。
  • root 或 sudo 访问权限。
  • 已安装 Ceph 对象网关。
  • 定义了组同步策略。

流程

  • 获取有关存储桶同步操作的信息:

    语法

    radosgw-admin sync info --bucket=BUCKET_NAME --effective-zone-name=ZONE_NAME

  • 在 zonegroup 级别获取有关同步操作的信息:

    语法

    radosgw-admin sync info

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.