对ceph radosgw的一些理解

转载 2018年04月16日 14:06:10

https://blog.csdn.net/wytdahu/article/details/46532245

Ceph本质上就是一个rados,利用命令rados就可以访问和使用ceph的对象存储,但作为一个真正产品机的对象存储服务,通常使用的是Restful api的方式进行访问和使用。而radosgw其实就是这个作用,安装完radosgw以后,就可以使用api来访问和使用ceph的对象存储服务了。

 

首先明白一下架构,radosgw其实名副其实,就是rados的一个网关,作用是对外提供对象存储服务。本质上radosgw(其实也是一个命令)和rbd命令一样,其实是ceph集群的客户端。只不过,radosgw即作为rados的客户端,同时又提供http restful接口,作为服务端供用户使用。

 

Radosgw对用户而言就是一个http restful的应用,因此本质上来讲,对其进行使用就是通过http的方式,但显然每次都要用户构建http访问的url和headers不是一个很方便的方式,因此radosgw兼容了通用的对象存储接口,分别是亚马逊的s3和openstack的swift,这也就是说你可以用swift或者s3的客户端来访问radosgw。

 

Radosgw包含两个命令行工具,一个是radosgw,这个是用来启动radosgw服务的脚步,是一个二进制文件;另外一个是radosgw-admin,这是用来管理radosgw的账号的一个命令行工具,主要用来创建、查看、修改radosgw的账号信息。

注意,radowgw的账号信息仅仅是对radosgw的用户而言,这个和ceph中的用户不是一个概念。

 

Radosgw作为ceph集群(rados)的客户端,因此他在ceph中有一个账号,通常叫做client.radosgw.gateway。在启动radosgw这个服务时,会读取ceph.conf中[client.radosgw.gateway]这个section。

 

Radosgw有自己的账号管理系统,可以使用radosgw-admin来创建和维护账号,之后可以使用curl、swift、s3等方式指明账号名和密码就可以访问,不确定s3怎么样,但如果用swift的话,其实和openstack中类似,先通过账号和密码想radosgw的auth系统获取一个token,然后用这个token再radosgw的存储系统。

 

另外,radosgw是可以和keystone进行集成的,那这里就有一个问题,两个账号管理系统中的账号就有一个映射关系。实验发现,keystone中的每个tenant都对应radosgw中的一个账号,其账号uid就是keystone中的tenant id。

 

我们用Radosgw和keystone进行集成,创建对应的endpoint,客户端使用swift接口。操作就和和使用真正的swift+keystone没有任何差别,作为一个用户无法感知到后端究竟真是一个swift还是radosgw。但就附加功能还是有区别的,我们知道swift除了对象存储本身的上传、下载、删除等操作为,还有很多其他附加功能,比如object 过期设置、tempurl、staticweb等,这些都是通过在proxy节点增加middleware来实现的,radosgw支持swift一些middleware,但并不完全支持。由于radosgw也是c++开发的,只会写python的我,无法了解radosgw中这些middleware是如何支持的。

 

好吧,就说这么多了,先行这么了解,以后有用到,再做进一步研究。


==================================

有个项目中要用到,重新读文档以及动手验证,有些新的认识,补充如下。

ceph radosgw作为对象存储,同时提供swift接口和S3接口。那么这两种接口使用上有什么不同的,我们从以下几个方面分析下。

1、访问不同的接口需要的用户创建方式不同

用使用radosgw,肯定就需要一个账号信息,这个账号是由radosgw-admin这个程序来创建的。但根据要访问的接口不同,创建账号略有差异。

创建访问s3接口的用户,只需要一个命令radosgw-admin user create;

创建访问Swift接口的用户,除了上面的命令,还需要radosgw-admin subuser create。这里之所以要用到subuser,是为了和openstack里的project及user形成对应关系。

2、访问不同接口需要的用户信息不同

rados ls -p default.rgw.users.uid命令可以查看radosgw-admin创建了哪些用户

radosgw-admin  user info --uid=XXX  可以查看用户的详细信息

访问S3接口,需要用到的是access_key和secret_key;

访问Swift接口,需要用secret_key获取一个token,然后用token去访问对象存储系统。

3、访问不同接口的命令行工具不同

不同什么接口,都是一个http服务,因此总是可以利用curl命令去访问各种接口,但是需要提供的Header不同。curl虽然貌似万能,但实际上要拼装完整的API参数还是比较麻烦的,这个时候可以用针对不同接口的工具。

访问S3接口,用s3cmd命令。

安装:pip install s3cmd

配置文件: ~/.s3cfg

[root@tbds-10-10-10-94 ~]# cat .s3cfg
[default]
access_key = 2LEK1H66CX3CJNNWIP9G
host_base = 127.0.0.1:8088
host_bucket = 127.0.0.1:8088/%(bucket)
secret_key = 5X5QAXUmo7goXD6508OjkEMiaS0HIqLUIxyEVBoc
use_https = False

访问Swift接口,用swift命令。

如下方式:

swift  -A http://127.0.0.1:8088/auth  -U wyt:wuyuting -K'wytL5CuWz25I7n48rFxUJifBoQo82xclpEI3ACSA' lis

ceph 对象存储网关radosgw和S3接口详细安装配置测试文档

ceph radosgw部署过程详细介绍和测试
  • for_tech
  • for_tech
  • 2016年04月08日 17:22
  • 3702

Ceph性能调优

Ceph性能调优总结
  • for_tech
  • for_tech
  • 2016年04月26日 17:02
  • 4602

Ceph rgw 一Region多zone配置

近来由于工作需要,为用户配置了几套Ceph对象存储,今天忙里偷闲:),将配置过程记录下来,分享于读者。 前言 安装前的准备 该文中所使用的Ceph版本为 Hammer 0.94.1;在配置r...
  • lzw06061139
  • lzw06061139
  • 2016年07月04日 18:29
  • 2747

ceph radosgw 挂载goofys

目前一些开源项目支持把s3接口挂在成fuse文件系统,最早的是s3fs,目前有两个项目,一个是c++写的,一个是python实现的,目前用的比较多的是python实现的,另外还有riofs和goofy...
  • for_tech
  • for_tech
  • 2016年11月04日 15:42
  • 928

ceph性能测试工具总结

1.   基础设施性能测试 1.1    磁盘性能测试 dd 1.2 网络测试 1.2.1 iperf工具简介 iperf是一个网络性能测试工具。Iperf可以测试TCP和UDP带宽质量。iperf...
  • Motred_
  • Motred_
  • 2016年08月21日 17:18
  • 7916

三种Ceph rgw前端的配置方式

rgw 概述Ceph 通过radosgw提供RESTFul HTTP API接口支持对象存储能力,radosgw构建在librados之上,兼容Amazon S3以及Opensack Swift。ra...
  • lzw06061139
  • lzw06061139
  • 2016年05月18日 16:47
  • 6778

ceph中的radosgw相关总结

radosgw
  • zrs19800702
  • zrs19800702
  • 2016年11月09日 16:18
  • 539

对ceph radosgw的一些理解

Ceph本质上就是一个rados,利用命令rados就可以访问和使用ceph的对象存储,但作为一个真正产品机的对象存储服务,通常使用的是Restful api的方式进行访问和使用。而radosgw其实...
  • wytdahu
  • wytdahu
  • 2015年06月17日 11:56
  • 4051

有关Ceph的一些使用经验

Thomas是本人在Ceph中国社区的笔名,该文同步发表在Ceph中国社区,现转载到本博客,方便大家查阅本文由 Ceph中国社区-Thomas翻译,小猴子校稿 。英文出处:Some Ceph expe...
  • lzw06061139
  • lzw06061139
  • 2016年04月25日 13:26
  • 4305

Ceph RGW远程同步(multisite)配置

ceph rgw的远程同步(multisite)配置
  • for_tech
  • for_tech
  • 2017年03月31日 18:17
  • 1445
收藏助手
不良信息举报
您举报文章:对ceph radosgw的一些理解
举报原因:
原因补充:

(最多只允许输入30个字)