RGW Cluster

RGW == Rados Gateway 中文名字叫对象存储网关。

问题

  • 一个RGW能承载的访问量是有限的,若出现故障或性能瓶颈怎么办?若是部署成多个,业务低谷时造成资源浪费
  • 一个集群与单节点有何区别,若整个集群崩溃宕机是小,丢数据为大
  • 客户端的访问协议千奇百怪若只支持S3不足以服众
  • 单纯的V2认证安全性差
  • 客户端压缩、加密数据代价太大,而且难以实现
  • 所有用户、bucket在一个命名空间内安全性太差

为解决上述问题,提出如下方案

方案

rgwcluster.png

  • 管理控制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集群故障

由于集群之间采用主备方式存储数据,即使主集群停止服务,也可通过备集群继续提供服务。