ceph基础篇5——对象存储rgw的访问方式之Swift API

1、Swift介绍

Swift是OpenStack的组件之一, 是一个基于RESTful HTTP接口的对象存储API,用于创建,修改和获取对象和元数据等。

Swift有如下几个特性:

  • 极高的数据持久性。
  • 对称的系统架构:因为各个存储的节点完全对等。
  • 扩展性好:因为是对称的系统架构,扩容的时候只需简单的增加机器。
  • 无单节点故障:因为各个节点完全对等,没有所谓的“主从”结构。

Swift的元数据存储是完全均匀随机分布的,元数据也会存储多份。

2、安装方式 客户端上安装

# yum install python-setuptools
# yum install python-pip -y
# 升级python-swiftclient
# pip install --upgrade python-swiftclient
# 如果源有问题,可以选择阿里云的源
# pip install --upgrade python-swiftclient -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 确认swift版本
# swift --version

3、使用步骤

3.1 在服务端上创建用户和子用户
创建用户
radosgw-admin user create --uid={username} --display-name="{display-name}" [--email={email}]

[root@test-env-nm05-ceph-11e5e33e225 secure]# radosgw-admin user create --uid test2 --display-name name2
{
    "user_id": "test2",
    "display_name": "name2",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "test2",
            "access_key": "GONI86GKE9I2UDA1VRZJ",
            "secret_key": "k5neMW6OtI01yImcNLY1EznWBdaftCQ7qsBAgmh5"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": [],
    "user_preview_flag": 0
}

创建子用户
radosgw-admin subuser create --uid={username} --subuser={subusername} --access=[ read |write |readwrite |full]

[root@test-env-nm05-ceph-11e5e33e225 secure]# radosgw-admin subuser create --uid=test2 --subuser=subtest --access=full
{
   "user_id": "test2",
   "display_name": "name2",
   "email": "",
   "suspended": 0,
   "max_buckets": 1000,
   "subusers": [
       {
           "id": "test2:subtest",
           "permissions": "full-control"
       }
   ],
   "keys": [
       {
           "user": "test2",
           "access_key": "GONI86GKE9I2UDA1VRZJ",
           "secret_key": "k5neMW6OtI01yImcNLY1EznWBdaftCQ7qsBAgmh5"
       }
   ],
   "swift_keys": [
       {
           "user": "test2:subtest",
           "secret_key": "Knk7jO89nKgUXLhkAH1OZxvlugmq2dTbqmyN3HFe"
       }
   ],
   "caps": [],
   "op_mask": "read, write, delete",
   "default_placement": "",
   "default_storage_class": "",
   "placement_tags": [],
   "bucket_quota": {
       "enabled": false,
       "check_on_raw": false,
       "max_size": -1,
       "max_size_kb": 0,
       "max_objects": -1
   },
   "user_quota": {
       "enabled": false,
       "check_on_raw": false,
       "max_size": -1,
       "max_size_kb": 0,
       "max_objects": -1
   },
   "temp_url_keys": [],
   "type": "rgw",
   "mfa_ids": [],
   "user_preview_flag": 0
}

3.2、测试Swift接口

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

"swift_keys": [
{
"user": "cjid:swift",
"secret_key": "BlPwF96N1qrkhylZrNDTkDak2nxM1z66ikBZbUxX"
}
]

替换{IP ADDRESS}、{port}、{swift_secret_key}等相关参数,其中{swift_secret_key}为创建Swift用户时,radosgw-admin命令返回的swift_keys->secret_key的值
[root@client1 ~]# swift -A http://192.168.212.201:80/auth/1.0 -U cjid:swift -K 'BlPwF96N1qrkhylZrNDTkDak2nxM1z66ikBZbUxX' list Bucket1

3.3、配置环境变量
每次输入用户名密钥ip等信息比较麻烦,建议设置环境变量
[root@client1 ~]# vi /etc/profile

追加如下三行代码到配置文件末尾,注意更改相应参数

jie[root@client1 ~]# cat /etc/profile |grep ST_
export ST_AUTH=http://192.168.212.201:80/auth
export ST_USER=cjid:swift
export ST_KEY=BlPwF96N1qrkhylZrNDTkDak2nxM1z66ikBZbUxX
生效
[root@client1 ~]# source /etc/profile

3.4、生效后,常用操作

查看桶

[root@client1 ~]# swift list
Bucket1

查看桶大小

[root@client1 ~]# swift list --lh
1 0 2022-03-18 07:36:20 default-placement bucket
0 0 2022-03-18 07:25:48 default-placement bucket1
0 0 2022-03-18 07:35:46 default-placement bucket2
1 0

创建桶

[root@client1 ~]# swift post bucket2
[root@client1 ~]#
[root@client1 ~]# swift list
bucket1
Bucket2

上传文件到桶

[root@client1 ~]# swift upload bucket /tmp/*
tmp/yum.log
tmp/ks-script-rL5xKG

列出桶中的文件

[root@client1 ~]# swift list bucket
tmp/ks-script-rL5xKG
tmp/yum.log

查看桶状态

[root@client1 ~]# swift stat
Account: v1
Containers: 3
Objects: 2
Bytes: 836
Objects in policy "default-placement-bytes": 0
Bytes in policy "default-placement-bytes": 0
Containers in policy "default-placement": 3
Objects in policy "default-placement": 2
Bytes in policy "default-placement": 836
Accept-Ranges: bytes
X-Timestamp: 1647589429.35202
X-Account-Bytes-Used-Actual: 4096
X-Trans-Id: tx000000000000000000035-0062343835-17085-default
Content-Type: text/plain; charset=utf-8
X-Openstack-Request-Id: tx000000000000000000035-0062343835-17085-default

查看桶中的文件

[root@client1 ~]# swift list bucket
tmp/ks-script-rL5xKG
tmp/yum.log

删除桶中的文件

[root@client1 ~]# swift delete bucket tmp/ks-script-rL5xKG
tmp/ks-script-rL5xKG
[root@client1 ~]#
[root@client1 ~]# swift list bucket
tmp/yum.log

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容