欢迎光临
我们一直在努力

Ceph分布式radosgw对象存储融合Swift 、S3的访问应用

                     **Ceph分布式radosgw对象存储融合Swift 、S3的访问应用**

确保集群状态正常:前半部分配置参照 https://blog.51cto.com/jdonghong/244175 上半部分配置。
安装RGW实例
[root@master idc-cluster]# ceph-deploy install –rgw client1 client2 client3

[root@master idc-cluster]# ceph-deploy rgw create client{1..3}

添加管理节点权限
[root@master idc-cluster]# ceph-deploy admin client{1..3}

创建S3用户
[root@client1 ceph]# radosgw-admin user create –uid="testuser" –display-name="idc jerry"

[root@client1 ceph]# radosgw-admin user create –uid="testuser" –display-name="idc jerry"
{
"user_id": "testuser",
"display_name": "idc jerry",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [],
"keys": [
{
"user": "testuser",
"access_key": "VWWLX9UP2T9185XLXPF6",
"secret_key": "nwbZ9ufh4tWU8j8XtAoEdVv7WkMAkpRNms9Q39p5j"
}
],
"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@master idc-cluster]# curl http://client1:7480 -v

查看所有用户
[root@client1 ceph]# radosgw-admin metadata list user
[
"testuser"
]

查看用户信息
[root@client1 ceph]# radosgw-admin user info –uid=testuser

查看所有桶
[root@client1 ceph]# radosgw-admin bucket list

查看桶内对象

查看池
[root@client1 ceph]# rados lspools

测试S3接口
[root@BDDB ceph]# yum install python-boto

创建测试DEMO
[root@BDDB ceph]# cat s3_test.py
import boto.s3.connection
access_key = ‘VWWLX9UP2T9185XLXPF6’
secret_key = ‘nwbZ9ufh4tWU8j8XtAoEdVv7WkMAkpRNms9Q39p5j’
conn = boto.connect_s3(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
host=’client1′, port=7480,
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,
)

执行测试
[root@BDDB ceph]# python s3_test.py

创建Swift用户
要通过 Swift 访问对象网关,需要 Swift 用户,我们创建subuser作为子用户。使用命令

[root@client1 ~]# radosgw-admin user create –uid="jerry" –subuser="jerry":swift –display-name="idc_jerry" –access=full –email=jwenshan@163.com

[root@client1 ~]# radosgw-admin user create –uid="jerry" –subuser="jerry":swift –display-name="idc_jerry" –access=full –email=jwenshan@163.com
{
"user_id": "jerry",
"display_name": "idc_jerry",
"email": "jwenshan@163.com",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [
{
"id": "jerry:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "jerry",
"access_key": "L709JEL05ID5NU2N08TY",
"secret_key": "8XhbwWsWiLylOO9lahYI7WUJ3RpBpQAjmaXUUevp"
}
],
"swift_keys": [
{
"user": "jerry:swift",
"secret_key": "lePlwWwWk6enUqJXhM5hAAq7bI96EyBEDaRLyypG"
}
],
"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@client1 ~]# radosgw-admin key create –subuser=jerry:swift –key-type=swift –gen-secret

{
"user_id": "jerry",
"display_name": "idc_jerry–access=full",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [
{
"id": "jerry:swift",
"permissions": "<none>"
}
],
"keys": [
{
"user": "jerry",
"access_key": "R97T9XMKI9FBYBSQ3C55",
"secret_key": "UgDVkoHRW9f8vGxAVGCS9smyUPn6YooxdNC04V83"
}
],
"swift_keys": [
{
"user": "jerry:swift",
"secret_key": "eQK89OYXPGIjFtI1Yk4gjABaO7PYph4HeJjbaDYO"
}
],
"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": []
}
测试Swift接口(另找一个客户端结点测试)
需要测试SWIFT客户端安装依赖包
yum install python-setuptools
easy_install pip
pip install python-swiftclient
前提:记得先创建桶,不然不方便后续观察和应用(执行脚本)
[root@BDDB ceph]# cat s3_test.py
import boto.s3.connection
access_key = "L709JEL05ID5NU2N08TY"
secret_key = "8XhbwWsWiLylOO9lahYI7WUJ3RpBpQAjmaXUUevp"
conn = boto.connect_s3(
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
host=’client2′, port=7480,
is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket(‘isc_tong’) #本例执行了两次脚本创建了两个桶idc_tong和isc_tong
for bucket in conn.get_all_buckets():
print "{name} {created}".format(
name=bucket.name,
created=bucket.creation_date,
)
执行测试:
[root@BDDB ceph]# swift -A http://client2:7480/auth/1.0 -U jerry:swift -K "lePlwWwWk6enUqJXhM5hAAq7bI96EyBEDaRLyypG" list
idc_tong

[root@BDDB ceph]# swift -A http://client2:7480/auth/1.0 -U jerry:swift -K "lePlwWwWk6enUqJXhM5hAAq7bI96EyBEDaRLyypG" stat

[root@BDDB ceph]# swift -A http://client2:7480/auth/1.0 -U jerry:swift -K "lePlwWwWk6enUqJXhM5hAAq7bI96EyBEDaRLyypG" list

测试swift接口访问对象存储成功。
附引入环境变量方式配置(方便管理配置):

[root@BDDB ceph]# export ST_USER=jerry:swift

[root@BDDB ceph]# export ST_AUTH=http://client1:7480/auth/1.0

[root@BDDB ceph]# export ST_KEY="lePlwWwWk6enUqJXhM5hAAq7bI96EyBEDaRLyypG"

[root@BDDB ceph]# swift stat idc_tong

上传文件到tong:
[root@BDDB ceph]# swift upload idc_tong ceph.conf

[root@BDDB ceph]# swift stat idc_tong

[root@BDDB ceph]# swift stat idc_tong
Account: v1
Container: idc_tong
Objects: 1
Bytes: 369
Read ACL:
Write ACL:
Sync To:
Sync Key:
X-Timestamp: 1567152118.91934
X-Container-Bytes-Used-Actual: 4096
X-Storage-Policy: default-placement
X-Trans-Id: tx00000000000000000001a-005d68e068-d368-default
Accept-Ranges: bytes
Content-Type: text/plain; charset=utf-8
效果展示:

查看桶中存储内容:
[root@BDDB ceph]# swift list idc_tong

[root@BDDB ceph]# ls
ceph.client.admin.keyring ceph.conf rbdmap s3_test.py tmpGnDYcT
[root@BDDB ceph]# swift upload idc_tong s3_test.py
s3_test.py
[root@BDDB ceph]# swift list idc_tong
ceph.conf
s3_test.py

下载(Using the download Command)
[root@BDDB data]# swift download idc_tong ceph.conf

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。