5.2. 多站点配置和管理
作为存储管理员,您可以为各种用例配置和管理多个 Ceph 对象网关。您可以了解在灾难恢复和故障转移事件期间要做什么。另外,您可以在多站点 Ceph 对象网关环境中了解更多有关 realms、zone 和 syncing 策略的信息。
单个 zone 配置通常由一个 zone 和一个 zone group 和一个或者多个 ceph-radosgw
实例组成,您可以在实例之间对网关客户端请求进行负载平衡。在单一区域配置中,通常多个网关实例指向一个 Ceph 存储集群。但是,红帽支持 Ceph 对象网关的几个多站点配置选项:
-
多区 : 更高级的配置由一个 zone group 和多个 zone 组成,每个 zone 都有一个或多个
ceph-radosgw
实例。每个区域都由自己的 Ceph Storage 集群支持。zone group 中的多个 zone 为 zone group 提供灾难恢复,应该其中一个区域遇到了很大的故障。每个区域都处于活跃状态,并可能会接收写操作。除了灾难恢复外,多个活动区域也可能充当内容交付网络的基础。要在不复制的情况下配置多个区域,请参阅 配置多个区域而无需复制。 - multi-zone-group: Formerly called 'regions',Ceph 对象网关也可以支持多个 zone group,每个 zone group 都包含一个或多个 zone。存储在同一域中的 zone group 的对象共享一个全局命名空间,确保 zone group 和 zone 的唯一对象 ID。
- 多个 Realms: Ceph 对象网关支持域的概念,可以是单个 zone group 或多个 zone group,以及域的全局唯一命名空间。多个域提供支持大量配置和命名空间的功能。
先决条件
- 一个正常运行的 Red Hat Ceph Storage 集群。
- 部署 Ceph 对象网关软件。
5.2.1. 要求和假设
多站点配置至少需要两个 Ceph 存储集群,以及至少两个 Ceph 对象网关实例,每个 Ceph 存储集群一个。
本指南假设在地理上至少有两个 Ceph 存储集群,但配置可以在同一物理站点上工作。本指南还假定四个 Ceph 对象网关服务器分别名为 rgw1、
rgw2、
rgw3
和 rgw4
。
多站点配置需要一个 master zone group 和 master zone。此外,每个 zone group 都需要一个 master zone。zone group 可能具有一个或多个次要或非 master 区域。
在规划多站点的网络注意事项时,务必要了解多站点同步网络上观察到的关系带宽和延迟,客户端与与二级站点当前同步状态直接相关客户端。Red Hat Ceph Storage 多站点集群之间的网络链接必须能够处理主要集群,以便在次要站点上保持有效的恢复时间。多站点同步是异步的,其中一个限制是同步网关可以在链路间处理数据的速率。以下是网络互连速度的一个示例,可以是 1GbE 或非数据中心连接,每个客户端网关的每个 8 TB 或累积接收数据。因此,如果您复制到两个其他站点,并且每天需要 16 TB,则多站点复制需要 6 GbE 专用带宽。
红帽还建议将私有以太网或 Dense wavelength-division 多路(DWDM)作为互联网上的 VPN 来说,因为产生额外的开销并不理想。
域 master zone group 中的 master zone 负责存储域元数据的主副本,包括用户、配额和存储桶(由 radosgw-admin
CLI 创建)。此元数据会自动同步到 second zone 和 second zone group。使用 radosgw-admin
CLI 执行的元数据操作必须在 master zone group 的 master zone 中的主机上执行,以确保它们与 second zone group 和 zone 同步。目前,可以对二级域和域组执行元数据操作,但不建议这么做,因为它们不会被同步,从而导致元数据碎片。
在以下示例中,rgw1
主机将充当 master zone group 的 master zone; rgw2
主机将充当 master zone group 的 second zone; rgw3
主机将充当 second zone group 的 master zone;而 rgw4
主机将充当 second zone group 的次要 zone。
当您在多站点存储集群中配置了多个 Ceph 对象网关的大型集群时,红帽建议每个站点使用带有 HAProxy 负载均衡器的 HAProxy 负载均衡器的专用的 Ceph 对象网关。如果 Ceph 对象网关超过三个同步,则性能方面的返回同步率会降低,增加争用会导致按与时间相关的错误条件造成增量风险。这是因为一个 sync-fairness 的已知问题 BZ#1740782。
对于此类配置中其余的 Ceph 对象网关(通过负载均衡器专用于客户端 I/O 操作),请运行 ceph config set client.rgw.CLIENT_NODE rgw_run_sync_thread false
命令,以防止它们执行同步操作,然后重启 Ceph 对象网关。
以下是用于同步网关的 HAProxy 的典型配置文件:
示例
[root@host01 ~]# cat ./haproxy.cfg global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 7000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 30s timeout server 30s timeout http-keep-alive 10s timeout check 10s timeout client-fin 1s timeout server-fin 1s maxconn 6000 listen stats bind 0.0.0.0:1936 mode http log global maxconn 256 clitimeout 10m srvtimeout 10m contimeout 10m timeout queue 10m # JTH start stats enable stats hide-version stats refresh 30s stats show-node ## stats auth admin:password stats uri /haproxy?stats stats admin if TRUE frontend main bind *:5000 acl url_static path_beg -i /static /images /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js use_backend static if url_static default_backend app maxconn 6000 backend static balance roundrobin fullconn 6000 server app8 host01:8080 check maxconn 2000 server app9 host02:8080 check maxconn 2000 server app10 host03:8080 check maxconn 2000 backend app balance roundrobin fullconn 6000 server app8 host01:8080 check maxconn 2000 server app9 host02:8080 check maxconn 2000 server app10 host03:8080 check maxconn 2000
5.2.2. 池
红帽建议使用 Ceph Placement Group’s per Pool Calculator 来计算要创建 radosgw
守护进程的池的放置组的适当数量。在 Ceph 配置数据库中将计算的值设置为默认值。
示例
[ceph: root@host01 /]# ceph config set osd osd_pool_default_pg_num 50 [ceph: root@host01 /]# ceph config set osd osd_pool_default_pgp_num 50
在 Ceph 对象网关实例创建池时,对 Ceph 配置进行此更改将使用这些默认值。或者,您也可以手动创建池。
特定于区域的池名称遵循命名规则 ZONE_NAME.POOL_NAME
。例如,名为 us-east
的区域将具有以下池:
-
.rgw.root
-
us-east.rgw.control
-
us-east.rgw.meta
-
us-east.rgw.log
-
us-east.rgw.buckets.index
-
us-east.rgw.buckets.data
-
us-east.rgw.buckets.non-ec
-
us-east.rgw.meta:users.keys
-
us-east.rgw.meta:users.email
-
us-east.rgw.meta:users.swift
-
us-east.rgw.meta:users.uid
其它资源
- 有关创建 池 的详细信息,请参阅 Red Hat Ceph Storage 策略指南中的池章节。
5.2.3. 将单个站点系统迁移到多站点
要从带有 默认区
组和区的单一站点系统迁移到多站点系统,请使用以下步骤:
创建 realm。使用域名替换
NAME
。语法
radosgw-admin realm create --rgw-realm=NAME --default
重命名默认区域和 zonegroup。将
<name>
替换为 zonegroup 或 zone name。语法
radosgw-admin zonegroup rename --rgw-zonegroup default --zonegroup-new-name=NEW_ZONE_GROUP_NAME radosgw-admin zone rename --rgw-zone default --zone-new-name us-east-1 --rgw-zonegroup=ZONE_GROUP_NAME
配置主要 zonegroup。使用 realm 或 zonegroup 名称替换
NAME
。使用 zonegroup 中完全限定域名替换FQDN
。语法
radosgw-admin zonegroup modify --rgw-realm=REALM_NAME --rgw-zonegroup=ZONE_GROUP_NAME --endpoints http://FQDN:80 --master --default
创建系统用户。使用用户名替换
USER_ID
。将DISPLAY_NAME
替换为显示名称。它可以包含空格。语法
radosgw-admin user create --uid=USER_ID \ --display-name="DISPLAY_NAME" \ --access-key=ACCESS_KEY --secret=SECRET_KEY \ --system
配置主区域。使用 realm、zonegroup 或 zone name 替换
NAME
。使用 zonegroup 中完全限定域名替换FQDN
。语法
radosgw-admin zone modify --rgw-realm=REALM_NAME --rgw-zonegroup=ZONE_GROUP_NAME \ --rgw-zone=ZONE_NAME --endpoints http://FQDN:80 \ --access-key=ACCESS_KEY --secret=SECRET_KEY \ --master --default
可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的
spec
部分:语法
spec: rgw_realm: REALM_NAME rgw_zone: ZONE_NAME
更新 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 PRIMARY_ZONE_NAME
示例
[ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm test_realm [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup us [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone us-east-1
提交更新的配置:
示例
[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
示例
[root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[ceph: root@host01 /]# ceph orch restart rgw
- 建立 second zone。请参阅 建立 second zone 部分。
5.2.4. 建立 second zone
区组群中的区复制所有数据以确保每个区都有相同的数据。在创建二级 zone 时,在标识为服务二级 zone 的主机上执行所有 radosgw-admin zone
操作。
要添加其他区域,其步骤与添加二级 zone 相同。使用不同的区名称。
您必须在 master zonegroup 的 master 区域中主机上运行元数据操作,如用户创建和配额。master zone 和 second zone 可以从 RESTful API 接收存储桶操作,但 second zone 会将存储桶操作重定向到 master zone。如果 master zone 停机,存储桶操作将失败。如果使用 ctlplane -admin
CLI 创建存储桶,您必须在 master zone group 的 master 区的主机上运行它,以便存储桶与其他 zone group 和 zone 同步。
先决条件
- 至少两个正在运行的 Red Hat Ceph Storage 集群。
- 至少两个 Ceph 对象网关实例,每个实例对应一个 Red Hat Ceph Storage 集群。
- 所有节点的根级别访问权限。
- 节点或容器添加到存储集群中。
- 部署所有 Ceph Manager、监控和 OSD 守护进程。
流程
登录
cephadm
shell:示例
[root@host04 ~]# cephadm shell
从主机拉取主要域配置:
语法
radosgw-admin realm pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
示例
[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
示例
[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]
示例
[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 存储数据,则不要删除默认区域及其池。
示例
[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 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的
spec
部分:语法
spec: rgw_realm: REALM_NAME rgw_zone: ZONE_NAME
更新 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
示例
[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
示例
[ceph: root@host04 /]# radosgw-admin period update --commit
在
cephadm
shell 外部,获取存储集群和进程的 FSID:示例
[root@host04 ~]# systemctl list-units | grep ceph
启动 Ceph 对象网关守护进程:
语法
systemctl start ceph-FSID@DAEMON_NAME systemctl enable ceph-FSID@DAEMON_NAME
示例
[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.2.5. 配置存档区(技术预览)
在将区域配置为存档之前,请确保您有一个域。如果没有域,则无法通过默认 zone/zonegroups 的归档区域归档数据。
存档同步模块使用 Ceph 对象网关中 S3 对象的版本控制功能来具有存档区域。archive 区域具有 S3 对象的版本历史记录,只能通过与存档区域关联的网关删除。它捕获所有数据更新和元数据,将它们整合为 S3 对象的版本。
归档同步模块只是一个技术预览功能。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。如需了解更多详细信息,请参阅红帽技术预览功能的支持范围。
先决条件
- 一个正在运行的 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
其他资源
- 请参阅 Red Hat Ceph Storage Object Gateway 指南中的使用 Ceph 编排器部署多站点Ceph 对象网关一节以了解更多详细信息。
5.2.5.1. 删除存档区中的对象
您可以使用 S3 生命周期策略扩展来删除 < ArchiveZone>
; 元素中的对象。
归档区对象只能使用 过期
生命周期策略规则删除。
-
如果任何 &
lt;Rule
> 部分包含一个<ArchiveZone
> 元素,则该规则在归档区中执行,并且只能执行在归档区中运行的规则。 -
标记为 &
lt;ArchiveZone
> 的规则不会在非存档区域中执行。
生命周期策略中的规则决定了要删除的对象。有关生命周期创建和管理的更多信息,请参阅 Bucket 生命周期。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- Ceph 监控节点的根级别访问权限.
- 安装 Ceph 对象网关软件.
流程
设置 <
;ArchiveZone&
gt; 生命周期策略规则。有关创建生命周期策略的更多信息,请参阅 Red Hat Ceph Storage Object Gateway 指南中的创建生命周期管理策略部分。 https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/5/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>
可选:查看特定生命周期策略是否包含归档区规则。
语法
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 } } ] }
如果删除了 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.2.5.2. 删除 archive 模块中的对象
从 Red Hat Ceph Storage 5.3 及之后的版本开始,您可以使用 S3 生命周期策略扩展来删除 < ArchiveZone>
; 元素中的对象。
-
如果任何 &
lt;Rule
> 部分包含一个<ArchiveZone
> 元素,则该规则在归档区中执行,并且只能执行在归档区中运行的规则。 -
标记为 &
lt;ArchiveZone
> 的规则不会在非存档区域中执行。
生命周期策略中的规则决定了要删除的对象。有关生命周期创建和管理的更多信息,请参阅 Bucket 生命周期。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- Ceph 监控节点的根级别访问权限.
- 安装 Ceph 对象网关软件.
流程
设置 <
;ArchiveZone&
gt; 生命周期策略规则。有关创建生命周期策略的更多信息,请参阅 Red Hat Ceph Storage Object Gateway 指南中的创建生命周期管理策略部分。 https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/5/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>
可选:查看特定生命周期策略是否包含归档区规则。
语法
radosgw-admin lc get -- _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 } } ] }
其他资源
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage 对象网关指南中的 Bucket 生命周期 部分。
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage Developer Guide 中的 S3 存储桶生命周期 部分。
5.2.6. 故障转移和灾难恢复
如果主区域失败,则故障转移到 second zone for 灾难恢复。
先决条件
- 一个正在运行的 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
更新周期以使更改生效:
示例
[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
示例
[root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[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
更新周期以使更改生效:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
在恢复的区域重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[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
更新周期以使更改生效:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
在 second zone 中重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[ceph: root@host01 /]# ceph orch restart rgw
5.2.7. 同步多站点数据日志
默认情况下,在 Red Hat Ceph Storage 4 及更早的版本中,多站点数据日志记录设置为对象映射(OMAP)数据日志。
建议您使用默认的 datalog 类型。
在切换时不必同步和修剪所有内容。使用 radosgw-admin
数据类型时,Red Hat Ceph Storage 集群会启动所请求的类型的数据日志,并继续同步和修剪旧日志,并在其为空时清除它,然后再进入新日志。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 已安装 Ceph 对象网关多站点。
- 所有节点上的 root 级别访问权限。
流程
查看数据日志的类型:
示例
[root@host01 ~]# radosgw-admin datalog status { "marker": "1_1657793517.559260_543389.1", "last_update": "2022-07-14 10:11:57.559260Z" },
1_
in marker 反映了 OMAP 数据日志类型。将 data 日志类型改为 FIFO:
注意配置值区分大小写。在小写中使用
fifo
来设置配置选项。注意从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 后,将默认数据日志类型更改为
fifo
。示例
[root@host01 ~]# radosgw-admin --log-type fifo datalog type
确认更改:
示例
[root@host01 ~]# radosgw-admin datalog status { "marker": "G00000000000000000001@00000000000000000037:00000000000003563105", "last_update": "2022-07-14T10:14:07.516629Z" },
:
标记反映 FIFO 数据日志类型。
5.2.8. 配置多个区域而无需复制
您可以配置多个不会相互复制的区域。例如,您可以为公司中的每个团队创建一个专用区。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 安装 Ceph 对象网关软件.
- Ceph 对象网关节点的根级别访问权限.
流程
创建新域:
语法
radosgw-admin realm create --rgw-realm=REALM_NAME [--default]
示例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default { "id": "0956b174-fe14-4f97-8b50-bb7ec5e1cf62", "name": "test_realm", "current_period": "1950b710-3e63-4c41-a19e-46a715000980", "epoch": 1 }
创建新区组:
语法
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=FQDN:PORT --rgw-realm=REALM_NAME|--realm-id=REALM_ID --master --default
示例
[ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=us --endpoints=http://rgw1:80 --rgw-realm=test_realm --master --default { "id": "f1a233f5-c354-4107-b36c-df66126475a6", "name": "us", "api_name": "us", "is_master": "true", "endpoints": [ "http:\/\/rgw1:80" ], "hostnames": [], "hostnames_s3webzone": [], "master_zone": "", "zones": [], "placement_targets": [], "default_placement": "", "realm_id": "0956b174-fe14-4f97-8b50-bb7ec5e1cf62" }
根据用例创建一个或多个区:
语法
radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default --endpoints=FQDN:PORT,FQDN:PORT
示例
[ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east --master --default --endpoints=http://rgw1:80
使用 zone group 的配置获取 JSON 文件:
语法
radosgw-admin zonegroup get --rgw-zonegroup=ZONE_GROUP_NAME > JSON_FILE_NAME
示例
[ceph: root@host01 /]# radosgw-admin zonegroup get --rgw-zonegroup=us > zonegroup-us.json
打开 文件进行编辑,并将
log_meta
、log_data
和sync_from_all
字段设置为false
:示例
{ "id": "72f3a886-4c70-420b-bc39-7687f072997d", "name": "default", "api_name": "", "is_master": "true", "endpoints": [], "hostnames": [], "hostnames_s3website": [], "master_zone": "a5e44ecd-7aae-4e39-b743-3a709acb60c5", "zones": [ { "id": "975558e0-44d8-4866-a435-96d3e71041db", "name": "testzone", "endpoints": [], "log_meta": "false", "log_data": "false", "bucket_index_max_shards": 11, "read_only": "false", "tier_type": "", "sync_from_all": "false", "sync_from": [] }, { "id": "a5e44ecd-7aae-4e39-b743-3a709acb60c5", "name": "default", "endpoints": [], "log_meta": "false", "log_data": "false", "bucket_index_max_shards": 11, "read_only": "false", "tier_type": "", "sync_from_all": "false", "sync_from": [] } ], "placement_targets": [ { "name": "default-placement", "tags": [] } ], "default_placement": "default-placement", "realm_id": "2d988e7d-917e-46e7-bb18-79350f6a5155" }
使用更新的 JSON 文件设置 zone group:
语法
radosgw-admin zonegroup set --rgw-zonegroup=ZONE_GROUP_NAME --infile=JSON_FILE_NAME
示例
[ceph: root@host01 /]# radosgw-admin zonegroup set --rgw-zonegroup=us --infile=zonegroup-us.json
更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的
spec
部分:语法
spec: rgw_realm: REALM_NAME rgw_zone: ZONE_NAME
验证两个区是否已成功禁用:
示例
[root@ceph-ck-multi-pst82t-node5 ~]# radosgw-admin sync status realm 1e513df5-279b-4558-9dd0-3e50af411740 (india) zonegroup 09d320dd-d9f8-4fce-b951-8a59306a2d85 (south) zone a88defd9-84f4-4a4e-8b21-7f3fbc190005 (ka) current time 2024-03-15T05:01:18Z zonegroup features enabled: compress-encrypted,resharding metadata sync no sync (zone is master) data sync source: 7a1ad335-9e09-403a-879c-d29cd81e9c4d (tn) not syncing from zone
其它资源
5.2.9. 在同一存储集群中配置多个域
您可以在同一存储集群中配置多个域。对于多站点而言,这是更高级的用例。在同一存储集群中配置多个域,您可以使用本地域来处理本地 Ceph 对象网关客户端流量,以及要复制到从属站点的数据的复制域。
红帽建议每个域具有自己的 Ceph 对象网关。
先决条件
- 在存储集群中运行 Red Hat Ceph Storage 数据中心的两个.
- 存储集群中每个数据中心的访问密钥和密钥。
- 所有 Ceph 对象网关节点的 root 级别访问权限。
- 每个数据中心都有自己的本地域。它们共享两个站点上复制的域。
流程
在存储集群的第一个数据中心上创建一个本地域:
语法
radosgw-admin realm create --rgw-realm=REALM_NAME --default
示例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=ldc1 --default
在第一个数据中心上创建一个本地 master zonegroup:
语法
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_NODE_NAME:80 --rgw-realm=REALM_NAME --master --default
示例
[ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=ldc1zg --endpoints=http://rgw1:80 --rgw-realm=ldc1 --master --default
在第一个数据中心创建一个本地区:
语法
radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default --endpoints=HTTP_FQDN[,HTTP_FQDN]
示例
[ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=ldc1zg --rgw-zone=ldc1z --master --default --endpoints=http://rgw.example.com
提交周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的
spec
部分:语法
spec: rgw_realm: REALM_NAME rgw_zone: ZONE_NAME
您可以使用适当的 realm 和 zone 部署 Ceph 对象网关守护进程,或更新配置数据库:
使用放置规格部署 Ceph 对象网关:
语法
ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
示例
[ceph: root@host01 /]# ceph orch apply rgw rgw --realm=ldc1 --zone=ldc1z --placement="1 host01"
更新 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 ZONE_NAME
示例
[ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm ldc1 [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup ldc1zg [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone ldc1z
重新启动 Ceph 对象网关。
注意使用
ceph orch ps
命令的输出(在NAME
列下),获取 SERVICE_TYPE.ID 信息。要在存储集群中的单个节点上重启 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
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[ceph: root@host01 /]# ceph orch restart rgw
在存储集群中的第二个数据中心上创建一个本地域:
语法
radosgw-admin realm create --rgw-realm=REALM_NAME --default
示例
[ceph: root@host04 /]# radosgw-admin realm create --rgw-realm=ldc2 --default
在第二个数据中心上创建一个本地 master zonegroup:
语法
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_NODE_NAME:80 --rgw-realm=REALM_NAME --master --default
示例
[ceph: root@host04 /]# radosgw-admin zonegroup create --rgw-zonegroup=ldc2zg --endpoints=http://rgw2:80 --rgw-realm=ldc2 --master --default
在第二个数据中心创建一个本地区:
语法
radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default --endpoints=HTTP_FQDN[, HTTP_FQDN]
示例
[ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=ldc2zg --rgw-zone=ldc2z --master --default --endpoints=http://rgw.example.com
提交周期:
示例
[ceph: root@host04 /]# radosgw-admin period update --commit
可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的
spec
部分:语法
spec: rgw_realm: REALM_NAME rgw_zone: ZONE_NAME
您可以使用适当的 realm 和 zone 部署 Ceph 对象网关守护进程,或更新配置数据库:
使用放置规格部署 Ceph 对象网关:
语法
ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
示例
[ceph: root@host01 /]# ceph orch apply rgw rgw --realm=ldc2 --zone=ldc2z --placement="1 host01"
更新 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 ZONE_NAME
示例
[ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm ldc2 [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup ldc2zg [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone ldc2z
重新启动 Ceph 对象网关。
注意使用
ceph orch ps
命令的输出(在NAME
列下),获取 SERVICE_TYPE.ID 信息。在存储集群中的单独节点上重启 Ceph 对象网关:
语法
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
示例
[root@host04 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[ceph: root@host04 /]# ceph orch restart rgw
在存储集群的第一个数据中心上创建一个复制的域:
语法
radosgw-admin realm create --rgw-realm=REPLICATED_REALM_1 --default
示例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=rdc1 --default
使用
--default
标志,在主站点上创建复制的域默认值。为第一个数据中心创建一个 master zonegroup:
语法
radosgw-admin zonegroup create --rgw-zonegroup=RGW_ZONE_GROUP --endpoints=http://_RGW_NODE_NAME:80 --rgw-realm=_RGW_REALM_NAME --master --default
示例
[ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=rdc1zg --endpoints=http://rgw1:80 --rgw-realm=rdc1 --master --default
在第一个数据中心上创建一个 master zone:
语法
radosgw-admin zone create --rgw-zonegroup=RGW_ZONE_GROUP --rgw-zone=_MASTER_RGW_NODE_NAME --master --default --endpoints=HTTP_FQDN[,HTTP_FQDN]
示例
[ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=rdc1zg --rgw-zone=rdc1z --master --default --endpoints=http://rgw.example.com
创建同步用户,并将系统用户添加到多站点的 master 区域中:
语法
radosgw-admin user create --uid="SYNCHRONIZATION_USER" --display-name="Synchronization User" --system radosgw-admin zone modify --rgw-zone=RGW_ZONE --access-key=ACCESS_KEY --secret=SECRET_KEY
示例
radosgw-admin user create --uid="synchronization-user" --display-name="Synchronization User" --system [ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=rdc1zg --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
提交周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的
spec
部分:语法
spec: rgw_realm: REALM_NAME rgw_zone: ZONE_NAME
您可以使用适当的 realm 和 zone 部署 Ceph 对象网关守护进程,或更新配置数据库:
使用放置规格部署 Ceph 对象网关:
语法
ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
示例
[ceph: root@host01 /]# ceph orch apply rgw rgw --realm=rdc1 --zone=rdc1z --placement="1 host01"
更新 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 ZONE_NAME
示例
[ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm rdc1 [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup rdc1zg [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone rdc1z
重新启动 Ceph 对象网关。
注意使用
ceph orch ps
命令的输出(在NAME
列下),获取 SERVICE_TYPE.ID 信息。在存储集群中的单独节点上重启 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
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[ceph: root@host01 /]# ceph orch restart rgw
在第二个数据中心上拉取复制域:
语法
radosgw-admin realm pull --url=https://tower-osd1.cephtips.com --access-key=ACCESS_KEY --secret-key=SECRET_KEY
示例
[ceph: root@host01 /]# radosgw-admin realm pull --url=https://tower-osd1.cephtips.com --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret-key=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
从第一个数据中心拉取 period:
语法
radosgw-admin period pull --url=https://tower-osd1.cephtips.com --access-key=ACCESS_KEY --secret-key=SECRET_KEY
示例
[ceph: root@host01 /]# radosgw-admin period pull --url=https://tower-osd1.cephtips.com --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret-key=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
在第二个数据中心中创建 second zone:
语法
radosgw-admin zone create --rgw-zone=RGW_ZONE --rgw-zonegroup=RGW_ZONE_GROUP --endpoints=https://tower-osd4.cephtips.com --access-key=_ACCESS_KEY --secret-key=SECRET_KEY
示例
[ceph: root@host04 /]# radosgw-admin zone create --rgw-zone=rdc2z --rgw-zonegroup=rdc1zg --endpoints=https://tower-osd4.cephtips.com --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret-key=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
提交周期:
示例
[ceph: root@host04 /]# radosgw-admin period update --commit
可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的
spec
部分:语法
spec: rgw_realm: REALM_NAME rgw_zone: ZONE_NAME
您可以使用适当的 realm 和 zone 部署 Ceph 对象网关守护进程,或更新配置数据库:
使用放置规格部署 Ceph 对象网关:
语法
ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
示例
[ceph: root@host04 /]# ceph orch apply rgw rgw --realm=rdc1 --zone=rdc2z --placement="1 host04"
更新 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 ZONE_NAME
示例
[ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm rdc1 [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup rdc1zg [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone rdc2z
重新启动 Ceph 对象网关。
注意使用
ceph orch ps
命令的输出(在NAME
列下),获取 SERVICE_TYPE.ID 信息。在存储集群中的单独节点上重启 Ceph 对象网关:
语法
systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
示例
[root@host02 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
在存储集群的所有节点上重启 Ceph 对象网关:
语法
ceph orch restart SERVICE_TYPE
示例
[ceph: root@host04 /]# ceph orch restart rgw
-
以
root
用户身份登录第二个数据中心的端点。 验证 master 域上的同步状态:
语法
radosgw-admin sync status
示例
[ceph: root@host04 /]# radosgw-admin sync status realm 59762f08-470c-46de-b2b1-d92c50986e67 (ldc2) zonegroup 7cf8daf8-d279-4d5c-b73e-c7fd2af65197 (ldc2zg) zone 034ae8d3-ae0c-4e35-8760-134782cb4196 (ldc2z) metadata sync no sync (zone is master) current time 2023-08-17T05:49:56Z zonegroup features enabled: resharding disabled: compress-encrypted
重要在 Red Hat Ceph Storage 5.3z5 版本中,使用
radosgw-admin sync status
命令显示压缩
加密功能,它默认是禁用的。不要启用此功能,因为它在 Red Hat Ceph Storage 6.1z2 之前不被支持。-
以
root
用户身份登录第一个数据中心的端点。 验证 replication-synchronization 域的同步状态:
语法
radosgw-admin sync status --rgw-realm RGW_REALM_NAME
示例
[ceph: root@host01 /]# radosgw-admin sync status --rgw-realm rdc1 realm 73c7b801-3736-4a89-aaf8-e23c96e6e29d (rdc1) zonegroup d67cc9c9-690a-4076-89b8-e8127d868398 (rdc1zg) zone 67584789-375b-4d61-8f12-d1cf71998b38 (rdc2z) metadata sync syncing full sync: 0/64 shards incremental sync: 64/64 shards metadata is caught up with master data sync source: 705ff9b0-68d5-4475-9017-452107cec9a0 (rdc1z) syncing full sync: 0/128 shards incremental sync: 128/128 shards data is caught up with source realm 73c7b801-3736-4a89-aaf8-e23c96e6e29d (rdc1) zonegroup d67cc9c9-690a-4076-89b8-e8127d868398 (rdc1zg) zone 67584789-375b-4d61-8f12-d1cf71998b38 (rdc2z) metadata sync syncing full sync: 0/64 shards incremental sync: 64/64 shards metadata is caught up with master data sync source: 705ff9b0-68d5-4475-9017-452107cec9a0 (rdc1z) syncing full sync: 0/128 shards incremental sync: 128/128 shards data is caught up with source
要在本地站点中存储和访问数据,请为本地域创建用户:
语法
radosgw-admin user create --uid="LOCAL_USER" --display-name="Local user" --rgw-realm=_REALM_NAME --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
示例
[ceph: root@host04 /]# radosgw-admin user create --uid="local-user" --display-name="Local user" --rgw-realm=ldc1 --rgw-zonegroup=ldc1zg --rgw-zone=ldc1z
重要默认情况下,用户在默认域下创建用户。用户若要访问本地域中的数据,ctlplane
-admin
命令需要--rgw-realm
参数。
5.2.10. 使用多站点同步策略(技术预览)
Ceph 对象网关多站点同步策略只是一个技术预览功能。红帽产品服务级别协议(SLA)不支持技术预览功能,且其功能可能并不完善,因此红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。如需了解更多详细信息,请参阅红帽技术预览功能的支持范围。
作为存储管理员,您可以在存储桶级别使用多站点同步策略来控制不同区域的存储桶之间的数据移动。这些策略称为存储桶粒度同步策略。在以前的版本中,区中的所有存储桶都是对称的。这意味着每个区域都包含给定存储桶的镜像副本,并且存储桶副本在所有区域中都相同。同步过程假定存储桶同步源和存储桶同步目的地引用同一存储桶。
使用 bucket-granularity 同步策略可让不同区域中的存储桶包含不同的数据。这使得存储桶能够从其他区的其他存储桶中拉取数据,并且这些存储桶的名称或 ID 与存储桶拉取数据没有相同。在本例中,bucket 同步源和存储桶同步目的地引用不同的存储桶。
同步策略替代旧的 zone group coarse 配置(sync_from*
)。同步策略可以在 zone group 级别上配置。如果配置了该配置,它将替换 zone group 级别的旧式配置,但也可在 bucket 级别上进行配置。
5.2.10.1. 先决条件
- 正在运行的 Red Hat Ceph Storage 集群。
- Ceph 监控节点的根级别访问权限.
- 安装 Ceph 对象网关软件.
5.2.10.2. 多站点同步策略组状态
在同步策略中,可以定义可以包含 data-flow 配置列表的多个组,以及管道配置列表。data-flow 定义不同区域之间的数据流。它可以定义对称数据流,其中有多个区域同步数据,并且可以定义方向数据流,其中的数据从一个区域移动到另一个区域。
管道定义可以使用这些数据流的实际存储桶,以及与其关联的属性,如源对象前缀。
同步策略组可能处于 3 个状态:
- 允许并启用 enabled SAS- SASsync。
- 允许 SAS- SASsync。
- 禁止在此组定义的情况下,禁止使用 Software。这个组中的同步状态可能会覆盖其他组。
策略可以在 bucket 级别上定义。bucket 级别同步策略继承 zonegroup 策略的数据流,并且只能定义 zonegroup 允许的子集。
通配符区域,策略中的通配符 bucket 参数定义所有相关区域或所有相关存储桶。在 bucket 策略的上下文中,这意味着当前的 bucket 实例。一个灾难恢复配置,即镜像整个区域不需要在存储桶上配置任何配置。但是,对于精细 bucket 同步,最好通过在 zonegroup 级别上允许(status=allowed)配置管道以同步,例如使用通配符,但仅在存储桶级别启用特定的同步(status=enabled)。如果需要,存储桶级别的策略可以将数据移动限制到特定的相关区域。
ZoneGroup | Bucket | 在存储桶中同步 |
---|---|---|
enabled | enabled | enabled |
enabled | 允许 | enabled |
enabled | 禁止 | disabled |
允许 | enabled | enabled |
允许 | 允许 | disabled |
允许 | 禁止 | disabled |
禁止 | enabled | disabled |
禁止 | 允许 | disabled |
禁止 | 禁止 | disabled |
对于被设置为反映任何同步对(SOURCE_ZONE、SOURCE_BUCKET)、(DESTINATION_ZONE,DESTINATION_BUCKET)的多个组策略,按以下顺序应用以下规则:
-
即使
禁止
一个同步策略,同步也会禁用
。 -
应至少
启用
一个策略,以便允许同步。
这个组中的同步状态可能会覆盖其他组。
通配符区域,策略中的通配符 bucket 参数定义所有相关区域或所有相关存储桶。在 bucket 策略的上下文中,这意味着当前的 bucket 实例。一个灾难恢复配置,即镜像整个区域不需要在存储桶上配置任何配置。但是,对于精细的存储桶同步,最好在 zonegroup 级别允许(status=allowed
)将它们配置为同步管道(例如,使用通配符)。但是,仅在存储桶级别(status=enabled
)中启用特定的同步。
对 zonegroup 策略的任何更改都需要在 zonegroup master zone 上应用,并且需要 period 更新和提交。对 bucket 策略的更改需要在 zonegroup master zone 上应用。Ceph 对象网关动态处理这些更改。
5.2.10.3. 检索当前策略
您可以使用 get
命令来检索当前的 zonegroup 同步策略,或者特定的 bucket 策略。
先决条件
- 正在运行的 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.2.10.4. 创建同步策略组
您可以为当前 zone group 或特定存储桶创建同步策略组。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群。
-
root 或
sudo
访问权限。 - 已安装 Ceph 对象网关。
流程
创建同步策略组或存储桶策略。要创建存储桶策略,请使用
--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
5.2.10.5. 修改同步策略组
您可以为当前 zone group 或特定存储桶修改现有同步策略组。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群。
-
root 或
sudo
访问权限。 - 已安装 Ceph 对象网关。
流程
修改同步策略组或存储桶策略。要修改存储桶策略,请使用
--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
5.2.10.6. 获取同步策略组
您可以使用 group get
命令来按组 ID 来显示当前的同步策略组,或者显示特定的 bucket 策略。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群。
-
root 或
sudo
访问权限。 - 已安装 Ceph 对象网关。
流程
显示当前的同步策略组或存储桶策略。要显示特定的存储桶策略,请使用
--bucket
选项:注意如果没有提供
--bucket
选项,则在 zonegroup-level 上创建的组将被检索,而不是 bucket-level。语法
radosgw-admin sync group get --bucket=BUCKET_NAME --group-id=GROUP_ID
示例
[ceph: root@host01 /]# radosgw-admin sync group get --group-id=mygroup
5.2.10.7. 删除同步策略组
您可以使用 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.2.10.8. 创建同步流
您可以为同步策略组或特定存储桶创建两种不同类型的流:
- 方向性同步流
- 对称同步流
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 对象网关。
流程
创建或更新方向同步流。要为特定存储桶创建或更新同步流,请使用
--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
创建或更新对称同步流。要为对称流类型指定多个区域,请在
--zones
选项中使用逗号分隔的列表。语法
radosgw-admin sync group flow create --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME
5.2.10.9. 删除同步流和区域
group flow remove
命令从同步策略组或存储桶中删除同步流或区域。
对于使用双向流程的同步策略组或存储桶,组流删除
命令会删除流。对于使用对称流的同步策略组或 bucket,您可以使用 group flow remove
命令从流中删除指定区域,或者移除流。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群。
-
root 或
sudo
访问权限。 - 已安装 Ceph 对象网关。
流程
删除方向同步流。要删除特定存储桶的方向同步流,请使用
--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
从对称同步流中删除特定区域。要从对称流中删除多个区域,请对
--zones
选项使用逗号分隔的列表。语法
radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME
移除对称同步流。要从存储桶中删除同步流,请使用
--bucket
选项。语法
radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME
5.2.10.10. 创建或修改同步组管道
作为存储管理员,您可以定义管道来指定哪些存储桶可以使用您配置的数据流,以及与这些数据流关联的属性。
sync group pipe create
命令允许您创建管道,它们是特定存储桶或 bucket 组或特定区域组之间的自定义同步组数据流。
这个命令使用以下选项:
选项 | 描述 | 必填/选填 |
---|---|---|
--bucket | 需要配置同步策略的存储桶的名称。仅在 bucket 级别同步策略中使用。 | 选填 |
--group-id | 同步组的 ID | 必填 |
--pipe-id | 管道 ID | 必填 |
--source-zones |
将数据发送到同步组的区域。使用单引号(')作为值。使用逗号分隔多个区域。对于与数据流规则匹配的所有区域,使用通配符 | 必填 |
--source-bucket |
将数据发送到同步组的 bucket 或 bucket。如果没有提及存储桶名称,则会将 | 选填 |
--source-bucket-id | 源存储桶的 ID。 | 选填 |
--dest-zones |
接收同步数据的区域或区域。使用单引号(')作为值。使用逗号分隔多个区域。对于与数据流规则匹配的所有区域,使用通配符 | 必填 |
--dest-bucket |
接收同步数据的 bucket。如果没有提及存储桶名称,则会将 | 选填 |
--dest-bucket-id | 目标 bucket 的 ID。 | 选填 |
--prefix |
bucket 前缀。使用通配符 | 选填 |
--prefix-rm | 不要使用 bucket 前缀进行过滤。 | 选填 |
--tags-add | 键=值对的逗号分隔列表。 | 选填 |
--tags-rm | 删除一个或多个标签的 key=value 对。 | 选填 |
--dest-owner | 来自源的对象的目的地所有者。 | 选填 |
--storage-class | 来自源对象的目的地存储类。 | 选填 |
--mode |
将 | 选填 |
--uid | 用于用户模式的权限验证。指定要发出同步操作的用户 ID。 | 选填 |
要为某些存储桶在 zonegroup 级别启用或禁用同步,请将 zonegroup 级别同步策略分别设置为 启用或禁用
状态,并使用 --source-bucket
和 --dest-bucket
创建包含存储桶名称或 bucket-id
、i.e、--source-bucket-id
和 --dest-bucket-id
的每个存储桶的管道。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
root 或
sudo
访问权限。 - 已安装 Ceph 对象网关。
流程
创建同步组管道:
语法
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_BUCKET1 --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET1 --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.2.10.11. 修改或删除同步组管道
作为存储管理员,您可以使用 sync group pipe modify
命令修改同步组 pipe 和 sync group pipe remove
来删除同步组管道。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
root 或
sudo
访问权限。 - 已安装 Ceph 对象网关。
流程
修改同步组管道选项。
语法
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
删除同步组管道。
语法
radosgw-admin sync group pipe remove --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID
5.2.10.12. 获取同步操作的信息
sync info
命令可让您获取有关同步策略所定义的预期同步源和目标的信息。
当您为存储桶创建同步策略时,该策略定义数据如何从该存储桶移动到不同区域的不同 bucket。创建策略也会创建一个 bucket 依赖项列表,每当该 bucket 与其他存储桶同步时,它们就可用作提示。请注意,存储桶可以引用另一个存储桶,而无需实际同步,因为同步取决于数据流是否允许同步进行。
--bucket
和 effective-zone-name
参数是可选的。如果您调用 sync info
命令但不指定任何选项,则对象网关会返回所有区域中同步策略定义的所有同步操作。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群。
-
root 或
sudo
访问权限。 - 已安装 Ceph 对象网关。
- 定义了组同步策略。
流程
获取有关同步操作的信息:
语法
radosgw-admin sync info --bucket=BUCKET_NAME --effective-zone-name=ZONE_NAME
5.2.11. 多站点 Ceph 对象网关命令行使用
作为存储管理员,您可以更好地了解如何在多站点环境中使用 Ceph 对象网关。您可以在多站点环境中了解如何更好地管理域、区域组和区域。
5.2.11.1. 先决条件
- 正在运行的 Red Hat Ceph Storage
- 部署 Ceph 对象网关软件。
- 访问 Ceph 对象网关节点或容器。
5.2.11.2. Realms
realm 代表一个全局唯一的命名空间,它由一个或多个 zone group 组成,包含一个或多个 zone,以及包含 bucket 的区域,后者又包含对象。域允许 Ceph 对象网关在同一硬件上支持多个命名空间及其配置。
域中包含句点的概念。每个 period 代表 zone group 和 zone 配置的状态。每次您更改一个 zonegroup 或 zone zone 时,更新 period 并提交。
红帽建议为新集群创建域(realms)。
5.2.11.2.1. 创建域
要创建域,请发出 realm create
命令并指定 realm 名称。如果 realm 是默认值,指定 --default
。
语法
radosgw-admin realm create --rgw-realm=REALM_NAME [--default]
示例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
通过指定 --default
,域将通过每个 radosgw-admin
调用隐式调用,除非明确提供了 --rgw-realm
和 realm 名称。
5.2.11.2.2. 将 Realm 设置为默认值
realm 列表中的一个域应为默认域。可能只有一个默认域。如果只有一个域,但没有在创建时指定为默认域,则使其成为默认域。另外,要更改哪个 realm 是默认值,请运行以下命令:
[ceph: root@host01 /]# radosgw-admin realm default --rgw-realm=test_realm
当 realm 为 default 时,命令行会假定 --rgw-realm=REALM_NAME
作为参数。
5.2.11.2.3. 删除 Realm
若要删除域,请运行 realm delete
命令并指定 realm 名称。
语法
radosgw-admin realm delete --rgw-realm=REALM_NAME
示例
[ceph: root@host01 /]# radosgw-admin realm delete --rgw-realm=test_realm
5.2.11.2.4. 获取域
要获取 realm,请运行 realm get
命令并指定 realm 名称。
语法
radosgw-admin realm get --rgw-realm=REALM_NAME
示例
[ceph: root@host01 /]# radosgw-admin realm get --rgw-realm=test_realm >filename.json
CLI 将回显具有 realm 属性的 JSON 对象。
{ "id": "0a68d52e-a19c-4e8e-b012-a8f831cb3ebc", "name": "test_realm", "current_period": "b0c5bbef-4337-4edd-8184-5aeab2ec413b", "epoch": 1 }
使用 >
和输出文件名将 JSON 对象输出到文件中。
5.2.11.2.5. 设置域
要设置 realm,请运行 realm set
命令,使用输入文件名指定 realm name 和 --infile=
。
语法
radosgw-admin realm set --rgw-realm=REALM_NAME --infile=IN_FILENAME
示例
[ceph: root@host01 /]# radosgw-admin realm set --rgw-realm=test_realm --infile=filename.json
5.2.11.2.6. 列出 realms
要列出 realms,请运行 realm list
命令:
示例
[ceph: root@host01 /]# radosgw-admin realm list
5.2.11.2.7. 列出 Realm Periods
要列出 realm period,请运行 realm list-periods
命令。
示例
[ceph: root@host01 /]# radosgw-admin realm list-periods
5.2.11.2.8. 拉取域
要从包含 master zone group 和 master zone 的节点拉取 realm 到包含 second zone group 或 zone 的节点,请在接收 realm 配置的节点上运行 realm pull
命令。
语法
radosgw-admin realm pull --url=URL_TO_MASTER_ZONE_GATEWAY--access-key=ACCESS_KEY --secret=SECRET_KEY
5.2.11.2.9. 重命名域
realm 不是该 period 的一部分。因此,仅在本地应用重命名域,且不会通过 realm pull
来拉取。重命名具有多个区域的域时,在每个区域上运行这个命令。要重命名 realm,请运行以下命令:
语法
radosgw-admin realm rename --rgw-realm=REALM_NAME --realm-new-name=NEW_REALM_NAME
不要使用 realm set
来更改 name
参数。这仅更改内部名称。指定 --rgw-realm
仍然会使用旧的域名。
5.2.11.3. zone group
Ceph 对象网关利用 zone group 的概念来支持多站点部署和全局命名空间。zone group 以前称为地区,它定义一个或多个 zone 中一个或多个 Ceph 对象网关实例的地理位置。
配置 zone group 与典型的配置过程不同,因为并非所有设置都最终在 Ceph 配置文件中。您可以列出 zone group、获取 zone group 配置并设置 zone group 配置。
radosgw-admin zonegroup
操作可以在域内的任何节点上执行,因为更新该周期的步骤会在整个集群中传播更改。但是,radosgw-admin zone
需要在区域内的主机上执行。
5.2.11.3.1. 创建区组
创建 zone group 包括指定 zone group name。创建区域会假定其在默认域中存在,除非指定了 --rgw-realm=REALM_NAME
。如果 zonegroup 是默认 zonegroup,请指定 --default
标志。如果 zonegroup 是 master zonegroup,请指定 --master
标志。
语法
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME [--rgw-realm=REALM_NAME] [--master] [--default]
使用 zonegroup modify --rgw-zonegroup=ZONE_GROUP_NAME
修改现有 zone group 的设置。
5.2.11.3.2. 将区组设为默认值
zonegroups 列表中的一个 zonegroup 应当是末日 zonegroup。可能只有一个默认 zonegroup。如果只有一个 zonegroup,并且它没有在创建时指定为默认 zonegroup,则使其成为默认 zonegroup。另外,要更改哪个 zonegroup 是默认,请运行以下命令:
示例
[ceph: root@host01 /]# radosgw-admin zonegroup default --rgw-zonegroup=us
当 zonegroup 是默认值时,命令行会假定 --rgw-zonegroup=ZONE_GROUP_NAME
作为参数。
然后,更新周期:
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.3.3. 在区组中添加一个区
要在 zonegroup 中添加 区域,您必须在该区域中的主机上运行此命令。要在 zonegroup 中添加区,请运行以下命令:
语法
radosgw-admin zonegroup add --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
然后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.3.4. 从区组中删除区
要从 zonegroup 中删除区,请运行以下命令:
语法
radosgw-admin zonegroup remove --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
然后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.3.5. 重命名一个区组
要重命名 zonegroup,请运行以下命令:
语法
radosgw-admin zonegroup rename --rgw-zonegroup=ZONE_GROUP_NAME --zonegroup-new-name=NEW_ZONE_GROUP_NAME
然后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.3.6. 删除 Zone 组
要删除 zonegroup,请运行以下命令:
语法
radosgw-admin zonegroup delete --rgw-zonegroup=ZONE_GROUP_NAME
然后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.3.7. 列出区组
Ceph 集群包含 zone group 的列表。要列出区组,请运行以下命令:
[ceph: root@host01 /]# radosgw-admin zonegroup list
radosgw-admin
返回一个 JSON 格式的 zone group 列表。
{ "default_info": "90b28698-e7c3-462c-a42d-4aa780d24eda", "zonegroups": [ "us" ] }
5.2.11.3.8. 获取区组
要查看区组群的配置,请运行以下命令:
语法
radosgw-admin zonegroup get [--rgw-zonegroup=ZONE_GROUP_NAME]
zone group 配置类似如下:
{ "id": "90b28698-e7c3-462c-a42d-4aa780d24eda", "name": "us", "api_name": "us", "is_master": "true", "endpoints": [ "http:\/\/rgw1:80" ], "hostnames": [], "hostnames_s3website": [], "master_zone": "9248cab2-afe7-43d8-a661-a40bf316665e", "zones": [ { "id": "9248cab2-afe7-43d8-a661-a40bf316665e", "name": "us-east", "endpoints": [ "http:\/\/rgw1" ], "log_meta": "true", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" }, { "id": "d1024e59-7d28-49d1-8222-af101965a939", "name": "us-west", "endpoints": [ "http:\/\/rgw2:80" ], "log_meta": "false", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" } ], "placement_targets": [ { "name": "default-placement", "tags": [] } ], "default_placement": "default-placement", "realm_id": "ae031368-8715-4e27-9a99-0c9468852cfe" }
5.2.11.3.9. 设置区组
定义 zone group 包括创建 JSON 对象,至少指定所需的设置:
-
name
:zone group 的名称。必需。 -
api_name
:zone group 的 API 名称。可选。 is_master
:确定 zone group 是 master zone group。必需。注意:您只能有一个 master zone group。
-
endpoint
:zone group 中所有端点的列表。例如,您可以使用多个域名来引用同一 zone group。请注意,需要使用正斜杠(\/
)进行转意。您还可以为每个端点指定一个端口(fqdn:port
)。可选。 -
hostnames
:zone group 中所有主机名的列表。例如,您可以使用多个域名来引用同一 zone group。可选。rgw dns name
设置将自动包含在此列表中。您应在更改此设置后重新启动网关守护进程。 master_zone
: zone group 的 master zone。可选。如果未指定,则使用默认区域。注意每个 zone group 只能有一个 master zone。
-
zones:zone
group 中所有 zone 的列表。每个区域都有一个名称(必需),一个端点列表(可选),以及网关是否记录元数据和数据操作(默认为false)。 -
placement_targets
:放置目标列表(可选)。每个放置目标都包含放置目标的名称(必需)和一个标签列表(可选),以便只有具有标签的用户才能使用放置目标(例如,用户 info 中的placement_tags
字段)。 -
default_placement
:对象索引和对象数据的默认放置目标。默认设置为default-placement
。您还可以在用户信息中为每个用户设置默认放置位置。
要设置 zone group,请创建一个由所需字段组成的 JSON 对象,将对象保存到文件中,例如 zonegroup.json
; 然后运行以下命令:
示例
[ceph: root@host01 /]# radosgw-admin zonegroup set --infile zonegroup.json
其中 zonegroup.json
是您创建的 JSON 文件。
默认
zone group is_master
默认设置为 true
。如果您创建新 zone group 并希望使其成为 master zone group,您必须将 default
zone group is_master
设置设置为 false
,或删除 default
zone group。
最后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.3.10. 设置区组映射
设置 zone group map 包括创建一个由一个或多个 zone group 组成的 JSON 对象,并为集群设置 master_zonegroup
。zone group map 中的每个 zone group 由一个键/值对组成,其中 键
设置等同于单个 zone group 配置的 name
设置,而 val
则是由单个 zone group 配置组成的 JSON 对象。
您只能有一个 zone group is_master
等于 true
,它必须指定为 zone group map 末尾的 master_zonegroup
。以下 JSON 对象是默认 zone group map 的示例:
{ "zonegroups": [ { "key": "90b28698-e7c3-462c-a42d-4aa780d24eda", "val": { "id": "90b28698-e7c3-462c-a42d-4aa780d24eda", "name": "us", "api_name": "us", "is_master": "true", "endpoints": [ "http:\/\/rgw1:80" ], "hostnames": [], "hostnames_s3website": [], "master_zone": "9248cab2-afe7-43d8-a661-a40bf316665e", "zones": [ { "id": "9248cab2-afe7-43d8-a661-a40bf316665e", "name": "us-east", "endpoints": [ "http:\/\/rgw1" ], "log_meta": "true", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" }, { "id": "d1024e59-7d28-49d1-8222-af101965a939", "name": "us-west", "endpoints": [ "http:\/\/rgw2:80" ], "log_meta": "false", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" } ], "placement_targets": [ { "name": "default-placement", "tags": [] } ], "default_placement": "default-placement", "realm_id": "ae031368-8715-4e27-9a99-0c9468852cfe" } } ], "master_zonegroup": "90b28698-e7c3-462c-a42d-4aa780d24eda", "bucket_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1 }, "user_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1 } }
要设置区组映射,请运行以下命令:
示例
[ceph: root@host01 /]# radosgw-admin zonegroup-map set --infile zonegroupmap.json
其中 zonegroupmap.json
是您创建的 JSON 文件。确保为 zone group map 中指定的区域创建了区域。最后,更新周期。
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.4. Zones
Ceph 对象网关支持区域的概念。zone 定义由一个或多个 Ceph 对象网关实例组成的逻辑组。
配置区域与典型配置过程有所不同,因为并非所有设置都最终在 Ceph 配置文件中。您可以列出区域,获取区配置并设置区配置。
在运行或在 该区域中的主机上发出所有 FQDN-admin
区域操作 MUST。
5.2.11.4.1. 创建区域
要创建区域,请指定区域名称。如果是一个 master 区域,指定 --master
选项。zone group 中只有一个 zone 可以是 master zone。要将区域添加到 zonegroup,请使用 zonegroup 名称指定 --rgw-zonegroup
选项。
必须在位于 区域内的 Ceph 对象网关节点上创建区域。
语法
radosgw-admin zone create --rgw-zone=ZONE_NAME \ [--zonegroup=ZONE_GROUP_NAME]\ [--endpoints=ENDPOINT_PORT [,<endpoint:port>] \ [--master] [--default] \ --access-key ACCESS_KEY --secret SECRET_KEY
然后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.4.2. 删除区
要删除区,首先将其从 zonegroup 中删除。
流程
从 zonegroup 中删除区:
语法
radosgw-admin zonegroup remove --rgw-zonegroup=ZONE_GROUP_NAME\ --rgw-zone=ZONE_NAME
更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
删除区:
重要此流程在 区内的主机上使用。
语法
radosgw-admin zone delete --rgw-zone=ZONE_NAME
更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
重要不要先从 zone group 中删除区域。否则,更新周期将失败。
如果已删除区域的池不会在其他任何位置使用,请考虑删除池。将以下示例中的 DELETED_ZONE_NAME
替换为已删除的区域名称。
当 Ceph 删除 zone 池后,它会以无法恢复的方式删除其中的所有数据。仅当 Ceph 客户端不再需要池内容时,仅删除 zone 池。
在多域集群中,删除 .rgw.root
池以及 zone 池将移除群集的所有域信息。在删除 .rgw.root
池之前,确保. rgw.root
不包含其他活动域。
语法
ceph osd pool delete DELETED_ZONE_NAME.rgw.control DELETED_ZONE_NAME.rgw.control --yes-i-really-really-mean-it ceph osd pool delete DELETED_ZONE_NAME.rgw.data.root DELETED_ZONE_NAME.rgw.data.root --yes-i-really-really-mean-it ceph osd pool delete DELETED_ZONE_NAME.rgw.log DELETED_ZONE_NAME.rgw.log --yes-i-really-really-mean-it ceph osd pool delete DELETED_ZONE_NAME.rgw.users.uid DELETED_ZONE_NAME.rgw.users.uid --yes-i-really-really-mean-it
删除池后,重新启动 RGW 流程。
5.2.11.4.3. 修改区域
若要修改区域,请指定区域名称和您要修改的参数。
应在位于 区域内的 Ceph 对象网关节点上修改区域。
语法
radosgw-admin zone modify [options]--access-key=<key>
--secret/--secret-key=<key>
--master
--default
--endpoints=<list>
然后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.4.4. 列出区域
以 root
身份,列出集群中的区,请运行以下命令:
示例
[ceph: root@host01 /]# radosgw-admin zone list
5.2.11.4.5. 获取区域
作为 root
用户,要获取区的配置,请运行以下命令:
语法
radosgw-admin zone get [--rgw-zone=ZONE_NAME]
default
区类似如下:
{ "domain_root": ".rgw", "control_pool": ".rgw.control", "gc_pool": ".rgw.gc", "log_pool": ".log", "intent_log_pool": ".intent-log", "usage_log_pool": ".usage", "user_keys_pool": ".users", "user_email_pool": ".users.email", "user_swift_pool": ".users.swift", "user_uid_pool": ".users.uid", "system_key": { "access_key": "", "secret_key": ""}, "placement_pools": [ { "key": "default-placement", "val": { "index_pool": ".rgw.buckets.index", "data_pool": ".rgw.buckets"} } ] }
5.2.11.4.6. 设置区域
配置区域涉及指定一系列 Ceph 对象网关池。为保持一致性,我们建议使用与区域名称相同的池前缀。有关配置 池 的详情,请参阅 Red Hat Ceph Storage Storage 策略指南中的 池章节。
应在位于 区域内的 Ceph 对象网关节点上设置区域。
要设置一个区,创建一个由池组成的 JSON 对象,将对象保存到文件中,例如 zone.json
; 然后,运行以下命令,将 ZONE_NAME
替换为区域名称:
示例
[ceph: root@host01 /]# radosgw-admin zone set --rgw-zone=test-zone --infile zone.json
其中 zone.json
是您创建的 JSON 文件。
然后,以 root
用户身份更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.2.11.4.7. 重命名区域
要重命名区域,请指定区域名称和新区域名称。在区中的主机上发出以下命令:
语法
radosgw-admin zone rename --rgw-zone=ZONE_NAME --zone-new-name=NEW_ZONE_NAME
然后,更新周期:
示例
[ceph: root@host01 /]# radosgw-admin period update --commit