3.5. 使用 Ceph Manager rgw 模块
作为存储管理员,您可以使用 rgw 模块部署 Ceph 对象网关、单一站点和多站点。它有助于引导和配置 Ceph 对象域、zonegroup 和不同的相关实体。
您可以将可用的令牌用于新创建的域或现有域。此令牌是一个 base64 字符串,封装 realm 信息及其 master zone 端点身份验证数据。
在多站点配置中,这些令牌可用于拉取域,以便在使用 rgw zone create 命令与主集群上的 master zone 同步的不同集群中创建 second zone。
3.5.1. 使用 rgw 模块部署 Ceph 对象网关 复制链接链接已复制到粘贴板!
启动 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 对象网关守护进程部署之前运行上述命令,它会显示一条消息,因为还没有端点。
验证
验证对象网关部署:
Example
[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_Example
[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.5.2. 使用 rgw 模块部署 Ceph 对象网关多站点 复制链接链接已复制到粘贴板!
启动 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: pass:q[REALM_NAME] rgw_zonegroup: pass:q[ZONEGROUP_NAME] rgw_zone: pass:q[ZONE_NAME] placement: hosts: - pass:q[HOSTNAME_1] - pass:q[HOSTNAME_2] spec: rgw_frontend_port: pass:q[PORT_NUMBER] zone_endpoints:pass:q[ http://RGW_HOSTNAME_1]:pass:q[RGW_PORT_NUMBER_1], pass:q[http://RGW_HOSTNAME_2]:pass:q[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>-
可选: 对于这些客户端 rgw,请在 Ceph 对象网关规格文件的 spec 部分下设置
disable_multisite_sync_traffic:true。然后,cephadm 会为这些 RGW 守护进程将rgw_run_sync_thread配置设置为 false,防止它们参与同步操作。这种自动化消除了为 RGW 用户手动配置 rgw_run_sync_thread 的需要。
-
可选: 对于这些客户端 rgw,请在 Ceph 对象网关规格文件的 spec 部分下设置
语法
ceph config set <client_rgw_daemon> rgw_run_sync_thread false+
在以下示例中,RGW 服务 io.rgw 配置有 disable_multisite_sync_traffic: true,因此它只处理客户端 IO。RGW 服务 sync.rgw 配置为参与多站点同步操作,因为 disable_multisite_sync_traffic 默认为 false。
+ .example
[root@host01 ~]# cat rgw.yaml service_id: io.rgw service_name: rgw.io.rgw rgw_realm: myrealm rgw_zonegroup: myzonegroup rgw_zone: myzone placement: hosts: - rgw_host1 - rgw_host2 spec: rgw_frontend_port: <rgw_port> disable_multisite_sync_traffic: true service_id: sync.rgw service_name: rgw.sync.rgw rgw_realm: myrealm rgw_zonegroup: myzonegroup rgw_zone: myzone placement: hosts: - rgw_host3 - rgw_host4 spec: rgw_frontend_port: <rgw_port> zone_endpoints: http://<rgw_host3>:<rgw_port>, http://<rgw_host4>:<rgw_port>+
将 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要在部署期间为特定 RGW 服务禁用多站点同步流量参数,请按照以下步骤操作 3 (可选)。此设置禁用部署期间为特定 RGW 服务禁用多站点同步流量,因此它们仅处理客户端 IO。
将
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" ] }