Ceph之对象存储

1 对象存储

  1. 对象存储,也就是键值存储,通过其提供的API接口,进行简单GET,PUT,DEL和其他扩展指令,向存储服务上传下载数据
  2. 对象存储中的所有数据都被认为是一个对象。所以任何数据都可以存入对象服务器,如图片、视频、音频等

2 Ceph 对象存储的构成

RGW 全称为Rados GateWay,是Ceph 对象存储网关,用于向客户端应用程序提供存储界面,提供RestFul API 接口
Ceph对象网关是一个构建在librados之上的对象存储接口,它为应用程序访问Ceph 存储提供了一个RESTFul 风格的网关。Ceph 对象存储支持两种接口:

  1. 兼容S3: 提供了对象存储接口,兼容亚马逊S3 RESTful 接口的一个大子集
  2. 兼容Swift: 提供了对象存储接口,兼容Openstack Swift接口的一个大子集
image.png

2.1 Ceph RGW 对象存储中的四个概念:

1.用户: 对象存储应用的使用者,一个用户拥有一个或者多个存储桶。RGW 向您提供的用户账号宝琨了AK(AccessKeyID)和SK(SecretAccessKeyID)。通过使用AK和SK 对称加密的方法来验证某个请求的发送至身份。

  1. 桶: 桶(Bucet)是RGW中存储对象的容器。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有队形都处于同一逻辑层,去除文件系统中的多层目录结构
  2. 对象: 对象(Object)是RGW 中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息(元数据)的集合体。用户上传至RGW的数据都是以对象的形式保存在桶中。
  3. 访问秘钥(AK/SK): RGW 支持通过AK/SK认证方式进行认证鉴权,即使用Access Key ID (AK)/Secret Access Key(SK) 加密的方法来验证某个请求发送者身份。
    用户账户有两种类型:
    1.用户: 是作为S3接口yoghurt
    2.子用户: 是作为swift接口用户,子用户附属于用户

2.2 Ceph 池的作用

  1. rgw.root
    region和zone的信息
  2. rgw.control
    在RGW上电时,在control pool创建若干个对象用于watch-notify,主要作用为当一个zone对应多个RGW,且cache使能时, 保证数据的一致性,其基本原理为利用librados提供的对象watch-notify功能,当有数据更新时,通知其他RGW刷新cache, 后面会有文档专门描述RGW cache
  3. rgw
    包含容器名称,归属信息(项目ID+工程名称),读写权限等bucket属性信息
  4. rgw.gc
    RGW中大文件数据一般在后台删除,该pool用于记录那些待删除的文件对象
  5. users.uid
    包含用户的ID,默认为项目ID
    6.users
    包含用户信息
  6. rgw,buckets.index
    buckets索引,格式为.dir..,存储元数据
  7. rgw.buckets
    包括所有容器里面的对象,对象名字,ACL等信息

3 Ceph RGW 安装配置

3.1 RGW 安装

#yum install ceph-radosgw -y
#ceph-deploy rgw create ceph01

3.2 调整配置文件

#增加rgw配置
#cat  ceph.conf|grep  rgw
[client.rgw.ceph01]
rgw_frontends = "civetweb port=80"
#同步配置文件
#ceph-deploy --overwrite-conf config push ceph01 ceph02 ceph03
#重启服务
#systemctl restart ceph-radosgw.target
#检查radogw 服务状态
#netstat -anltp | grep radosgw

3.3 创建用户

#radosgw-admin user create --uid="Frank" --display-name="Frank"

3.4 授权用户,运行读写users信息

#radosgw-admin caps add --uid=Frank --caps="users=*"

3.5 允许读取所有的Usage信息

#radosgw-admin caps add --uid=Frank --caps="usage=read,write"

3.6 创建子用户

#radosgw-admin subuser create --uid=Frank--subuser=Frank:swift --access=full

3.7 创建秘钥

# radosgw-admin key create --subuser=Frank:swift --key-type=swift --gen-secret

参考blog: https://blog.z0ukun.com/?p=2765

你可能感兴趣的:(Ceph之对象存储)