设为首页 收藏本站
查看: 2826|回复: 0

[经验分享] Ceph 对象存储

[复制链接]

尚未签到

发表于 2019-2-1 13:54:15 | 显示全部楼层 |阅读模式
  一、什么是对象存储
  1、对象存储,也就是键值存储,通过其接口指令,也就是简单GET、PUT、DEL和其他扩展指令,向存储服务上传下载数据等
  2、对象存储中所有数据都被认为是一个对象。所以,任何数据都可以存入对象存储服务器,如图片、视频、音频等
  二、Ceph 对象存储的构成
  Ceph 对象存储主要是通过 RGW  来实现,那么什么是 RGW 呢?
  1、RGW 即 Rados Gateway 的全称。
  2、RGW 是 Ceph 对象存储网关,用于向客户端应用程序提供存储界面,提供 RESTful API 访问接口。
  3、RGW 可以部署多台做为 高可用和负载均衡,拓扑如下图:

  三、部署 RGW 服务
  1、在 ceph-a 上通过 ceph-deploy 将 ceph-radosgw 软件包安装到 ceph-e 中
[root@ceph-a ~]# ceph-deploy install --rgw ceph-e

  2、将配置文件、密钥文件同步到 ceph-e
[root@ceph-a ceph]# ceph-deploy admin ceph-e

  3、启动一个RGW服务
[root@ceph-a ceph]# ceph-deploy rgw create ceph-e

  4、登陆 ceph-e 验证服务是否启动
[root@ceph-e yum.repos.d]# ps -ef | grep radosgw

  5、查看 rgw 状态
[root@ceph-e yum.repos.d]# systemctl status ceph-radosgw\*

  6、查看端口是否有监听
[root@ceph-e yum.repos.d]# netstat -tpnl | grep 7480

  通过以上 6 步,我们的 RGW 服务已经可以成功运行了。
  7、RGW 内建了一个名为 civetweb 的 web 服务器,这个服务器与 apache/nginx 类似,既然是 web 服务,那么使用 80 端口就更为方便,为了应用便捷,可以将默认的 7480 端口修改为 80 端口。
  修改 ceph-e 节点的 ceph.conf 配置文件,追加以下内容:
[root@ceph-e ceph]# vim ceph.conf
[client.rgw.ceph-e]
host = ceph-e
rgw_frontends = "civetweb port=80"  保存退出并重启服务
[root@ceph-e ceph]# systemctl restart ceph-radosgw.target  8、查看端口是否修改成功
[root@ceph-e ceph]# netstat -tpnl

  9、验证
  打开浏览器,输入 http://192.168.20.148,如下图

  或者在命令行中输入 curl http://192.168.20.148 \r ,\r表示发送回车键指令,如下如

  四、使用第三方软件访问
  1、使用亚马逊 s3 客户端进行访问
  ①、登陆 ceph-e(RGW)创建用户
[root@ceph-e radosgw]# radosgw-admin user create --uid="radosgw" --display-name="First User"

user: radosgw
access_key: N6ALEK0KS0ISYCIM5JBG
secret_key: qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM  ②、授权用户,允许 radosgw 读写 users 信息:
[root@ceph-e radosgw]# radosgw-admin caps add --uid=radosgw --caps="users=*"

  允许 radosgw 读写所有的usage信息:
[root@ceph-e radosgw]# radosgw-admin caps add --uid=radosgw --caps="usage=read,write"

  ③、创建子用户,做为后面 swift 客户端访问时使用
[root@ceph-e radosgw]# radosgw-admin subuser create --uid=radosgw --subuser=radosgw:swift --access=full

  ④、创建密钥
[root@ceph-e radosgw]# radosgw-admin key create --subuser=radosgw:swift --key-type=swift --gen-secret

user: radosgw:swift
secret_key: NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl  ⑤、在 ceph-f 安装 s3 客户端软件
  首先,我们找一下 yum 源有没有 s3 的 rpm 包
[root@ceph-f ~]# yum list | grep s3

  发现,有 s3 的 rpm 包,因此直接安装即可
[root@ceph-f ~]# yum -y install s3cmd.noarch  ⑥、对 s3 进行配置
[root@ceph-f ~]# s3cmd --configure

  注意:
Access Key: N6ALEK0KS0ISYCIM5JBG
Secret Key: qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM
Default Region [US]:                        #这里一定不要修改,否则后面会报错
S3 Endpoint [s3.amazonaws.com]: 192.168.20.148
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.20.148 bucket     #相当于百度网盘的创建文件夹,这里是固定格式
Path to GPG program [/usr/bin/gpg]:                 #保持默认
Use HTTPS protocol [Yes]: no                    #这里写 no ,因为没有提供 https 端口
HTTP Proxy server name:                       #这里不用写,因为没有代理
Test access with supplied credentials? [Y/n] y
Save settings? [y/N] y  ⑦、客户端测试,查看内容
[root@ceph-f ~]# s3cmd ls

  空的,因为就像百度云盘一样,刚申请,没有创建,所以是空的
  ⑧、创建存储数据的 bucket (类似于存储数据的目录)要求 xxx_yyy 格式
[root@ceph-f ~]# s3cmd mb s3://cephdir

  发现报错了,看上图,发现,出错是因为我们的写的格式不正确,按照正确的格式重新书写,再来一次
[root@ceph-f ~]# s3cmd mb s3://ceph_dir

  如上图,成功了
  ⑨、再次查看客户端内容
[root@ceph-f ~]# s3cmd ls

  这里提供 s3 的测试脚本
[root@ceph-f ~]# yum -y install python-boto
[root@ceph-f ~]# vim s3test.pyimport boto.s3.connection
access_key = 'N6ALEK0KS0ISYCIM5JBG'
secret_key = 'qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM'
conn = boto.connect_s3(
         aws_access_key_id=access_key,         
         aws_secret_access_key=secret_key,         
         host='ceph-e', port=80,         
         is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),        
         )
bucket = conn.create_bucket('xxx_yyy')
for bucket in conn.get_all_buckets():
     print "{name} {created}".format(         
     name=bucket.name,         
     created=bucket.creation_date,     
     )  在使用时,请替换自己的 access_key、secret_key、主机名和端口
  2、swift 接口测试
  ①、需要安装以下软件包
[root@ceph-f ~]# yum install python-setuptools
[root@ceph-f ~]# easy_install pip
[root@ceph-f ~]# pip install --upgrade setuptools
[root@ceph-f ~]# pip install --upgrade python-swiftclient  ②、命令行访问
swift -A http://192.168.20.148/auth/v1.0 -U radosgw:swift -K NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl list

swift -A http://192.168.20.148/auth/v1.0 -U radosgw:swift -K NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl stat -v

  这里提供 swift 的测试脚本:
[root@ceph-f ~]# vim swift.pyimport swiftclient
user = 'radosgw:swift'
key = 'NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl'
conn = swiftclient.Connection(
         user=user,         
         key=key,         
         authurl='http://192.168.20.148/auth/v1.0',
         )
for container in conn.get_account()[1]:
         print container['name']  在使用时,请替换自己的 access_key、secret_key、authurl

  到此,的 Ceph 对象存储已经完结,如果各位大侠有什么不明白的地方,请参考官网文档。
  关于 Ceph 集群的实现,请参阅小弟的另外一篇博文:http://blog.运维网.com/4746316/2329558
关于 Ceph 块设备的应用,请参阅小弟的另外一篇博文:http://blog.运维网.com/4746316/2330070
关于 CephFS 文件系统的应用,请参阅小弟的另外一篇博文:http://blog.运维网.com/4746316/2330186

  

  五、总结
  Ceph 对象存储目前尚不不稳定,且官方文档较旧,这里只做大概讲解,不做深入研究。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670516-1-1.html 上篇帖子: ceph集群部署 下篇帖子: Ceph 块设备实战
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表