3.6. 安装 Ceph 对象网关
Ceph 对象网关(也称为 RADOS 网关)是在 librados
API 基础上构建的对象存储接口,为应用提供 Ceph 存储集群的 RESTful 网关。
先决条件
-
正在运行一个 Red Hat Ceph Storage 集群,最好处于
active + clean
状态。 - 在 Ceph 对象网关节点上,执行 第 2 章 安装 Red Hat Ceph Storage 的要求 中列出的任务。
流程
在 Ansible 管理节点上执行下列任务:
将网关主机添加到
[rgws]
部分下的/etc/ansible/hosts
文件中,以将其角色标识到 Ansible。如果主机有顺序命名,请使用范围,例如:[rgws] <rgw_host_name_1> <rgw_host_name_2> <rgw_host_name[3..10]>
进入 Ansible 配置目录:
[root@ansible ~]# cd /usr/share/ceph-ansible
从示例文件创建
rgws.yml
文件:[root@ansible ~]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
打开并编辑
group_vars/rgws.yml
文件。要将管理员密钥复制到 Ceph 对象网关节点,取消注释copy_admin_key
选项:copy_admin_key: true
rgws.yml
文件可以指定与默认端口7480
不同的默认端口。例如:ceph_rgw_civetweb_port: 80
all.yml
文件必须 指定一个radosgw_interface
。例如:radosgw_interface: eth0
指定该接口可防止 Civetweb 在同一主机上运行多个实例时绑定到与另一个 Civetweb 实例相同的 IP 地址。
通常,要更改默认设置,请取消注释
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 指南。高级议题包括:
- 配置 Ansible 组
开发存储策略.如需有关如何创建和配置池的更多详细信息,请参阅创建根池、创建系统池和创建数据放置策略部分。
有关存储桶分片的配置详情,请参阅 Bucket Sharding。
取消注释
group_vars/all.yml
文件中的radosgw_interface
参数。radosgw_interface: <interface>
替换:
-
使用 Ceph 对象网关节点侦听的接口替换
<interface>
如需了解更多详细信息,请参阅
all.yml
文件。-
使用 Ceph 对象网关节点侦听的接口替换
运行 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 对象网关。
流程
在 Ansible 节点上为主存储集群执行以下步骤:
生成系统密钥并将其输出捕获至
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
进入 Ansible 配置目录
/usr/share/ceph-ansible
:[root@ansible ~]# cd /usr/share/ceph-ansible
打开并编辑
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。运行 Ansible playbook:
[user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
重启 Ceph 对象网关守护进程:
[root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
在 Ansible 节点上为次要存储集群执行以下步骤:
进入 Ansible 配置目录
/usr/share/ceph-ansible
:[root@ansible ~]# cd /usr/share/ceph-ansible
打开并编辑
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。运行 Ansible playbook:
[user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
重启 Ceph 对象网关守护进程:
[root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
- 在主控机和次要存储集群上运行 Ansible playbook 后,您将拥有运行中的主动 Ceph 对象网关配置。
验证多站点 Ceph 对象网关配置:
-
在每个站点(主要和次要)的 Ceph 监控和对象网关节点中,必须能够对另一站点进行
curl
。 -
对两个站点运行
radosgw-admin sync status
命令。
-
在每个站点(主要和次要)的 Ceph 监控和对象网关节点中,必须能够对另一站点进行