9.14. 将数据转换到 Amazon S3 云服务
您可以将数据迁移到远程云服务,作为使用存储类的生命周期配置的一部分,以降低成本并改进易管理性。转换是单向的,无法从远程区转换数据。此功能是启用数据转换到多个云供应商,如 Amazon (S3)。
使用 cloud-s3
作为 层类型
,配置需要将数据转换到的远程云 S3 对象存储服务。它们不需要数据池,并在 zonegroup 放置目标中定义。
先决条件
- 安装了 Ceph 对象网关的 Red Hat Ceph Storage 集群。
- 远程云服务 Amazon S3 的用户凭据。
- 在 Amazon S3 上创建的目标路径。
-
在 bootstrapped 节点上安装
s3cmd
。 - Amazon AWS 在本地配置为下载数据。
流程
创建带有访问密钥和 secret 密钥的用户:
语法
radosgw-admin user create --uid=USER_NAME --display-name="DISPLAY_NAME" [--access-key ACCESS_KEY --secret-key SECRET_KEY]
radosgw-admin user create --uid=USER_NAME --display-name="DISPLAY_NAME" [--access-key ACCESS_KEY --secret-key SECRET_KEY]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 bootstrapped 节点上,添加层类型为
cloud-s3
的存储类:注意使用
--tier-type=cloud-s3
选项创建存储类后,无法稍后将其修改为任何其他存储类类型。语法
radosgw-admin zonegroup placement add --rgw-zonegroup =ZONE_GROUP_NAME \ --placement-id=PLACEMENT_ID \ --storage-class =STORAGE_CLASS_NAME \ --tier-type=cloud-s3
radosgw-admin zonegroup placement add --rgw-zonegroup =ZONE_GROUP_NAME \ --placement-id=PLACEMENT_ID \ --storage-class =STORAGE_CLASS_NAME \ --tier-type=cloud-s3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新
storage_class
:注意如果集群是多站点设置的一部分,请运行
period update --commit
,以便 zonegroup 更改传播到多站点中的所有区域。注意确保
access_key
和secret
不以数字开头。必需的参数为:
-
access_key
是用于特定连接的远程云 S3 访问密钥。 -
secret
是远程云 S3 服务的 secret 密钥。 -
endpoint
是远程云 S3 服务端点的 URL。 -
区域
(用于 AWS)是远程云 S3 服务区域名称。
可选参数:
-
target_path
定义目标路径的创建方式。目标路径指定源bucket-name/object-name
附加到的前缀。如果没有指定,则创建的 target_path 是rgwx-ZONE_GROUP_NAME-STORAGE_CLASS_NAME-cloud-bucket
。 -
target_storage_class
定义了一个对象传输到的目标存储类。如果没有指定,则对象将转换为 STANDARD 存储类。 -
retain_head_object
(如果为 true)保留对象转换为云的元数据。如果为 false (默认),对象会在转换后删除。对于当前版本的对象,会忽略这个选项。 -
multipart_sync_threshold
指定此大小或更大对象使用多部分上传转换为云。 multipart_min_part_size
指定在使用多部分上传转换对象时要使用的最小部分大小。语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
重启 Ceph 对象网关:
语法
ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host 01 /]# ceph orch restart rgw.rgw.1 Scheduled to restart rgw.rgw.1.host03.vkfldf on host 'host03’
[ceph: root@host 01 /]# ceph orch restart rgw.rgw.1 Scheduled to restart rgw.rgw.1.host03.vkfldf on host 'host03’
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 shell 和以 root 用户身份,在 bootstrapped 节点上配置 Amazon S3:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 S3 存储桶:
语法
s3cmd mb s3://NAME_OF_THE_BUCKET_FOR_S3
s3cmd mb s3://NAME_OF_THE_BUCKET_FOR_S3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
s3cmd mb s3://awstestbucket
[root@host01 ~]# s3cmd mb s3://awstestbucket Bucket 's3://awstestbucket/' created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建文件,输入所有数据,并将其移动到 S3 服务:
语法
s3cmd put FILE_NAME s3://NAME_OF_THE_BUCKET_ON_S3
s3cmd put FILE_NAME s3://NAME_OF_THE_BUCKET_ON_S3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
s3cmd put test.txt s3://awstestbucket
[root@host01 ~]# s3cmd put test.txt s3://awstestbucket upload: 'test.txt' -> 's3://awstestbucket/test.txt' [1 of 1] 21 of 21 100% in 1s 16.75 B/s done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建生命周期配置转换策略:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置生命周期配置转换策略:
语法
s3cmd setlifecycle FILE_NAME s3://NAME_OF_THE_BUCKET_FOR_S3
s3cmd setlifecycle FILE_NAME s3://NAME_OF_THE_BUCKET_FOR_S3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
s3cmd setlifecycle lc_config.xml s3://awstestbucket
[root@host01 ~]# s3cmd setlifecycle lc_config.xml s3://awstestbucket s3://awstestbucket/: Lifecycle Policy updated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录
cephadm shell
:示例
cephadm shell
[root@host 01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Ceph 对象网关:
语法
ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host 01 /]# ceph orch restart rgw.rgw.1 Scheduled to restart rgw.rgw.1.host03.vkfldf on host 'host03’
[ceph: root@host 01 /]# ceph orch restart rgw.rgw.1 Scheduled to restart rgw.rgw.1.host03.vkfldf on host 'host03’
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在源集群中,使用
radosgw-admin lc list
命令验证数据是否已移到 S3:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证对象在云端点上的转换:
示例
radosgw-admin bucket list
[root@client ~]$ radosgw-admin bucket list [ "awstestbucket" ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出存储桶中的对象:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 S3 存储桶的内容:
示例
s3cmd ls s3://awstestbucket
[root@host01 ~]# s3cmd ls s3://awstestbucket 2022-08-25 09:57 0 s3://awstestbucket/test.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查该文件的信息:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Amazon S3 本地下载数据:
配置 AWS:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 AWS 存储桶的内容:
示例
aws s3 ls s3://dfqe-bucket-01/awstest
[client@client01 ~]$ aws s3 ls s3://dfqe-bucket-01/awstest PRE awstestbucket/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 S3 下载数据:
示例
aws s3 cp s3://dfqe-bucket-01/awstestbucket/test.txt .
[client@client01 ~]$ aws s3 cp s3://dfqe-bucket-01/awstestbucket/test.txt . download: s3://dfqe-bucket-01/awstestbucket/test.txt to ./test.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow