5.5. 配置归档区


注意

在将区域配置为存档之前,请确保您有一个域。如果没有域,则无法通过默认 zone/zonegroups 的归档区域归档数据。

使用 Object Storage Archive Zone 功能归档位于 Red Hat Ceph Storage 上的对象数据。

存档区域在 Ceph 对象网关中使用多站点复制和 S3 对象版本控制功能。archive 区域保留所有可用对象的所有版本,即使 production 文件中被删除也是如此。

archive 区域具有 S3 对象的版本历史记录,只能通过与存档区域关联的网关删除。它捕获所有数据更新和元数据,将它们整合为 S3 对象的版本。

在创建存档区域后,可以使用 bucket 粒度复制到存档区域。

您可以通过存储桶生命周期策略控制存档区的存储空间使用,您可以在其中为对象定义您要保留的版本数量。

归档区域有助于保护您的数据不受逻辑或物理错误的影响。它可以从逻辑故障保存用户,如意外删除 production 区域中的存储桶。它还可从大量硬件故障中保存您的数据,如完整的生产站点故障。另外,它还提供了一个不可变的副本,可帮助构建可运行的应用程序保护策略。

要实现存储桶粒度复制,请使用 sync policy 命令启用和禁用策略。如需更多信息 请参阅创建同步策略组 和修改同步策略组

注意

使用同步策略组流程是可选的,只需要在存储桶粒度复制中使用和禁用。要在没有存储桶粒度复制的情况下使用归档区域,不需要使用同步策略过程。

如果要从单一站点迁移存储集群,请参阅将单个站点系统迁移到多站点

先决条件

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

流程

  • 在新区域创建过程中,使用 存档 层来配置存档区域。

    语法

    $ radosgw-admin zone create --rgw-zonegroup={ZONE_GROUP_NAME} --rgw-zone={ZONE_NAME} --endpoints={http://FQDN:PORT},{http://FQDN:PORT} --tier-type=archive

    示例

    [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east --endpoints={http://example.com:8080} --tier-type=archive

  • 从归档区修改存档区域,以仅从主区域同步并执行 period 更新提交。

    语法

    $ radosgw-admin zone modify --rgw-zone archive --sync_from primary --sync_from_all false --sync-from-rm secondary
    
    $ radosgw-admin period update --commit

注意

建议是将 max_objs_per_shard 的 max_objs_per_shard 减小到 50K,以考虑归档区中的 omap olh 条目。这有助于为每个存储桶索引分片对象保留 omap 条目数量,以防止大型 omap 警告。

例如,

$ ceph config set client.rgw rgw_max_objs_per_shard 50000

其他资源

5.5.1. 删除存档区中的对象

您可以使用 S3 生命周期策略扩展来删除 < ArchiveZone&gt; 元素中的对象。

重要

归档区对象只能使用 过期 生命周期策略规则删除。

  • 如果任何 & lt;Rule > 部分包含一个 <ArchiveZone > 元素,则该规则在归档区中执行,并且只能执行在归档区中运行的规则。
  • 标记为 & lt;ArchiveZone > 的规则不会在非存档区域中执行。

生命周期策略中的规则决定了要删除的对象。有关生命周期创建和管理的更多信息,请参阅 Bucket 生命周期

先决条件

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

流程

  1. 设置 &lt ;ArchiveZone& gt; 生命周期策略规则。有关创建生命周期策略的更多信息,请参阅 Red Hat Ceph Storage Object Gateway 指南中的创建生命周期管理策略部分 https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/7/html-single/object_gateway_guide/#creating-a-lifecycle-management-policy

    示例

    <?xml version="1.0" ?>
    <LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
            <Rule>
                    <ID>delete-1-days-az</ID>
                    <Filter>
    		  <Prefix></Prefix>
    		  <ArchiveZone />   1
                    </Filter>
                    <Status>Enabled</Status>
                    <Expiration>
                            <Days>1</Days>
                    </Expiration>
            </Rule>
    </LifecycleConfiguration>

  2. 可选:查看特定生命周期策略是否包含归档区规则。

    语法

    radosgw-admin lc get --bucket BUCKET_NAME

    示例

    [ceph: root@host01 /]# radosgw-admin lc get --bucket test-bkt
    
    {
        "prefix_map": {
            "": {
                "status": true,
                "dm_expiration": true,
                "expiration": 0,
                "noncur_expiration": 2,
                "mp_expiration": 0,
                "transitions": {},
                "noncur_transitions": {}
            }
        },
        "rule_map": [
            {
                "id": "Rule 1",
                "rule": {
                    "id": "Rule 1",
                    "prefix": "",
                    "status": "Enabled",
                    "expiration": {
                        "days": "",
                        "date": ""
                    },
                    "noncur_expiration": {
                        "days": "2",
                        "date": ""
                    },
                    "mp_expiration": {
                        "days": "",
                        "date": ""
                    },
                    "filter": {
                        "prefix": "",
                        "obj_tags": {
                            "tagset": {}
                        },
                        "archivezone": ""   1
                    },
                    "transitions": {},
                    "noncur_transitions": {},
                    "dm_expiration": true
                }
            }
        ]
    }

    1 1
    归档区规则。这是带有归档区规则的生命周期策略示例。
  3. 如果删除了 Ceph 对象网关用户,则无法访问由该用户拥有的存档站点上的 bucket。将这些 bucket 链接到另一个 Ceph 对象网关用户,以访问数据。

    语法

     radosgw-admin bucket link --uid NEW_USER_ID --bucket BUCKET_NAME --yes-i-really-mean-it

    示例

    [ceph: root@host01 /]# radosgw-admin bucket link --uid arcuser1 --bucket arc1-deleted-da473fbbaded232dc5d1e434675c1068 --yes-i-really-mean-it

其他资源

  • 如需了解更多详细信息,请参阅 Red Hat Ceph Storage 对象网关指南中的 Bucket 生命周期 部分。
  • 如需了解更多详细信息,请参阅 Red Hat Ceph Storage Developer Guide 中的 S3 存储桶生命周期 部分。

5.5.2. 故障转移和灾难恢复

从不同的故障转移和灾难场景中恢复您的数据。根据您的需要使用以下任何流程:

  • 主区失败,且故障转移到 second zone 以进行灾难恢复
  • 将归档区同步从主区切换到带有 I/O 的二级区
  • 归档区只同步主区域失败

先决条件

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

5.5.2.1. 主区失败,且故障转移到 second zone 以进行灾难恢复

流程

  1. 将 second 区域设为主要和默认区域。例如:

    语法

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --master --default

    默认情况下,Ceph 对象网关在主动-主动配置中运行。如果集群配置为以主动-被动配置运行,则 second zone 是只读区域。删除 --read-only 状态,以允许区域接收写入操作。例如:

    语法

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --master --default --read-only=false

  2. 更新周期以使更改生效:

    示例

    [ceph: root@host01 /]# radosgw-admin period update --commit

  3. 重新启动 Ceph 对象网关。

    注意

    使用 ceph orch ps 命令的输出,在 NAME 列下获取 SERVICE_TYPEID 信息。

    1. 在存储集群中的单个节点上重启 Ceph 对象网关:

      语法

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service

      示例

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service

    2. 在存储集群中的所有节点上重启 Ceph 对象网关:

      语法

      ceph orch restart SERVICE_TYPE

      示例

      [ceph: root@host01 /]# ceph orch restart rgw

      如果前一个主区域恢复,请恢复操作。

  4. 在恢复的区中,从当前主区拉取域:

    语法

    radosgw-admin realm pull --url=URL_TO_PRIMARY_ZONE_GATEWAY \
                                --access-key=ACCESS_KEY --secret=SECRET_KEY

  5. 使恢复的区域成为主要和默认区:

    语法

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --master --default

  6. 更新周期以使更改生效:

    示例

    [ceph: root@host01 /]# radosgw-admin period update --commit

  7. 在恢复的区域中重启 Ceph 对象网关:

    语法

    ceph orch restart SERVICE_TYPE

    示例

    [ceph: root@host01 /]# ceph orch restart rgw

  8. 如果 second zone 需要是一个只读配置,请更新 second zone:

    语法

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --read-only
    radosgw-admin zone modify --rgw-zone=ZONE_NAME --read-only

    1. 更新周期以使更改生效:

      示例

      [ceph: root@host01 /]# radosgw-admin period update --commit

    2. 在 second zone 中重启 Ceph 对象网关:

      语法

      ceph orch restart SERVICE_TYPE

      示例

      [ceph: root@host01 /]# ceph orch restart rgw

5.5.2.2. 将归档区同步从 primary 切换到带有 I/O 的次要同步进行中

流程

  1. 将同步源切换到二级区:

    语法

    radosgw-admin zone modify --rgw-zone archive --sync_from secondary --sync_from_all false --sync-from-rm primary radosgw-admin period update --commit

  2. 验证存档区域中的同步状态和数据一致性。
  3. 将同步源切回到主区:

    语法

    radosgw-admin zone modify --rgw-zone archive --sync_from primary --sync_from_all false --sync-from-rm secondary radosgw-admin period update --commit

  4. 在交换机后,验证存档区域中的同步状态和数据一致性。因此:

    • 在首次修改后,归档区域从 second zone 开始同步。
    • 数据一致性在整个交换机中保持。
    • 切回到主区域后,归档区域会从主区域恢复同步,而不会造成数据丢失或损坏。
    • 同步在所有区域中保持一致。

5.5.2.3. Archive Zone Syncs Only from Primary Zone with Primary Zone Failure

流程

  1. 确保将存档区域设置为仅从主区域同步。
  2. 停止主区域网关,以模拟主区域失败。
  3. 故障转移到 second zone 并执行 period 更新提交。
  4. 观察存档区域的同步状态。
  5. 时间间隔大约 30 分钟后,重启主区网关。
  6. 验证存档区域是否恢复从主区域同步。因此:

    • 当主区域失败时,归档区域将停止同步。
    • 恢复主区域后,归档区会自动恢复主区的同步。
    • 整个过程中会保持数据完整性和同步状态。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.