RGW == Rados Gateway 中文名字叫对象存储网关。
问题
- 一个RGW能承载的访问量是有限的,若出现故障或性能瓶颈怎么办?若是部署成多个,业务低谷时造成资源浪费
- 一个集群与单节点有何区别,若整个集群崩溃宕机是小,丢数据为大
- 客户端的访问协议千奇百怪若只支持S3不足以服众
- 单纯的V2认证安全性差
- 客户端压缩、加密数据代价太大,而且难以实现
- 所有用户、bucket在一个命名空间内安全性太差
为解决上述问题,提出如下方案
方案
- 管理控制I/O与数据读写I/O分开处理
管理控制I/O负责设置获取RGW集群信息;
数据读写I/O负责上传下载对象或上传下载文件。 - 不同Ceph集群之间互为主备关系
主集群采用副本集数据保护机制;
备份集群采用EraseCode数据保护机制。 - RGW实例由K8s对外发布并提供服务
利用K8s的Autoscaling可以根据负载情况动态调整RGW实例数量;
利用K8s的分布式LB可以有效的分散RGW上访问压力。
涉及到的模块
- RGW Cluster Manager
- S3 API
- NFS
- Admin API
- RGW
功能
资源管理功能
存储资源管理
- 存储资源分配
按容量(初始容量)优先分配
按性能优先分配 - 存储资源回收
- 存储资源使用情况查询
可以为计费模块统计提供资源使用情况
用户及权限管理
- 用户管理
用户的增加、删除、属性修改 - 用户权限管理
用户权限的授权、回收
配额管理
- user 配额设置
针对用户名下的对象数量、可使用容量(byte)进行配额设置 - bucket 配额设置
针对bucket下的对象数量、可使用容量(byte)进行配额设置
RGW节点网络控制管理
- 访问RGW节点客户端黑、白名单机制
- RGW节点接收请求的流量配额管理
- RGW节点读写Ceph集群的流量配额管理
数据压缩、加密
- RGW节点接收数据后在Server端完成对数据的压缩,压缩算法需要由用户或运维人员指定
- RGW节点接收数据后在Server端完成对数据的加密,加密使用的密钥可人为指定
多种认证支持
- MFA(Multi-Factor Authentication)认证
- keystone认证
- LDAP认证
- V4认证
多租户管理
对多租户的支持可以允许不同的租户使用相同的用户名、bucket名。更友好的隔离数据,防止对用户和bucket的嗅探。
接口功能
支持Compatible-S3、Swift、NFS等多种接口。
NFS
支持将S3接口导出为NFS接口,方便符合POSIX标准的请求使用。
故障切换
RGW故障
由于RGW采用分布式部署方式,单个RGW的故障不影响整体使用。RGW由K8s发布提供服务,即使出现性能不足或多点故障,也都由K8s调度恢复。
Ceph集群故障
由于集群之间采用主备方式存储数据,即使主集群停止服务,也可通过备集群继续提供服务。