3.6. 使用 Ceph Manager rgw 模块
作为存储管理员,您可以使用 rgw
模块部署 Ceph 对象网关、单一站点和多站点。它有助于引导和配置 Ceph 对象域、zonegroup 和不同的相关实体。
您可以将可用令牌用于新创建的域或现有域。此令牌是一个 base64 字符串,封装 realm 信息及其 master zone 端点身份验证数据。
在多站点配置中,这些令牌可用于拉取域,以使用 rgw zone create
命令在主集群中与 master zone 同步的不同集群中创建 second zone。
3.6.1. 使用 rgw
模块部署 Ceph 对象网关
Bootstrap Ceph 对象网关域创建新的域实体、新 zonegroup 和新区域。rgw
模块指示编配器创建和部署对应的 Ceph 对象网关守护进程。
使用 ceph mgr module enable rgw
命令启用 rgw
模块。启用 rgw
模块后,可传递命令行中的参数,或者使用 yaml
规格文件来引导域。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群部署至少一个 OSD。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
启用 ` rgw` 模块:
示例
[ceph: root@host01 /]# ceph mgr module enable rgw
使用命令行或 yaml 规格文件引导 Ceph 对象网关域:
选项 1:使用命令行界面:
语法
ceph rgw realm bootstrap [--realm name REALM_NAME] [--zonegroup-name ZONEGROUP_NAME] [--zone-name ZONE_NAME] [--port PORT_NUMBER] [--placement HOSTNAME] [--start-radosgw]
示例
[ceph: root@host01 /]# ceph rgw realm bootstrap --realm-name myrealm --zonegroup-name myzonegroup --zone-name myzone --port 5500 --placement="host01 host02" --start-radosgw Realm(s) created correctly. Please, use 'ceph rgw realm tokens' to get the token.
选项 2:使用 yaml 规格文件:
作为 root 用户,创建 yaml 文件:
语法
rgw_realm: REALM_NAME rgw_zonegroup: ZONEGROUP_NAME rgw_zone: ZONE_NAME placement: hosts: - _HOSTNAME_1_ - _HOSTNAME_2_
示例
[root@host01 ~]# cat rgw.yaml rgw_realm: myrealm rgw_zonegroup: myzonegroup rgw_zone: myzone placement: hosts: - host01 - host02
可选:您可以在 realm bootstrap 期间将 hostname 参数添加到 zonegroup 中:
语法
service_type: rgw placement: hosts: - _host1_ - _host2_ spec: rgw_realm: my_realm rgw_zonegroup: my_zonegroup rgw_zone: my_zone zonegroup_hostnames: - _hostname1_ - _hostname2_
示例
service_type: rgw placement: hosts: - _host1_ - _host2_ spec: rgw_realm: my_realm rgw_zonegroup: my_zonegroup rgw_zone: my_zone zonegroup_hostnames: - foo - bar
将 YAML 文件挂载到容器中的一个目录下:
示例
[root@host01 ~]# cephadm shell --mount rgw.yaml:/var/lib/ceph/rgw/rgw.yaml
引导域:
示例
[ceph: root@host01 /]# ceph rgw realm bootstrap -i /var/lib/ceph/rgw/rgw.yaml
注意rgw
模块使用的规格文件的格式与编配器使用的格式相同。因此,您可以提供任何编排支持的 Ceph 对象网关参数,包括 SSL 证书等高级配置功能。
列出可用的令牌:
示例
[ceph: root@host01 /]# ceph rgw realm tokens | jq [ { "realm": "myrealm", "token": "ewogICAgInJlYWxtX25hbWUiOiAibXlyZWFsbSIsCiAgICAicmVhbG1faWQiOiAiZDA3YzAwZWYtOTA0MS00ZjZlLTg4MDQtN2Q0MDI0MDU1NmFlIiwKICAgICJlbmRwb2ludCI6ICJodHRwOi8vdm0tMDA6NDMyMSIsCiAgICAiYWNjZXNzX2tleSI6ICI5NTY1VFZSMVFWTExFRzdVNFIxRCIsCiAgICAic2VjcmV0IjogImQ3b0FJQXZrNEdYeXpyd3Q2QVZ6bEZNQmNnRG53RVdMMHFDenE3cjUiCn1=" } ]
注意如果在部署 Ceph 对象网关守护进程前运行上述命令,它会显示一个消息,因为还没有端点。
验证
验证对象网关部署:
示例
[ceph: root@host01 /]# ceph orch list --daemon-type=rgw NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID rgw.myrealm.myzonegroup.ceph-saya-6-osd-host01.eburst ceph-saya-6-osd-host01 *:80 running (111m) 9m ago 111m 82.3M - 17.2.6-22.el9cp 2d5b080de0b0 2f3eaca7e88e
通过 realm bootstrap 验证添加
的主机名
:语法
radosgw-admin zonegroup get --rgw-zonegroup _zone_group_name_
示例
[ceph: root@host01 /]# radosgw-admin zonegroup get --rgw-zonegroup my_zonegroup { "id": "02a175e2-7f23-4882-8651-6fbb15d25046", "name": "my_zonegroup_ck", "api_name": "my_zonegroup_ck", "is_master": true, "endpoints": [ "http://vm-00:80" ], "hostnames": [ "foo" "bar" ], "hostnames_s3website": [], "master_zone": "f42fea84-a89e-4995-996e-61b7223fb0b0", "zones": [ { "id": "f42fea84-a89e-4995-996e-61b7223fb0b0", "name": "my_zone_ck", "endpoints": [ "http://vm-00:80" ], "log_meta": false, "log_data": false, "bucket_index_max_shards": 11, "read_only": false, "tier_type": "", "sync_from_all": true, "sync_from": [], "redirect_zone": "", "supported_features": [ "compress-encrypted", "resharding" ] } ], "placement_targets": [ { "name": "default-placement", "tags": [], "storage_classes": [ "STANDARD" ] } ], "default_placement": "default-placement", "realm_id": "439e9c37-4ddc-43a3-99e9-ea1f3825bb51", "sync_policy": { "groups": [] }, "enabled_features": [ "resharding" ] }
有关 Ceph 对象网关规格文件中的 zonegroup
_
的 hostname 部分。hostnames
中指定的主机名列表,请参阅 zonegroup
3.6.2. 使用 rgw
模块部署 Ceph 对象网关多站点
Bootstrap Ceph 对象网关域创建新的域实体、新 zonegroup 和新区域。它配置一个新的系统用户,可用于多站点同步操作。rgw
模块指示编配器创建和部署对应的 Ceph 对象网关守护进程。
使用 ceph mgr module enable rgw
命令启用 rgw
模块。启用 rgw
模块后,可传递命令行中的参数,或者使用 yaml
规格文件来引导域。
先决条件
- 正在运行的 Red Hat Ceph Storage 集群部署至少一个 OSD。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
启用 ` rgw` 模块:
示例
[ceph: root@host01 /]# ceph mgr module enable rgw
使用命令行或 yaml 规格文件引导 Ceph 对象网关域:
选项 1:使用命令行界面:
语法
ceph rgw realm bootstrap [--realm name REALM_NAME] [--zonegroup-name ZONEGROUP_NAME] [--zone-name ZONE_NAME] [--port PORT_NUMBER] [--placement HOSTNAME] [--start-radosgw]
示例
[ceph: root@host01 /]# ceph rgw realm bootstrap --realm-name myrealm --zonegroup-name myzonegroup --zone-name myzone --port 5500 --placement="host01 host02" --start-radosgw Realm(s) created correctly. Please, use 'ceph rgw realm tokens' to get the token.
选项 2:使用 yaml 规格文件:
作为 root 用户,创建 yaml 文件:
语法
rgw_realm: REALM_NAME rgw_zonegroup: ZONEGROUP_NAME rgw_zone: ZONE_NAME placement: hosts: - HOSTNAME_1 - HOSTNAME_2 spec: rgw_frontend_port: PORT_NUMBER zone_endpoints: http://RGW_HOSTNAME_1:RGW_PORT_NUMBER_1, http://RGW_HOSTNAME_2:RGW_PORT_NUMBER_2
示例
[root@host01 ~]# cat rgw.yaml rgw_realm: myrealm rgw_zonegroup: myzonegroup rgw_zone: myzone placement: hosts: - host01 - host02 spec: rgw_frontend_port: 5500 zone_endpoints: http://<rgw_host1>:<rgw_port1>, http://<rgw_host2>:<rgw_port2>
将 YAML 文件挂载到容器中的一个目录下:
示例
[root@host01 ~]# cephadm shell --mount rgw.yaml:/var/lib/ceph/rgw/rgw.yaml
引导域:
示例
[ceph: root@host01 /]# ceph rgw realm bootstrap -i /var/lib/ceph/rgw/rgw.yaml
注意rgw
模块使用的规格文件的格式与编配器使用的格式相同。因此,您可以提供任何编排支持的 Ceph 对象网关参数,包括 SSL 证书等高级配置功能。
列出可用的令牌:
示例
[ceph: root@host01 /]# ceph rgw realm tokens | jq [ { "realm": "myrealm", "token": "ewogICAgInJlYWxtX25hbWUiOiAibXlyZWFsbSIsCiAgICAicmVhbG1faWQiOiAiZDA3YzAwZWYtOTA0MS00ZjZlLTg4MDQtN2Q0MDI0MDU1NmFlIiwKICAgICJlbmRwb2ludCI6ICJodHRwOi8vdm0tMDA6NDMyMSIsCiAgICAiYWNjZXNzX2tleSI6ICI5NTY1VFZSMVFWTExFRzdVNFIxRCIsCiAgICAic2VjcmV0IjogImQ3b0FJQXZrNEdYeXpyd3Q2QVZ6bEZNQmNnRG53RVdMMHFDenE3cjUiCn1=" } ]
注意如果在部署 Ceph 对象网关守护进程前运行上述命令,它会显示一个消息,因为还没有端点。
使用以下令牌创建 second zone 并加入现有域:
作为 root 用户,创建 yaml 文件:
示例
[root@host01 ~]# cat zone-spec.yaml rgw_zone: my-secondary-zone rgw_realm_token: <token> placement: hosts: - ceph-node-1 - ceph-node-2 spec: rgw_frontend_port: 5500
将
zone-spec.yaml
文件挂载到容器中的一个目录中:示例
[root@host01 ~]# cephadm shell --mount zone-spec.yaml:/var/lib/ceph/radosgw/zone-spec.yaml
在 second zone 中启用' rgw'module:
示例
[ceph: root@host01 /]# ceph mgr module enable rgw
创建 second zone:
示例
[ceph: root@host01 /]# ceph rgw zone create -i /var/lib/ceph/radosgw/zone-spec.yaml
验证
验证对象网关多站点部署:
示例
[ceph: root@host01 /]# radosgw-admin realm list { "default_info": "d07c00ef-9041-4f6e-8804-7d40240556ae", "realms": [ "myrealm" ] }