3.7. 配置外部 Ceph 对象网关后端
您可以配置外部 Ceph 对象网关(RGW)来充当对象存储服务(swift)后端。您可以使用 openstack 客户端工具配置对象存储服务。
流程
- 配置 RGW,以验证 Identity 服务(keystone)中的用户及其角色,以使用外部 RGW 服务进行身份验证。
- 部署和配置 RGW 服务,以处理对象存储请求。
3.7.1. 配置 RGW 身份验证 复制链接链接已复制到粘贴板!
您必须配置 RGW,以验证 Identity 服务(keystone)中的用户及其角色,以便与外部 RGW 服务进行身份验证。
先决条件
- 您已部署了可正常工作的 OpenStack control plane。
流程
在 control plane 上创建 Object Storage 服务:
$ openstack service create --name swift --description "OpenStack Object Storage" object-store创建名为
swift的用户:$ openstack user create --project service --password <swift_password> swift-
将
<swift_password> 替换为要分配给swift用户的密码。
-
将
为
swift用户创建角色:$ openstack role create swiftoperator $ openstack role create ResellerAdmin将
swift用户添加到系统角色中:$ openstack role add --user swift --project service member $ openstack role add --user swift --project service admin将 RGW 端点 IP 地址导出到变量并创建 control plane 端点:
$ export RGW_ENDPOINT_STORAGE=<rgw_endpoint_ip_address_storage> $ export RGW_ENDPOINT_EXTERNAL=<rgw_endpoint_ip_address_external> $ openstack endpoint create --region regionOne object-store public http://$RGW_ENDPOINT_EXTERNAL:8080/swift/v1/AUTH_%\(tenant_id\)s; $ openstack endpoint create --region regionOne object-store internal http://$RGW_ENDPOINT_STORAGE:8080/swift/v1/AUTH_%\(tenant_id\)s;-
将
<rgw_endpoint_ip_address_storage> 替换为存储网络上 RGW 端点的 IP 地址。这是内部服务如何访问 RGW。 将
<rgw_endpoint_ip_address_external> 替换为外部网络上 RGW 端点的 IP 地址。这是云用户如何将对象写入 RGW 的方式。注意两个端点 IP 地址都是代表虚拟 IP 地址(由
haproxy和keepalived所有)的端点,用于访问在 配置和部署 RGW 服务的步骤中将部署在 Red Hat Ceph Storage 集群中的 RGW 后端。
-
将
将
swiftoperator角色添加到 control planeadmin组:$ openstack role add --project admin --user admin swiftoperator
3.7.2. 配置和部署 RGW 服务 复制链接链接已复制到粘贴板!
配置和部署 RGW 服务以处理对象存储请求。
流程
- 登录到 Red Hat Ceph Storage Controller 节点。
创建名为
/tmp/rgw_spec.yaml的文件并添加 RGW 部署参数:service_type: rgw service_id: rgw service_name: rgw.rgw placement: hosts: - <host_1> - <host_2> ... - <host_n> networks: - <storage_network> spec: rgw_frontend_port: 8082 rgw_realm: default rgw_zone: default --- service_type: ingress service_id: rgw.default service_name: ingress.rgw.default placement: count: 1 spec: backend_service: rgw.rgw frontend_port: 8080 monitor_port: 8999 virtual_ips_list: - <storage_network_vip> - <external_network_vip> virtual_interface_networks: - <storage_network>-
将
<host_1> , <> 替换为部署 RGW 实例的 Ceph 节点的名称。host_2> , …, <host_n -
将
<storage_network> 替换为用于解析绑定radosgw进程的接口的网络范围。 -
将
<storage_network_vip> 替换为用作haproxy前端的虚拟 IP (VIP)。这与配置 RGW 身份验证过程中 Object Storage 服务端点($RGW_ENDPOINT)的配置 相同。 -
可选:使用外部网络上的额外 VIP 替换
<external_network_vip>,以用作haproxy前端。此地址用于从外部网络连接到 RGW。
-
将
- 保存该文件。
输入 cephadm shell 并挂载
rgw_spec.yaml文件。$ cephadm shell -m /tmp/rgw_spec.yaml在集群中添加 RGW 相关配置:
$ ceph config set global rgw_keystone_url "https://<keystone_endpoint>" $ ceph config set global rgw_keystone_verify_ssl false $ ceph config set global rgw_keystone_api_version 3 $ ceph config set global rgw_keystone_accepted_roles "member, Member, admin" $ ceph config set global rgw_keystone_accepted_admin_roles "ResellerAdmin, swiftoperator" $ ceph config set global rgw_keystone_admin_domain default $ ceph config set global rgw_keystone_admin_project service $ ceph config set global rgw_keystone_admin_user swift $ ceph config set global rgw_keystone_admin_password "$SWIFT_PASSWORD" $ ceph config set global rgw_keystone_implicit_tenants true $ ceph config set global rgw_s3_auth_use_keystone true $ ceph config set global rgw_swift_versioning_enabled true $ ceph config set global rgw_swift_enforce_content_length true $ ceph config set global rgw_swift_account_in_url true $ ceph config set global rgw_trust_forwarded_https true $ ceph config set global rgw_max_attr_name_len 128 $ ceph config set global rgw_max_attrs_num_in_req 90 $ ceph config set global rgw_max_attr_size 1024-
将
<keystone_endpoint> 替换为 Identity 服务端点。data plane 节点可以解析内部端点,但不能解析公共端点。不要从 URL 省略 URIScheme,它必须是http://或https://。 -
将 <
swift_password> 替换为上一步中分配给 swift 用户的密码。
-
将
使用 Orchestrator 部署 RGW 配置:
$ ceph orch apply -i /mnt/rgw_spec.yaml