搜索

3.6. 安装 Ceph 对象网关

download PDF

Ceph 对象网关(也称为 RADOS 网关)是在 librados API 基础上构建的对象存储接口,为应用提供 Ceph 存储集群的 RESTful 网关。

先决条件

流程

在 Ansible 管理节点上执行下列任务:

  1. 将网关主机添加到 [rgws] 部分下的 /etc/ansible/hosts 文件中,以将其角色标识到 Ansible。如果主机有顺序命名,请使用范围,例如:

    [rgws]
    <rgw_host_name_1>
    <rgw_host_name_2>
    <rgw_host_name[3..10]>
  2. 进入 Ansible 配置目录:

    [root@ansible ~]# cd /usr/share/ceph-ansible
  3. 从示例文件创建 rgws.yml 文件:

    [root@ansible ~]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
  4. 打开并编辑 group_vars/rgws.yml 文件。要将管理员密钥复制到 Ceph 对象网关节点,取消注释 copy_admin_key 选项:

    copy_admin_key: true
  5. rgws.yml 文件可以指定与默认端口 7480 不同的默认端口。例如:

    ceph_rgw_civetweb_port: 80
  6. all.yml 文件必须 指定一个 radosgw_interface。例如:

    radosgw_interface: eth0

    指定该接口可防止 Civetweb 在同一主机上运行多个实例时绑定到与另一个 Civetweb 实例相同的 IP 地址。

  7. 通常,要更改默认设置,请取消注释 rgw.yml 文件中的设置,并相应地进行更改。要对没有在 rgw.yml 文件中的设置进行其他更改,请在 all.yml 文件中使用 ceph_conf_overrides:。例如,将 rgw_dns_name: 设置为 DNS 服务器的主机,并确保集群的 DNS 服务器配置为启用 S3 子域。

    ceph_conf_overrides:
       client.rgw.rgw1:
          rgw_dns_name: <host_name>
          rgw_override_bucket_index_max_shards: 16
          rgw_bucket_default_quota_max_objects: 1638400

    有关高级配置详情,请参阅 Red Hat Ceph Storage 3 Ceph Object Gateway for Production 指南。高级议题包括:

  8. 取消注释 group_vars/all.yml 文件中的 radosgw_interface 参数。

    radosgw_interface: <interface>

    替换:

    • 使用 Ceph 对象网关节点侦听的接口替换 <interface>

    如需了解更多详细信息,请参阅 all.yml 文件。

  9. 运行 Ansible playbook:

    [user@admin ceph-ansible]$ ansible-playbook site.yml --limit rgws
注意

Ansible 确保每个 Ceph 对象网关正在运行。

对于单一站点配置,请将 Ceph 对象网关添加到 Ansible 配置。

对于多站点部署,您应该为每个区域都有一个 Ansible 配置。也就是说,Ansible 将为该区创建一个 Ceph 存储集群和网关实例。

在多站点集群安装完成后,请查阅 Red Hat Enterprise Linux 的对象网关指南中的 多站点一章,以了解有关为多站点配置集群的详细信息。

其它资源

3.6.1. 配置多站点 Ceph 对象网关

Ansible 将配置 realm、zonegroup,以及用于多站点环境中的 Ceph 对象网关的主和次要区域。

先决条件

  • 两个正在运行的 Red Hat Ceph Storage 集群。
  • 在 Ceph 对象网关节点上,执行 Red Hat Ceph Storage安装指南中的安装 Red Hat Ceph Storage 要求一节中列出的任务。
  • 安装和配置每个存储群集一个 Ceph 对象网关。

流程

  1. 在 Ansible 节点上为主存储集群执行以下步骤:

    1. 生成系统密钥并将其输出捕获至 multi-site-keys.txt 文件中:

      [root@ansible ~]# echo system_access_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) > multi-site-keys.txt
      [root@ansible ~]# echo system_secret_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) >> multi-site-keys.txt
    2. 进入 Ansible 配置目录 /usr/share/ceph-ansible

      [root@ansible ~]# cd /usr/share/ceph-ansible
    3. 打开并编辑 group_vars/all.yml 文件。通过添加下列选项启用多站点支持,并相应地更新 $ZONE_NAME$ZONE_GROUP_NAME$REALM_NAME$ACCESS_KEY$SECRET_KEY 值。

      当多个 Ceph 对象网关位于 master 区域中时,需要设置 rgw_multisite_endpoints 选项。rgw_multisite_endpoints 选项的值是一个逗号分隔的列表,没有空格。

      示例

      rgw_multisite: true
      rgw_zone: $ZONE_NAME
      rgw_zonemaster: true
      rgw_zonesecondary: false
      rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}"
      rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080
      rgw_zonegroup: $ZONE_GROUP_NAME
      rgw_zone_user: zone.user
      rgw_realm: $REALM_NAME
      system_access_key: $ACCESS_KEY
      system_secret_key: $SECRET_KEY

      注意

      ansible_fqdn 域名必须从辅助存储集群解析。

      注意

      添加新对象网关时,请先使用新对象网关的端点 URL 将它附加到 rgw_multisite_endpoints 列表的末尾,然后再运行 Ansible playbook。

    4. 运行 Ansible playbook:

      [user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
    5. 重启 Ceph 对象网关守护进程:

      [root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
  2. 在 Ansible 节点上为次要存储集群执行以下步骤:

    1. 进入 Ansible 配置目录 /usr/share/ceph-ansible

      [root@ansible ~]# cd /usr/share/ceph-ansible
    2. 打开并编辑 group_vars/all.yml 文件。通过添加下列选项并同时更新 $ZONE_NAME$ZONE_GROUP_NAME$REALM_NAME$ACCESS_KEY$SECRET_KEY 的值来启用多站点支持:rgw_zone_user, system_access_key, 和 system_secret_key 的值必须与 master zone 配置中使用的值相同。rgw_pullhost 选项必须是 master 区域的 Ceph 对象网关。

      当多个 Ceph 对象网关位于 second 区域中时,需要设置 rgw_multisite_endpoints 选项。rgw_multisite_endpoints 选项的值是一个逗号分隔的列表,没有空格。

      示例

      rgw_multisite: true
      rgw_zone: $ZONE_NAME
      rgw_zonemaster: false
      rgw_zonesecondary: true
      rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}"
      rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080
      rgw_zonegroup: $ZONE_GROUP_NAME
      rgw_zone_user: zone.user
      rgw_realm: $REALM_NAME
      system_access_key: $ACCESS_KEY
      system_secret_key: $SECRET_KEY
      rgw_pull_proto: http
      rgw_pull_port: 8080
      rgw_pullhost: $MASTER_RGW_NODE_NAME

      注意

      ansible_fqdn 域名必须可从主存储集群解析。

      注意

      添加新对象网关时,请先使用新对象网关的端点 URL 将它附加到 rgw_multisite_endpoints 列表的末尾,然后再运行 Ansible playbook。

    3. 运行 Ansible playbook:

      [user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
    4. 重启 Ceph 对象网关守护进程:

      [root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
  3. 在主控机和次要存储集群上运行 Ansible playbook 后,您将拥有运行中的主动 Ceph 对象网关配置。
  4. 验证多站点 Ceph 对象网关配置:

    1. 在每个站点(主要和次要)的 Ceph 监控和对象网关节点中,必须能够对另一站点进行 curl
    2. 对两个站点运行 radosgw-admin sync status 命令。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.