9.15. 将数据转换为 Azure 云服务
您可以将数据迁移到远程云服务,作为使用存储类的生命周期配置的一部分,以降低成本并改进易管理性。转换是单向的,无法从远程区转换数据。此功能是启用数据转换到多个云供应商,如 Azure。与 AWS 配置相关的一个关键区别是您需要配置多云网关(MCG),并使用 MCG 从 S3 协议转换为 Azure Blob。
使用 cloud-s3
作为 层类型
,配置需要将数据转换到的远程云 S3 对象存储服务。它们不需要数据池,并在 zonegroup 放置目标中定义。
先决条件
- 安装了 Ceph 对象网关的 Red Hat Ceph Storage 集群。
- 远程云服务 Azure 的用户凭证。
- Azure 配置在本地来下载数据。
-
在 bootstrapped 节点上安装
s3cmd
。 -
为 MCG 命名空间创建的 Azure 容器。在本例中,它是
mcgnamespace
。
流程
创建带有访问密钥和 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 作为 root 用户,使用用户凭证配置 AWS CLI,并使用默认放置创建存储桶:
语法
aws s3 --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL --region default mb s3://BUCKET_NAME
aws s3 --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL --region default mb s3://BUCKET_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
aws s3 --ca-bundle /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw --endpoint https://host02.example.com:8043 --region default mb s3://transition
[root@host01 ~]$ aws s3 --ca-bundle /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw --endpoint https://host02.example.com:8043 --region default mb s3://transition
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证存储桶是否在放置规则中使用
default-placement
:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用部署的 OpenShift Data Foundation (ODF)登录到 OpenShift Container Platform (OCP)集群:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置在 Azure 中的 OCP 集群上运行的多云网关(MCG)命名空间 Azure 存储桶:
语法
noobaa namespacestore create azure-blob az --account-key='ACCOUNT_KEY' --account-name='ACCOUNT_NAME' --target-blob-container='_AZURE_CONTAINER_NAME'
noobaa namespacestore create azure-blob az --account-key='ACCOUNT_KEY' --account-name='ACCOUNT_NAME' --target-blob-container='_AZURE_CONTAINER_NAME'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
noobaa namespacestore create azure-blob az --account-key='iq3+6hRtt9bQ46QfHKQ0nSm2aP+tyMzdn8dBSRW4XWrFhY+1nwfqEj4hk2q66nmD85E/o5OrrUqo+AStkKwm9w==' --account-name='transitionrgw' --target-blob-container='mcgnamespace'
[root@host01 ~]$ noobaa namespacestore create azure-blob az --account-key='iq3+6hRtt9bQ46QfHKQ0nSm2aP+tyMzdn8dBSRW4XWrFhY+1nwfqEj4hk2q66nmD85E/o5OrrUqo+AStkKwm9w==' --account-name='transitionrgw' --target-blob-container='mcgnamespace'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 MCG bucket 类,指向
命名空间存储
:示例
noobaa bucketclass create namespace-bucketclass single aznamespace-bucket-class --resource az -n openshift-storage
[root@host01 ~]$ noobaa bucketclass create namespace-bucketclass single aznamespace-bucket-class --resource az -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于过渡到云的对象存储桶声明(OBC):
语法
noobaa obc create OBC_NAME --bucketclass aznamespace-bucket-class -n openshift-storage
noobaa obc create OBC_NAME --bucketclass aznamespace-bucket-class -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
noobaa obc create rgwobc --bucketclass aznamespace-bucket-class -n openshift-storage
[root@host01 ~]$ noobaa obc create rgwobc --bucketclass aznamespace-bucket-class -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用 OBC 提供的凭据,在 Ceph 对象网关上配置 zonegroup 放置。
在 bootstrapped 节点上,在之前在 Azure 中配置了 MCG 的默认放置的默认放置上,在默认放置上创建一个类型为
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 配置云 S3 云存储类:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要将
retain_head_object
参数设置为true
可保留元数据或对象头,以列出正在转换的对象。示例
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 client.rgw.objectgwhttps.host02.udyllp Scheduled to restart client.rgw.objectgwhttps.host02.udyllp on host 'host02
[ceph: root@host 01 /]# ceph orch restart client.rgw.objectgwhttps.host02.udyllp Scheduled to restart client.rgw.objectgwhttps.host02.udyllp on host 'host02
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为之前创建的存储桶创建生命周期配置转换策略。在本例中,存储桶正在
转换
:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意bucket 中超过 30 天的所有对象都传送到名为
AZURE
的云存储类。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 AWS CLI 应用存储桶生命周期配置:
语法
aws s3api --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL--region default put-bucket-lifecycle-configuration --lifecycle-configuration file://BUCKET.json --bucket BUCKET_NAME
aws s3api --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL--region default put-bucket-lifecycle-configuration --lifecycle-configuration file://BUCKET.json --bucket BUCKET_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
aws s3api --ca-bundle /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw --endpoint https://host02.example.com:8043 --region default put-bucket-lifecycle-configuration --lifecycle-configuration file://transition.json --bucket transition
[root@host01 ~]$ aws s3api --ca-bundle /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw --endpoint https://host02.example.com:8043 --region default put-bucket-lifecycle-configuration --lifecycle-configuration file://transition.json --bucket transition
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:获取生命周期配置:
语法
aws s3api --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL--region default get-bucket-lifecycle-configuration --lifecycle-configuration file://BUCKET.json --bucket BUCKET_NAME
aws s3api --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL--region default get-bucket-lifecycle-configuration --lifecycle-configuration file://BUCKET.json --bucket BUCKET_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:使用
radosgw-admin lc list
命令获取生命周期配置:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意UNINITAL
状态表示生命周期配置没有被处理。它在转换过程完成后变为COMPLETED
状态。登录
cephadm shell
:示例
cephadm shell
[root@host 01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 Ceph 对象网关守护进程:
语法
ceph orch daemon CEPH_OBJECT_GATEWAY_DAEMON_NAME
ceph orch daemon CEPH_OBJECT_GATEWAY_DAEMON_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgwhttps.host02.udyllp [ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgw.host02.afwvyq [ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgw.host05.ucpsrr
[ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgwhttps.host02.udyllp [ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgw.host02.afwvyq [ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgw.host05.ucpsrr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据从源集群迁移到 Azure:
示例
for i in 1 2 3 4 5
[root@host 01 ~]# for i in 1 2 3 4 5 do aws s3 --ca-bundle /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw --endpoint https://host02.example.com:8043 --region default cp /etc/hosts s3://transition/transition$i done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证数据的转换:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
rados ls
命令验证数据是否已移到 Azure:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有转换数据,您可以运行
lc process
命令:示例
radosgw-admin lc process
[root@host 01 ~]# radosgw-admin lc process
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将强制生命周期过程启动和评估配置的所有存储桶生命周期策略。然后,它会根据需要开始转换数据。
验证
运行
radosgw-admin lc list
命令以验证转换的完成:示例
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 对象的大小为
0。
您可以列出对象,但无法复制它们,因为它们被转换为 Azure。使用 S3 API 检查对象头:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以看到存储类已从
STANDARD
更改为CLOUDTIER
。