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 守护进程。
流程
登录
cephadm
shell:Example
[root@host04 ~]# cephadm shell
从主机拉取主要域配置:
语法
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
从主机拉取主要 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
配置 second zone:
注意默认情况下,所有区域都在主动配置中运行;也就是说,网关客户端可能会将数据写入任何区域,并且该区域会将数据复制到 zone group 中所有其他区域。如果 second zone 不应接受写操作,请指定
'--read-only
标志,以在 master zone 和 second zone 之间创建主动 - 被动配置。另外,提供生成的系统用户的access_key
和secret_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
可选:删除默认区:
重要如果您使用默认 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
更新 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
提交更改:
语法
radosgw-admin period update --commit
Example
[ceph: root@host04 /]# radosgw-admin period update --commit
在
cephadm
shell 外部,获取存储集群的 FSID 以及进程:Example
[root@host04 ~]# systemctl list-units | grep ceph
启动 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
其他资源
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage Object Gateway 指南中的使用 CephOrchestrator 部署多站点 Ceph 对象网关部分。
5.4.1.1. 删除存档区域中的对象
您可以使用 S3 生命周期策略扩展来删除 < ArchiveZone>
; 元素中的对象。
archive zone 对象只能使用 expiration
生命周期策略规则删除。
-
如果任何 &
lt;Rule
> 部分包含一个<ArchiveZone
> 元素,则该规则在归档区中执行,并且是唯一在归档区中运行的规则。 -
标记为 &
lt;ArchiveZone
> 的规则不会在非存档区中执行。
生命周期策略中的规则决定了要删除的对象以及要删除的对象。有关生命周期创建和管理的更多信息,请参阅 Bucket 生命周期。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- Ceph 监控节点的根级别访问权限.
- 安装 Ceph 对象网关软件.
流程
设置 <
;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-policyExample
<?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>
可选:查看特定生命周期策略是否包含归档区规则。
语法
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 } } ] }
如果删除了 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 对象网关软件.
流程
将 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
更新周期以使更改生效:
Example
[ceph: root@host01 /]# radosgw-admin period update --commit
重新启动 Ceph 对象网关。
注意使用
ceph orch ps
命令的输出,在NAME
列下获取 SERVICE_TYPE.ID 信息。在存储集群中的单个节点上重启 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
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
Example
[ceph: root@host01 /]# ceph orch restart rgw
如果前一个主区域恢复,请恢复操作。
从恢复的区中,从当前的主区中拉取域:
语法
radosgw-admin realm pull --url=URL_TO_PRIMARY_ZONE_GATEWAY \ --access-key=ACCESS_KEY --secret=SECRET_KEY
使恢复的区域成为主区和默认区:
语法
radosgw-admin zone modify --rgw-zone=ZONE_NAME --master --default
更新周期以使更改生效:
Example
[ceph: root@host01 /]# radosgw-admin period update --commit
在恢复的区中重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
Example
[ceph: root@host01 /]# ceph orch restart rgw
如果 second zone 需要是只读配置,请更新 second zone:
语法
radosgw-admin zone modify --rgw-zone=ZONE_NAME --read-only radosgw-admin zone modify --rgw-zone=ZONE_NAME --read-only
更新周期以使更改生效:
Example
[ceph: root@host01 /]# radosgw-admin period update --commit
在 second zone 中重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
Example
[ceph: root@host01 /]# ceph orch restart rgw