5.4. 建立二级 zone


zone group 中的区复制所有数据,以确保每个区都有相同的数据。在创建二级 zone 时,在标识为服务二级 zone 的主机上执行所有 radosgw-admin zone 操作。

注意

要添加其他区域,其步骤与添加二级 zone 相同。使用不同的区名称。

重要
  • 在 master zone group 的 master zone 中的主机上运行元数据操作,如用户创建和配额。master zone 和 second zone 可以从 RESTful API 接收 bucket 操作,但 second zone 会将存储桶操作重定向到 master zone。如果 master zone 为 down,则存储桶操作将失败。如果使用 radosgw-admin CLI 创建存储桶,您必须在 master zone group 的 master zone 中的主机上运行,以便存储桶与其他 zone group 和 zone 同步。
  • 不支持为特定用户创建存储桶,即使您在 second zone 中创建具有 --yes-i-really-mean-it 的用户。

先决条件

  • 至少两个正在运行的 Red Hat Ceph Storage 集群。
  • 至少两个 Ceph 对象网关实例,每个实例对应一个 Red Hat Ceph Storage 集群。
  • 所有节点的根级别访问权限。
  • 节点或容器添加到存储集群中。
  • 部署所有 Ceph 管理器、监控器和 OSD 守护进程。

流程

  1. 登录 cephadm shell:

    Example

    [root@host04 ~]# cephadm shell

  2. 从主机拉取主要域配置:

    语法

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

    Example

    [ceph: root@host04 /]# radosgw-admin realm pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

  3. 从主机拉取主要 period 配置:

    语法

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

    Example

    [ceph: root@host04 /]# radosgw-admin period pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

  4. 配置 second zone:

    注意

    默认情况下,所有区域都在主动配置中运行;也就是说,网关客户端可能会将数据写入任何区域,并且该区域会将数据复制到 zone group 中所有其他区域。如果 second zone 不应接受写操作,请指定 '--read-only 标志,以在 master zone 和 second zone 之间创建主动 - 被动配置。另外,提供生成的系统用户的 access_keysecret_key 存储在 master zone group 的 master zone 中。

    语法

    radosgw-admin zone create --rgw-zonegroup=_ZONE_GROUP_NAME_ \
                 --rgw-zone=_SECONDARY_ZONE_NAME_ --endpoints=http://_RGW_SECONDARY_HOSTNAME_:_RGW_PRIMARY_PORT_NUMBER_1_ \
                 --access-key=_SYSTEM_ACCESS_KEY_ --secret=_SYSTEM_SECRET_KEY_ \
                 [--read-only]

    Example

    [ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-2 --endpoints=http://rgw2:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ

  5. 可选:删除默认区:

    重要

    如果您使用默认 zone 和 zone group 存储数据,则不要删除默认区域及其池。

    Example

    [ceph: root@host04 /]# radosgw-admin zone rm --rgw-zone=default
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it

  6. 更新 Ceph 配置数据库:

    语法

    ceph config set client.rgw.SERVICE_NAME rgw_realm REALM_NAME
    ceph config set client.rgw.SERVICE_NAME rgw_zonegroup ZONE_GROUP_NAME
    ceph config set client.rgw.SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME

    Example

    [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm test_realm
    [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup us
    [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone us-east-2

  7. 提交更改:

    语法

    radosgw-admin period update --commit

    Example

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

  8. cephadm shell 外部,获取存储集群的 FSID 以及进程:

    Example

    [root@host04 ~]#  systemctl list-units | grep ceph

  9. 启动 Ceph 对象网关守护进程:

    语法

    systemctl start ceph-FSID@DAEMON_NAME
    systemctl enable ceph-FSID@DAEMON_NAME

    Example

    [root@host04 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
    [root@host04 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service

5.4.1. 配置归档区

注意

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

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

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

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

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

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

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

要实施 bucket 粒度复制,请使用 sync policies 命令来启用和禁用策略。如需更多信息 请参阅创建同步策略组 和修改同步策略组

注意

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

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

先决条件

  • 一个正在运行的 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

    Example

    [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.4.1.1. 删除存档区域中的对象

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

重要

archive zone 对象只能使用 expiration 生命周期策略规则删除。

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

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

先决条件

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

流程

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

    Example

    <?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

    Example

    [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

    Example

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

其他资源

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

5.4.2. 故障切换和灾难恢复

如果主区域失败,请切换到 second zone 以进行灾难恢复。

先决条件

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

流程

  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. 更新周期以使更改生效:

    Example

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

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

    注意

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

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

      语法

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service

      Example

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

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

      语法

      ceph orch restart SERVICE_TYPE

      Example

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

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

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

    语法

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

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

    语法

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

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

    Example

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

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

    语法

    ceph orch restart SERVICE_TYPE

    Example

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

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

    语法

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

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

    Example

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

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

    语法

    ceph orch restart SERVICE_TYPE

    Example

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.