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。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 启用 ` rgw` 模块:

    示例

    [ceph: root@host01 /]# ceph mgr module enable rgw

  3. 使用命令行或 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 规格文件:

      1. 作为 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

      2. 可选:您可以在 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

      3. 将 YAML 文件挂载到容器中的一个目录下:

        示例

        [root@host01 ~]# cephadm shell --mount rgw.yaml:/var/lib/ceph/rgw/rgw.yaml

      4. 引导域:

        示例

        [ceph: root@host01 /]# ceph rgw realm bootstrap -i /var/lib/ceph/rgw/rgw.yaml

        注意

        rgw 模块使用的规格文件的格式与编配器使用的格式相同。因此,您可以提供任何编排支持的 Ceph 对象网关参数,包括 SSL 证书等高级配置功能。

  4. 列出可用的令牌:

    示例

    [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 _ hostnames 中指定的主机名列表,请参阅 zonegroup 的 hostname 部分。

3.6.2. 使用 rgw 模块部署 Ceph 对象网关多站点

Bootstrap Ceph 对象网关域创建新的域实体、新 zonegroup 和新区域。它配置一个新的系统用户,可用于多站点同步操作。rgw 模块指示编配器创建和部署对应的 Ceph 对象网关守护进程。

使用 ceph mgr module enable rgw 命令启用 rgw 模块。启用 rgw 模块后,可传递命令行中的参数,或者使用 yaml 规格文件来引导域。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群部署至少一个 OSD。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 启用 ` rgw` 模块:

    示例

    [ceph: root@host01 /]# ceph mgr module enable rgw

  3. 使用命令行或 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 规格文件:

      1. 作为 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>

      2. 将 YAML 文件挂载到容器中的一个目录下:

        示例

        [root@host01 ~]# cephadm shell --mount rgw.yaml:/var/lib/ceph/rgw/rgw.yaml

      3. 引导域:

        示例

        [ceph: root@host01 /]# ceph rgw realm bootstrap -i /var/lib/ceph/rgw/rgw.yaml

        注意

        rgw 模块使用的规格文件的格式与编配器使用的格式相同。因此,您可以提供任何编排支持的 Ceph 对象网关参数,包括 SSL 证书等高级配置功能。

  4. 列出可用的令牌:

    示例

    [ceph: root@host01 /]# ceph rgw realm tokens | jq
    
    [
      {
        "realm": "myrealm",
        "token": "ewogICAgInJlYWxtX25hbWUiOiAibXlyZWFsbSIsCiAgICAicmVhbG1faWQiOiAiZDA3YzAwZWYtOTA0MS00ZjZlLTg4MDQtN2Q0MDI0MDU1NmFlIiwKICAgICJlbmRwb2ludCI6ICJodHRwOi8vdm0tMDA6NDMyMSIsCiAgICAiYWNjZXNzX2tleSI6ICI5NTY1VFZSMVFWTExFRzdVNFIxRCIsCiAgICAic2VjcmV0IjogImQ3b0FJQXZrNEdYeXpyd3Q2QVZ6bEZNQmNnRG53RVdMMHFDenE3cjUiCn1="
      }
    ]

    注意

    如果在部署 Ceph 对象网关守护进程前运行上述命令,它会显示一个消息,因为还没有端点。

  5. 使用以下令牌创建 second zone 并加入现有域:

    1. 作为 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

    2. zone-spec.yaml 文件挂载到容器中的一个目录中:

      示例

      [root@host01 ~]# cephadm shell --mount zone-spec.yaml:/var/lib/ceph/radosgw/zone-spec.yaml

    3. 在 second zone 中启用' rgw'module:

      示例

      [ceph: root@host01 /]# ceph mgr module enable rgw

    4. 创建 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"
    ]
    }

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.