8.14. 将数据转换到 Amazon S3 云服务
您可以使用存储类将数据转换到远程云服务,作为生命周期配置的一部分,以降低成本并提高可管理性。这个转换是单向的,数据无法从远程区转换。此功能是启用数据转换到多个云供应商,如 Amazon (S3)。
使用 cloud-s3 作为 层类型,配置需要转换数据的远程云 S3 对象存储服务。它们不需要数据池,并在 zonegroup 放置目标中定义。
先决条件
- 安装了 Ceph 对象网关的 Red Hat Ceph Storage 集群。
- 远程云服务 Amazon S3 的用户凭据。
- 在 Amazon S3 上创建的目标路径。
-
在 bootstrapped 节点上安装
s3cmd。 - Amazon AWS 本地配置以下载数据。
流程
使用 access key 和 secret key 创建用户:
语法
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-s3radosgw-admin zonegroup placement add --rgw-zonegroup =ZONE_GROUP_NAME \ --placement-id=PLACEMENT_ID \ --storage-class =STORAGE_CLASS_NAME \ --tier-type=cloud-s3Copy 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_NAMECopy 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 用户,在 bootstrap 启动的节点上配置 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_S3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
s3cmd mb s3://awstestbucket
[root@host01 ~]# s3cmd mb s3://awstestbucket Bucket 's3://awstestbucket/' createdCopy 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_S3Copy 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 doneCopy 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_S3Copy 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 updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到
cephadm shell:示例
cephadm shell
[root@host 01 ~]# cephadm shellCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Ceph 对象网关:
语法
ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAMECopy 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.txtCopy 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.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow