您现在的位置是:首页 >技术教程 >第⑨讲:Ceph集群RGW对象存储之Swift风格API接口的核心概念及使用网站首页技术教程
第⑨讲:Ceph集群RGW对象存储之Swift风格API接口的核心概念及使用
文章目录
1.RGW对象存储Swift风格的Api接口
RGW支持两种API风格的对象存储接口,分别是S3和Swift接口,本文来讲解RGW对象存储的Swift API接口的使用。
RGW支持的这两种API接口,底层存储系统都是对接Ceph集群,在上游用户可以通过提供的Swift API接口,将数据上传到Bucket空间,最后会落到Ceph集群的OSD上。
使用Swift风格的API接口大致分为以下几步操作:
1、首先要确保系统中存在了一个RGW用户,如果没有则需要先创建RGW用户。
2、Swift API接口与S3使用的用户类型不同,需要将RGW用户配置成Swift类型。
3、记录创建Swift用户生成的Access Key和Secret Key。
4、
无论是S3还是Swift接口,最终面向的都是Ceph集群的RGW对象存储,如果与S3使用的是同一个用户,那么使用S3创建的Bucket在Swift接口中照样可以看到。
2.创建Swift用于访问RGW对象存储的用户
首先需要创建一个RGW用户,然后为用户赋予所有Swift权限。
2.1.为Swift创建一个RGW用户
命令格式:radosgw-admin user create --uid {user_name} --display-name "{描述信息}"
1.创建用户
[root@ceph-node-1 ~]# radosgw-admin user create --uid cephr-swift-user --display-name "Ceph RGW Swift User"
······
"keys": [
{
"user": "cephr-swift-user",
"access_key": "42ZTXGWHRMO2JVNQNMKU",
"secret_key": "ZVWsSyAKD5gr1tXDm3U3ZAY0abTXSAIIzCc9Cpk3"
}
],
······
记录好用户凭据
2.查看创建的用户
[root@ceph-node-1 ~]# radosgw-admin user list
[
"cephrgw-s3-user",
"cephrgw-swift-user"
]
2.2.将创建的RGW用户赋予Swift所有权限
命令格式:radosgw-admin subuser create --uid {user_name} --subuser={user_name}:swift --access=full
[root@ceph-node-1 ~]# radosgw-admin subuser create --uid ceph-swift-user --subuser=ceph-swift-user:swift --access=full
······
"keys": [
{
"user": "cephrgw-swift-user",
"access_key": "OP509906VWAPT7GXR6DU",
"secret_key": "kDhMWP9MujVhDQ6swKLg6W9qFbnjhMxB80M7VB2x"
}
],
"swift_keys": [
{
"user": "cephrgw-swift-user:swift",
"secret_key": "adRxfA4FP3NpCdP2XSuyxpJJzYccoKgn1movBK3b"
}
],
······
会发现在keys中多了swift的凭据,在使用info参数查看ceph-swift-user用户的信息时,也会看到有swift的相关信息。
2.3.生成ceph-swift-user:swift的Secret key
设置好swift权限后,如果自动生成的Secret Key使用异常,则手动再生成一次。
[root@ceph-node-1 ~]# radosgw-admin key create --subuser=cephrgw-swift-user:swift --key-type=swift --gen-secret
······
"swift_keys": [
{
"user": "cephrgw-swift-user:swift",
"secret_key": "QrRc6zzMaDj0ayxwuaFsxnOT8kRYZxfuGBqkQLDu"
}
],
······
将key的信息保存下来。
3.测试Swift连接RGW对象存储
1)安装swift客户端工具
[root@ceph-node-1 ~]# yum -y install python-setuptools python-pip
[root@ceph-node-1 ~]# pip install --upgrade python-swiftclient -i https://mirrors.aliyun.com/pypi/simple/
2)测试Swift接口连接RGW对象存储
1.使用Swift创建一个Bucket
[root@ceph-node-1 ~]# swift -A http://192.168.20.20/auth -U cephrgw-swift-user:swift -K QrRc6zzMaDj0ayxwuaFsxnOT8kRYZxfuGBqkQLDu post bucket-1
2.查看RGW中的Bucket列表
[root@ceph-node-1 ~]# swift -A http://192.168.20.20/auth -U cephrgw-swift-user:swift -K QrRc6zzMaDj0ayxwuaFsxnOT8kRYZxfuGBqkQLDu list
bucket-1
3)设置Swift的系统环境变量
在上面,执行Swift命令时,需要指定接口地址、用户、SecretKey,字段非常多,不好记忆,Swift支持将这些信息设置成环境变量,方便我们使用。
1.配置环境变量
[root@ceph-node-1 ~]# vim /etc/profile
export ST_AUTH=http://192.168.20.20/auth
export ST_USER=cephrgw-swift-user:swift
export ST_KEY=QrRc6zzMaDj0ayxwuaFsxnOT8kRYZxfuGBqkQLDu
[root@ceph-node-1 ~]# source /etc/profile
2.测试Swift
[root@ceph-node-1 ~]# swift list
bucket-1
4.Swift常用命令
4.1.创建一个Bucket
[root@ceph-node-1 ~]# swift post bucket-2
4.2.查看创建的Bucket
[root@ceph-node-1 ~]# swift list
bucket-1
bucket-2
4.3.上传文件或目录到Bucket
上传文件
[root@ceph-node-1 ~]# swift upload bucket-1 anaconda-ks.cfg
anaconda-ks.cfg
上传目录
[root@ceph-node-1 ~]# swift upload bucket-1 /data/ceph-deploy
data/ceph-deploy/ceph.mon.keyring
data/ceph-deploy/ceph.bootstrap-mds.keyring
data/ceph-deploy/ceph.client.admin.keyring
data/ceph-deploy/ceph-deploy-ceph.log
data/ceph-deploy/ceph.bootstrap-mgr.keyring
data/ceph-deploy/ceph.bootstrap-rgw.keyring
data/ceph-deploy/ceph.bootst
4.4.查看Bucket中的文件
[root@ceph-node-1 ~]# swift list bucket-1
anaconda-ks.cfg
data/ceph-deploy/ceph-deploy-ceph.log
data/ceph-deploy/ceph.bootstrap-mds.keyring
data/ceph-deploy/ceph.bootstrap-mgr.keyring
data/ceph-deploy/ceph.bootstrap-osd.keyring
data/ceph-deploy/ceph.bootstrap-rgw.keyring
data/ceph-deploy/ceph.client.admin.keyring
data/ceph-deploy/ceph.conf
data/ceph-deploy/ceph.mon.keyring
4.5.下载Bucket中的文件
[root@ceph-node-1 ~]# swift download bucket-1 anaconda-ks.cfg
anaconda-ks.cfg [auth 0.007s, headers 0.012s, total 0.012s, 0.269 MB/s]
#无法指定下载到哪个路径
4.6.删除Bucket中的文件
[root@ceph-node-1 ~]# swift delete bucket-1 anaconda-ks.cfg
anaconda-ks.cfg
4.7.删除Bucket
[root@ceph-node-1 ~]# swift delete bucket-1
data/ceph-deploy/ceph-deploy-ceph.log
data/ceph-deploy/ceph.bootstrap-mds.keyring
data/ceph-deploy/ceph.bootstrap-mgr.keyring
data/ceph-deploy/ceph.bootstrap-osd.keyring
data/ceph-deploy/ceph.bootstrap-rgw.keyring
data/ceph-deploy/ceph.client.admin.keyring
data/ceph-deploy/ceph.conf
data/ceph-deploy/ceph.mon.keyring
bucket-1
#自动将Bucket中所有文件删除