5.7. 使用多站点同步策略


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

重要

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

重要

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

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

重要

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

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.7.1. 多站点同步策略组状态

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

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

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

  • 允许并启用启用。
  • 允许允许 criu-wagonsync。
  • 不允许在此组定义 禁止 ProductShortName-wagonsync。

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

ZonegroupBucket结果

enabled

enabled

enabled

enabled

allowed

enabled

enabled

禁止

disabled

allowed

enabled

enabled

allowed

allowed

disabled

allowed

禁止

disabled

禁止

enabled

disabled

禁止

allowed

disabled

禁止

禁止

disabled

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

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

这个组中的同步状态可能会覆盖其他组。

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

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

重要

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

S3 bucket 复制 API

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

其它资源

5.7.2. 检索当前策略

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

先决条件

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

流程

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

    语法

    radosgw-admin sync policy get --bucket=BUCKET_NAME

    示例

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

5.7.3. 创建同步策略组

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

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

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

    示例

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

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

    注意

    如果将 用作带有存储桶粒度复制的归档区域的一部分时,此步骤是必需的,如果策略 禁止 了数据,或者存储桶被重新划分。

    语法

    radosgw-admin bucket sync run

    示例

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

其它资源

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

5.7.4. 修改同步策略组

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

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

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

先决条件

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

流程

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

    语法

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

    示例

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

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

    注意

    如果将 用作带有存储桶粒度复制的归档区域的一部分时,此步骤是必需的,如果策略 禁止 了数据,或者存储桶被重新划分。

    语法

    radosgw-admin bucket sync run

    示例

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

其它资源

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

5.7.5. 获取同步策略组

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

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

先决条件

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

流程

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

    语法

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

    示例

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

5.7.6. 删除同步策略组

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

先决条件

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

流程

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

    语法

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

    示例

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

5.7.7. 创建同步流

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

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

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

选项描述必填/选填

--bucket

需要配置同步策略的存储桶的名称。仅在 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.7.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 级别的同步流,请删除 --bucket 选项。

    语法

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

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

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

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

这个命令使用以下选项:

选项描述必填/选填

--bucket

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

选填

--group-id

同步组的 ID

必填

--pipe-id

管道 ID

必填

--source-zones

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

必填

--source-bucket

将数据发送到同步组的 bucket 或 bucket。如果没有提及存储桶名称,则会将 * (通配符)用作默认值。在 bucket 级别,源 bucket 将是创建在 zonegroup-level 的同步组以及 zonegroup-level 的存储桶,源存储桶将是所有存储桶。

选填

--source-bucket-id

源存储桶的 ID。

选填

--dest-zones

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

必填

--dest-bucket

接收同步数据的 bucket。如果没有提及存储桶名称,则会将 * (通配符)用作默认值。在 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 级别同步策略设置为 enable/disable,并为带有 --source-bucket--dest-bucket 的每个存储桶创建一个管道,并使用相同的存储桶名称或 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.7.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

    注意

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

    示例

    [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

    示例

    [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

    示例

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

5.7.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.