问题描述
S3 兼容接口提供了一套简单的 Web 服务接口,可随时随地通过 HTTP 的方式在网络上的任何位置存储和检索任意数量的数据,是一套非常实用的对象存储服务标准。很多互联网公司的产品,比如图片、视频一类资源的存储与发布等都是借助这套标准服务来实现的,节约了大量的采购、开发和部署运维成本,特别适合一次写入,多用户同时读取的场景;
解决方案
RGW(RADOS Gateway,Ceph 对象存储网关服务),是基于 librados 封装而实现的 FastCGI 服务,对外提供 RESTful 风格的对象存储数据访问和管理接口。它提供与 OpenStack Swift 和 Amazon S3 兼容的接口;
原理简述
RGW,建立在 librados 层之上,提供对象存储接口,为使用标准对象存储 API 的客户端提供访问 Ceph Cluster 的 RESTfulAPI 接口;
RGW,使用 librgw(RADOS 网关库)和 librados,允许应用程序与 Ceph 对象存储建立连接;
radosgw(核心守护进程)提供以 librados 为基础封装的接口,RGW 通常将自己的 Web 服务器作为前端来处理请求;
Client 使用 API 与 RGW 通信,RGW 通过 librados 与 Ceph Cluster 通信;
特性特征
S3 and Swift
RGW 支持两个接口:
1)提供 S3 兼容接口:兼容大部分 Amazon S3 API 标准,详见 S3 接口兼容列表;(Ceph Object Gateway S3 API)
2)提供 Swift 兼容接口:兼容大部分 OpenStack Swift API 接口;(Ceph Object Gateway Swift API/FEATURES SUPPORT)
S3 和 Swift API 共享同个命名空间,所以可以使用其中一个 API 写入数据,使用另一个 API 检索数据;
Admin Ops API
提供 Ceph Admin API 支持:它们用于通过原生 API 调用来管理 Ceph 存储集群;(Admin Operations)
User Managerment
RGW 具有独立的用户管理功能,其拥有自己的用户集,与 Ceph Cluster 用户不同。换句话说,RGW 的客户端通过 Amazon S3 或 OpenStack Swift API 来使用自己的用户集进行身份验证。我们可以使用 radosgw-admin 工具或基于 LDAP 的外部身份验证服务来配置用户;
其他特性
Ceph 还支持多租户对象存储,通过 RESTful API 存取;
Ceph 对象存储还具有多站点功能,也就是说,它提供灾难恢复解决方案。对于大型的多站点安装,将 RGW 部署在 Zone Group 和 Realm 的某一区域中。在生产环境下,我们通常部署多个 RGW,以防单点故障;
应用场景
即对象存储的应用场景:RGW 基于 HTTP 协议标准,因此非常适用于 Web 类的互联网应用场景,用户通过使用 SDK 或者其他客户端工具,能够很方便地接入 RGW 进行图片、视频以及各类文件的上传或下载,并设置相应的访问权限,共享给其他用户,形成最简单的网盘分享;
参考文献
Deploying a new Ceph cluster — Ceph Documentation
Ceph Object Gateway — Ceph Documentation