Ceph部署(二)RGW搭建

Ceph部署(二)RGW搭建,第1张

概述背景 Ceph RGW简介 Ceph RGW基于librados,是为应用提供RESTful类型的对象存储接口。RGW提供两种类型的接口:   1) S3:兼容Amazon S3RESTful API;   2) Swift:兼容OpenStack Swift API。      S3和Swift API共享同一个命名空间,所以可以使用两种API访问相同的数据。 环境规划 如上篇文章《Ceph部署 背景 Ceph RGW简介

Ceph RGW基于librados,是为应用提供RESTful类型的对象存储接口。RGW提供两种类型的接口:
  1) S3:兼容Amazon S3RESTful API;
  2) Swift:兼容OpenStack Swift API。
  
  S3和Swift API共享同一个命名空间,所以可以使用两种API访问相同的数据。

环境规划

如上篇文章《Ceph部署(一)集群搭建》所述:4台服务器:1台作为Monitor,1台作为OSD RGW,还有两台作为OSD。ps:我们不搭建CephFS。
所有服务器都安装Ubuntu 16.04。

部署Ceph RGW

进入上文所述的my-cluster目录。

$ cd my-cluster
修改默认端口(可选的)

  RGW默认使用Civetweb作为其Web Sevice,而Civetweb默认使用端口7480提供服务,如果想修改端口(如80端口),就需要修改Ceph的配置文件。在配置文件中增加一个section[clIEnt.rgw.],其中需要修改为RGW的hostname。如下:

[clIEnt.rgw.node4]rgw_frontends = "civetweb port=80"

  然后再将配置文件推送到RGW节点。

$ ceph-deploy --overwrite-conf config push node4
安装CEPH OBJECT GATEWAY

  格式为:

$ ceph-deploy install --rgw <gateway-node1> [<gateway-node2> ...]

  由于我们环境中只有一个RGW,所以执行命令:

$ ceph-deploy install –-rgw node4
管理RGW节点

Ceph Cli工具需要在管理员模式下运行,因此需要执行以下命令:

$ ceph-deploy admin node4
安装RGW实例

执行命令:

$ ceph-deploy rgw create node4

  一旦RGW开始运行,我们就可以通过端口7480(如果没有修改的话)来访问。如:

http://node4:7480

  如果RGW运行正常,它应该返回类似的信息:

<ListAllMyBucketsResult>  <Owner>    <ID>anonymous</ID>    <displayname/>  </Owner>  <Buckets/></ListAllMyBucketsResult>

  注意:剩下的创建用户的步骤都应该在RGW节点上运行。

创建S3用户

  想正常的访问RGW,需要创建相应的RGW用户,并赋予相应的权限,radosgw-admin命令实现了这些功能。
  执行下面命令,来创建一个名为testuser的用户:

$ radosgw-admin user create --uID="testuser" --display-name="First User"

  命令的输出大致如下:

{    "user_ID": "testuser","display_name": "First User","email": "","suspended": 0,"max_buckets": 1000,"auID": 0,"subusers": [],"keys": [{ "user": "testuser","access_key": "I0PJDPCIYZ665MW88W9R","secret_key": "dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA" }],"swift_keys": [],"caps": [],"op_mask": "read,write,delete","default_placement": "","placement_Tags": [],"bucket_quota": { "enabled": false,"max_size_kb": -1,"max_objects": -1 },"user_quota": { "enabled": false,"temp_url_keys": [] }

  注意:需要记住返回结果中keys->access_key和keys->secret_key的值,用于S3接口访问确认。
  

创建Swift用户

  Swift用户是作为子用户subuser被创建的,执行以下命令:

$ radosgw-admin subuser create --uID=testuser --subuser=testuser:swift --access=full

  输出结果大致如下:

"user_ID": "testuser","display_name": "First User","email": "","suspended": 0,"max_buckets": 1000,"auID": 0,"subusers": [{        "ID": "testuser:swift","permissions": "full-control"    }],"keys": [{        "user": "testuser:swift","access_key": "3Y1LNW4Q6X0Y53A52DET","secret_key": ""    },{        "user": "testuser","access_key": "I0PJDPCIYZ665MW88W9R","secret_key": "dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA"    }],"swift_keys": [{        "user": "testuser:swift","secret_key": "244+fz2gSqoHwR3lYtSbIyomyPHf3i7rgSJrF\/IA"    }],"caps": [],"op_mask": "read,delete","default_placement": "","placement_Tags": [],"bucket_quota": {        "enabled": false,"max_size_kb": -1,"max_objects": -1    },"user_quota": {        "enabled": false,"temp_url_keys": []

  注意:需要记住返回结果中swift_keys->secret_key的值,用于Swift接口访问确认。

测试S3接口

  需要创建一个Python测试脚本来测试S3访问。该脚本会连接RGW,创建一个bucket并列出所有的bucket。其中,变量access_key和secret_access的值,来自于创建S3用户命令时,radosgw-admin命令返回的keys->access_key和keys->secret_key。
  执行以下步骤,首先安装python-boto库,该库用于连接S3:

$ apt-get install python-boto

  创建并编辑Python脚本:

$ vi s3test.pyimport boto.s3.connectionaccess_key = 'I0PJDPCIYZ665MW88W9R'secret_key = 'dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA'conn = boto.connect_s3(        aws_access_key_ID=access_key,aws_secret_access_key=secret_key,host='{hostname}',port={port},is_secure=False,calling_format=boto.s3.connection.OrdinaryCallingFormat(),)bucket = conn.create_bucket('my-new-bucket')for bucket in conn.get_all_buckets():    print "{name} {created}".format(        name=bucket.name,created=bucket.creation_date,)

  替换{hostname}、{port}为真实环境的hostname(或者ip)和RGW的端口。执行命令进行测试:

$ python s3test.py

  输出应该类似如下:

my-new-bucket-2 2017-02-19T04:34:17.530Z
5.4.8 测试Swift接口

  Swfit的访问可以通过命令行。首先安装相关软件包:

$ apt-get install python-setuptools$ apt-get install python-swiftclIEnt

  执行下列命令,范文Swift接口:

$ swift -A http://{IP ADDRESS}:{port}/auth/1.0 -U testuser:swift -K '{swift_secret_key}' List

  替换{IP ADDRESS}、{port}、{swift_secret_key}等相关参数,其中{swift_secret_key}为创建Swift用户时,radosgw-admin命令返回的swift_keys->secret_key的值。正常的输出应该为:

my-new-bucket
小结

  通过ceph-deploy命令,已经大大地简化了对Ceph集群和RGW的安装和配置。但如果想挑战下自己,或者想让自己了解更多,试试完全的手动部署Ceph吧Ceph手动部署。

总结

以上是内存溢出为你收集整理的Ceph部署(二)RGW搭建全部内容,希望文章能够帮你解决Ceph部署(二)RGW搭建所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1066172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存