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、 rgw3rgw4

多站点配置需要一个 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. 将单个站点系统迁移到多站点

要从带有 默认区 组和区的单一站点系统迁移到多站点系统,请使用以下步骤:

  1. 创建 realm。使用域名替换 NAME

    语法

    radosgw-admin realm create --rgw-realm=NAME --default

  2. 重命名默认区域和 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

  3. 配置主要 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

  4. 创建系统用户。使用用户名替换 USER_ID。将 DISPLAY_NAME 替换为显示名称。它可以包含空格。

    语法

    radosgw-admin user create --uid=USER_ID \
                                --display-name="DISPLAY_NAME" \
                                --access-key=ACCESS_KEY --secret=SECRET_KEY \ --system

  5. 配置主区域。使用 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

  6. 可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的 spec 部分:

    语法

    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME

  7. 更新 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

  8. 提交更新的配置:

    示例

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

  9. 重启 Ceph 对象网关:

    注意

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

    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

  10. 建立 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 守护进程。

流程

  1. 登录 cephadm shell:

    示例

    [root@host04 ~]# cephadm shell

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

    语法

    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

  3. 从主机拉取主要 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

  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]

    示例

    [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 存储数据,则不要删除默认区域及其池。

    示例

    [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 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的 spec 部分:

    语法

    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME

  7. 更新 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

  8. 提交更改:

    语法

    radosgw-admin period update --commit

    示例

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

  9. cephadm shell 外部,获取存储集群和进程的 FSID:

    示例

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

  10. 启动 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. 配置存档区(技术预览)

存档同步模块使用 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

其他资源

5.2.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/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>

  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.2.5.2. 删除 archive 模块中的对象

从 Red Hat Ceph Storage 5.3 及之后的版本开始,您可以使用 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/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>

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

    语法

    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
                }
            }
        ]
    }

    1 1
    归档区规则。这是带有归档区规则的生命周期策略示例。

其他资源

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

5.2.6. 故障转移和灾难恢复

如果主区域失败,则故障转移到 second zone for 灾难恢复。

先决条件

  • 一个正在运行的 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. 更新周期以使更改生效:

    示例

    [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

      示例

      [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

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

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

    示例

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

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

    语法

    ceph orch restart SERVICE_TYPE

    示例

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

    示例

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

  7. 在 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 级别访问权限。

流程

  1. 查看数据日志的类型:

    示例

    [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 数据日志类型。

  2. 将 data 日志类型改为 FIFO:

    注意

    配置值区分大小写。在小写中使用 fifo 来设置配置选项。

    注意

    从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 后,将默认数据日志类型更改为 fifo

    示例

    [root@host01 ~]# radosgw-admin --log-type fifo datalog type

  3. 确认更改:

    示例

    [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 对象网关节点的根级别访问权限.

流程

  1. 创建新域:

    语法

    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
    }

  2. 创建新区组:

    语法

    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"
    }

  3. 根据用例创建一个或多个区:

    语法

    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

  4. 使用 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

    1. 打开 文件进行编辑,并将 log_metalog_datasync_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"
          }

  5. 使用更新的 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

  6. 更新周期:

    示例

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

  7. 可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的 spec 部分:

    语法

    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME

5.2.9. 在同一存储集群中配置多个域

您可以在同一存储集群中配置多个域。对于多站点而言,这是更高级的用例。在同一存储集群中配置多个域,您可以使用本地域来处理本地 Ceph 对象网关客户端流量,以及要复制到从属站点的数据的复制域。

注意

红帽建议每个域具有自己的 Ceph 对象网关。

先决条件

  • 在存储集群中运行 Red Hat Ceph Storage 数据中心的两个.
  • 存储集群中每个数据中心的访问密钥和密钥。
  • 所有 Ceph 对象网关节点的 root 级别访问权限。
  • 每个数据中心都有自己的本地域。它们共享两个站点上复制的域。

流程

  1. 在存储集群的第一个数据中心上创建一个本地域:

    语法

    radosgw-admin realm create --rgw-realm=REALM_NAME --default

    示例

    [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=ldc1 --default

  2. 在第一个数据中心上创建一个本地 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

  3. 在第一个数据中心创建一个本地区:

    语法

    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

  4. 提交周期:

    示例

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

  5. 可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的 spec 部分:

    语法

    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME

  6. 您可以使用适当的 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

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

    注意

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

    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

  8. 在存储集群中的第二个数据中心上创建一个本地域:

    语法

    radosgw-admin realm create --rgw-realm=REALM_NAME --default

    示例

    [ceph: root@host04 /]# radosgw-admin realm create --rgw-realm=ldc2 --default

  9. 在第二个数据中心上创建一个本地 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

  10. 在第二个数据中心创建一个本地区:

    语法

    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

  11. 提交周期:

    示例

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

  12. 可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的 spec 部分:

    语法

    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME

  13. 您可以使用适当的 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

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

    注意

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

    1. 在存储集群中的单独节点上重启 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

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

      语法

      ceph orch restart SERVICE_TYPE

      示例

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

  15. 在存储集群的第一个数据中心上创建一个复制的域:

    语法

    radosgw-admin realm create --rgw-realm=REPLICATED_REALM_1 --default

    示例

    [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=rdc1 --default

    使用 --default 标志,在主站点上创建复制的域默认值。

  16. 为第一个数据中心创建一个 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

  17. 在第一个数据中心上创建一个 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

  18. 创建同步用户,并将系统用户添加到多站点的 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

  19. 提交周期:

    示例

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

  20. 可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的 spec 部分:

    语法

    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME

  21. 您可以使用适当的 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

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

    注意

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

    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

  23. 在第二个数据中心上拉取复制域:

    语法

    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

  24. 从第一个数据中心拉取 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

  25. 在第二个数据中心中创建 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

  26. 提交周期:

    示例

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

  27. 可选:如果您在 Ceph 对象网关部署期间在服务规格中指定 realm 和 zone,请更新规范文件的 spec 部分:

    语法

    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME

  28. 您可以使用适当的 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

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

    注意

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

    1. 在存储集群中的单独节点上重启 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

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

      语法

      ceph orch restart SERVICE_TYPE

      示例

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

  30. root 用户身份登录第二个数据中心的端点。
  31. 验证 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 之前不被支持。

  32. root 用户身份登录第一个数据中心的端点。
  33. 验证 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

  34. 要在本地站点中存储和访问数据,请为本地域创建用户:

    语法

    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)。如果需要,存储桶级别的策略可以将数据移动限制到特定的相关区域。

ZoneGroupBucket在存储桶中同步

enabled

enabled

enabled

enabled

允许

enabled

enabled

禁止

disabled

允许

enabled

enabled

允许

允许

disabled

允许

禁止

disabled

禁止

enabled

disabled

禁止

允许

disabled

禁止

禁止

disabled

对于被设置为反映任何同步对(SOURCE_ZONESOURCE_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 对象网关。

流程

  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_NAME

5.2.10.9. 删除同步流和区域

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_NAME

  3. 移除对称同步流。要从存储桶中删除同步流,请使用 --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。如果没有提及存储桶名称,则会将 * (通配符)用作默认值。在 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 级别同步策略分别设置为 启用或禁用 状态,并使用 --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 与其他存储桶同步时,它们就可用作提示。请注意,存储桶可以引用另一个存储桶,而无需实际同步,因为同步取决于数据流是否允许同步进行。

--bucketeffective-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 对象,至少指定所需的设置:

  1. name :zone group 的名称。必需。
  2. api_name :zone group 的 API 名称。可选。
  3. is_master :确定 zone group 是 master zone group。必需。

    注意:您只能有一个 master zone group。

  4. endpoint :zone group 中所有端点的列表。例如,您可以使用多个域名来引用同一 zone group。请注意,需要使用正斜杠(\/)进行转意。您还可以为每个端点指定一个端口(fqdn:port)。可选。
  5. hostnames :zone group 中所有主机名的列表。例如,您可以使用多个域名来引用同一 zone group。可选。rgw dns name 设置将自动包含在此列表中。您应在更改此设置后重新启动网关守护进程。
  6. master_zone : zone group 的 master zone。可选。如果未指定,则使用默认区域。

    注意

    每个 zone group 只能有一个 master zone。

  7. zones:zone group 中所有 zone 的列表。每个区域都有一个名称(必需),一个端点列表(可选),以及网关是否记录元数据和数据操作(默认为false)。
  8. placement_targets :放置目标列表(可选)。每个放置目标都包含放置目标的名称(必需)和一个标签列表(可选),以便只有具有标签的用户才能使用放置目标(例如,用户 info 中的 placement_tags 字段)。
  9. 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 中删除。

流程

  1. 从 zonegroup 中删除区:

    语法

    radosgw-admin zonegroup remove --rgw-zonegroup=ZONE_GROUP_NAME\
                                     --rgw-zone=ZONE_NAME

  2. 更新周期:

    示例

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

  3. 删除区:

    重要

    此流程在 区内的主机上使用。

    语法

    radosgw-admin zone delete --rgw-zone=ZONE_NAME

  4. 更新周期:

    示例

    [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