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的相关信息。

第⑨讲:Ceph集群RGW对象存储之Swift风格API接口的核心概念及使用-LMLPHP

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的信息保存下来。

第⑨讲:Ceph集群RGW对象存储之Swift风格API接口的核心概念及使用-LMLPHP

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中所有文件删除
06-05 15:14