对象存储之二(续):实践rgw

来源:互联网 发布:p2p网络借贷暂行办法 编辑:程序博客网 时间:2024/06/06 02:41

对象存储之二(续):实践rgw

在对象存储之二:实践中使用了Ceph系统的rados命令以及librados API,下面继续往前走;

rgw

在使用云服务器+Docker部署Ceph存储系统 环境中,已经在docker实例中启动了rgw服务;

[root@cluster1 ~]# ps aux |grep rgw
root 12913 0.0 0.0 112648 960 pts/2 R+ 11:13 0:00 grep –color=auto rgw
64045 31401 0.0 2.3 1822416 23744 ? Ssl Jun25 3:50 radosgw –cluster ceph –setuser ceph –setgroup ceph -n client.radosgw.gateway -k /var/lib/ceph/radosgw/cluster/keyring –rgw-socket-path= –rgw-frontends=civetweb port=80

rgw for s3 access

创建rgw s3 user:using-the-gateway

[root@cluster1 ~]# 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”: “WD34DYGH4T3D1F9MJE0C”,
“secret_key”: “UhqLKc31zTmyPDzj29Z4QUp0ikuPcyQRw0RgVbFw”
}
],
“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,
“max_size_kb”: -1,
“max_objects”: -1
},
“temp_url_keys”: []
}
[root@cluster1 ~]# radosgw-admin user info –uid=”testuser”

client端 安装s3开发包,连接到rgw并创建一个bucket:

yum install python-boto -y

cat <<EOF >s3test.py#!/bin/pythonimport botoimport boto.s3.connectionaccess_key = "WD34DYGH4T3D1F9MJE0C"secret_key = "UhqLKc31zTmyPDzj29Z4QUp0ikuPcyQRw0RgVbFw"conn = boto.connect_s3(aws_access_key_id = access_key,aws_secret_access_key = secret_key,host = '172.18.18.95',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}\t{created}".format(        name = bucket.name,        created = bucket.creation_date,)EOF

[root@cluster1 ~]# python s3test.py
my-new-bucket 2017-06-29T03:38:46.825Z

rgw for swift access

创建rgw swift user:

[root@cluster1 ~]# sudo radosgw-admin subuser create –uid=testuser –subuser=testuser:swift –access=full
[root@cluster1 ~]# sudo radosgw-admin key create –subuser=testuser:swift –key-type=swift –gen-secret
{
“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”,
“access_key”: “WD34DYGH4T3D1F9MJE0C”,
“secret_key”: “UhqLKc31zTmyPDzj29Z4QUp0ikuPcyQRw0RgVbFw”
}
],
“swift_keys”: [
{
“user”: “testuser:swift”,
“secret_key”: “MgOqWsoDzSs2OZVYU4ggprqtwc8AiaLXkQNtPq6O”
}
],
“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,
“max_size_kb”: -1,
“max_objects”: -1
},
“temp_url_keys”: []
}

client端 安装swift包,并连接到rgw并显示所有 bucket,创建新bucket:

yum install python-setuptools
easy_install pip
pip install –upgrade setuptools
pip install –upgrade python-swiftclient

 [root@cluster1 ~]# ps aux |grep radosgw64045    14009  0.0  3.3 1821416 33704 ?       Ssl  11:31   0:10 radosgw --cluster ceph --setuser ceph --setgroup ceph -n client.radosgw.gateway -k /var/lib/ceph/radosgw/cluster1/keyring --rgw-socket-path= --rgw-frontends=civetweb **port=80**root     15496  0.0  0.0 112648   964 pts/2    R+   14:57   0:00 grep --color=auto radosgw[root@cluster1 ~]# swift -A http://172.18.18.95:**80**/auth/1.0 -U testuser:swift -K 'MgOqWsoDzSs2OZVYU4ggprqtwc8AiaLXkQNtPq6O' listmy-new-bucket[root@cluster1 ~]# swift -A http://172.18.18.95:80/auth/1.0 -U testuser:swift -K 'MgOqWsoDzSs2OZVYU4ggprqtwc8AiaLXkQNtPq6O' post test-bucket[root@cluster1 ~]# swift -A http://172.18.18.95:80/auth/1.0 -U testuser:swift -K 'MgOqWsoDzSs2OZVYU4ggprqtwc8AiaLXkQNtPq6O' listmy-new-buckettest-bucket

总结一下

结合笔者使用aws s3和ali oss的经历,对象存储面向使用者,一般都提供如下几类接口:

  1. GUI控制台
  2. cmd tools:例如ceph的rados,ossutil,s3cmd;
  3. SDK:例如ceph的librados,ali和aws也各自有多语言的sdk;
  4. Restful API:基于HTTP的访问,例如ceph需搭建rgw(主要实现web server功能)后才支持;