q666123 发表于 2019-2-1 13:54:15

Ceph 对象存储

  一、什么是对象存储
  1、对象存储,也就是键值存储,通过其接口指令,也就是简单GET、PUT、DEL和其他扩展指令,向存储服务上传下载数据等
  2、对象存储中所有数据都被认为是一个对象。所以,任何数据都可以存入对象存储服务器,如图片、视频、音频等
  二、Ceph 对象存储的构成
  Ceph 对象存储主要是通过 RGW来实现,那么什么是 RGW 呢?
  1、RGW 即 Rados Gateway 的全称。
  2、RGW 是 Ceph 对象存储网关,用于向客户端应用程序提供存储界面,提供 RESTful API 访问接口。
  3、RGW 可以部署多台做为 高可用和负载均衡,拓扑如下图:
http://i2.运维网.com/images/blog/201812/14/53107bae8c4a641ed0db75ac438022c4.png
  三、部署 RGW 服务
  1、在 ceph-a 上通过 ceph-deploy 将 ceph-radosgw 软件包安装到 ceph-e 中
# ceph-deploy install --rgw ceph-ehttp://i2.运维网.com/images/blog/201812/14/e6eb6b7691f24758f1531ec6dc08f06e.png
  2、将配置文件、密钥文件同步到 ceph-e
# ceph-deploy admin ceph-ehttp://i2.运维网.com/images/blog/201812/14/b65c82be810e64ecf0027a49599b516c.png
  3、启动一个RGW服务
# ceph-deploy rgw create ceph-ehttp://i2.运维网.com/images/blog/201812/14/2b1d7dee8feeff94f5ab134a424ff374.png
  4、登陆 ceph-e 验证服务是否启动
# ps -ef | grep radosgwhttp://i2.运维网.com/images/blog/201812/14/edac3f74b45da513eda55dffca31b48d.png
  5、查看 rgw 状态
# systemctl status ceph-radosgw\*http://i2.运维网.com/images/blog/201812/14/8cc4679488aced062adec99623725faa.png
  6、查看端口是否有监听
# netstat -tpnl | grep 7480http://i2.运维网.com/images/blog/201812/14/0f6bec9e6817d4897cdb387d4e07097b.png
  通过以上 6 步,我们的 RGW 服务已经可以成功运行了。
  7、RGW 内建了一个名为 civetweb 的 web 服务器,这个服务器与 apache/nginx 类似,既然是 web 服务,那么使用 80 端口就更为方便,为了应用便捷,可以将默认的 7480 端口修改为 80 端口。
  修改 ceph-e 节点的 ceph.conf 配置文件,追加以下内容:
# vim ceph.conf

host = ceph-e
rgw_frontends = "civetweb port=80"  保存退出并重启服务
# systemctl restart ceph-radosgw.target  8、查看端口是否修改成功
# netstat -tpnlhttp://i2.运维网.com/images/blog/201812/14/1ed31388d864f63ab155753c91978ccc.png
  9、验证
  打开浏览器,输入 http://192.168.20.148,如下图
http://i2.运维网.com/images/blog/201812/14/d9bef7bc8ca96dd48ab7042bdc044b2e.png
  或者在命令行中输入 curl http://192.168.20.148 \r ,\r表示发送回车键指令,如下如
http://i2.运维网.com/images/blog/201812/14/54a3d4e7abb4b1e4910977327d718178.png
  四、使用第三方软件访问
  1、使用亚马逊 s3 客户端进行访问
  ①、登陆 ceph-e(RGW)创建用户
# radosgw-admin user create --uid="radosgw" --display-name="First User"http://i2.运维网.com/images/blog/201812/14/c9a1e4c7dcf386e44c5719086355eeec.png
user: radosgw
access_key: N6ALEK0KS0ISYCIM5JBG
secret_key: qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM  ②、授权用户,允许 radosgw 读写 users 信息:
# radosgw-admin caps add --uid=radosgw --caps="users=*"http://i2.运维网.com/images/blog/201812/14/d2e508a3bedb40d44c3b2ded538fbad7.png
  允许 radosgw 读写所有的usage信息:
# radosgw-admin caps add --uid=radosgw --caps="usage=read,write"http://i2.运维网.com/images/blog/201812/14/851b56fe798fde7ab2a48c573f5427bb.png
  ③、创建子用户,做为后面 swift 客户端访问时使用
# radosgw-admin subuser create --uid=radosgw --subuser=radosgw:swift --access=fullhttp://i2.运维网.com/images/blog/201812/14/50e0fba702c27f9fcca7de9b86093c6a.png
  ④、创建密钥
# radosgw-admin key create --subuser=radosgw:swift --key-type=swift --gen-secrethttp://i2.运维网.com/images/blog/201812/14/b7ebb4ca1e670c7cb764bf7c114c10fc.png
user: radosgw:swift
secret_key: NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl  ⑤、在 ceph-f 安装 s3 客户端软件
  首先,我们找一下 yum 源有没有 s3 的 rpm 包
# yum list | grep s3http://i2.运维网.com/images/blog/201812/14/f95e85442690c6ef1bb897a008276a8e.png
  发现,有 s3 的 rpm 包,因此直接安装即可
# yum -y install s3cmd.noarch  ⑥、对 s3 进行配置
# s3cmd --configurehttp://i2.运维网.com/images/blog/201812/14/3a70ea642f4610e220ddd5237bb8b350.png
  注意:
Access Key: N6ALEK0KS0ISYCIM5JBG
Secret Key: qK9hrpX2uwna4elPP1VsuErmAHBw3So40fE2K4yM
Default Region :                        #这里一定不要修改,否则后面会报错
S3 Endpoint : 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 :               #保持默认
Use HTTPS protocol : no                  #这里写 no ,因为没有提供 https 端口
HTTP Proxy server name:                     #这里不用写,因为没有代理
Test access with supplied credentials? y
Save settings? y  ⑦、客户端测试,查看内容
# s3cmd lshttp://i2.运维网.com/images/blog/201812/14/1e1e9ad042006ba0ddc02ea0c843d395.png
  空的,因为就像百度云盘一样,刚申请,没有创建,所以是空的
  ⑧、创建存储数据的 bucket (类似于存储数据的目录)要求 xxx_yyy 格式
# s3cmd mb s3://cephdirhttp://i2.运维网.com/images/blog/201812/14/0f82e792cceab3d1a69fb5c0f68bc3b0.png
  发现报错了,看上图,发现,出错是因为我们的写的格式不正确,按照正确的格式重新书写,再来一次
# s3cmd mb s3://ceph_dirhttp://i2.运维网.com/images/blog/201812/14/51c762fb99a886c52cd7352c6d95ed65.png
  如上图,成功了
  ⑨、再次查看客户端内容
# s3cmd lshttp://i2.运维网.com/images/blog/201812/14/7d1db124ae3688635c0afff8c96220ef.png
  这里提供 s3 的测试脚本
# yum -y install python-boto
# 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 接口测试
  ①、需要安装以下软件包
# yum install python-setuptools
# easy_install pip
# pip install --upgrade setuptools
# pip install --upgrade python-swiftclient  ②、命令行访问
swift -A http://192.168.20.148/auth/v1.0 -U radosgw:swift -K NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl listhttp://i2.运维网.com/images/blog/201812/14/8c2c3d568045f402cf23599c35e0a81a.png
swift -A http://192.168.20.148/auth/v1.0 -U radosgw:swift -K NhTk42HlMcAnv2GBXqatqMPeI20eSLod30AOJLwl stat -vhttp://i2.运维网.com/images/blog/201812/14/5a7024f44b5b35499be7d3a0e888950b.png
  这里提供 swift 的测试脚本:
# 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():
         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]
查看完整版本: Ceph 对象存储