配置对象存储
适用版本
v6.37.x 或以上版本
适用场景
- 场景1: 本地存储(NFS/NAS)迁移到对象存储
- 场景2: 对象存储迁移到对象存储
- 场景3: 其他存储任意存储迁移到对象存储
前提条件
准备 3个 bucket,比如:
- ones-public-files: 用于存放公开访问的资源,比如用户头像、团队logo等
- ones-private-files: 用于存放私有资源, 用户存放业务附件、wiki页面资源
- ones-tmp-files: 用于存放临时的、不公开访问的对象
权限要求: 3个 bucket 统一配置为私有读写
配置对象存储
- 配置对象存储配置
执行ones-ai-k8s.sh
进入操作容器,编辑config/private.yaml
⚠️注意,根据实际情况调整以下配置项的值
dataS3Endpoint: "https://obs.cn-south-1.myhuaweicloud.com"
dataS3AccessKeyID: "<your-access-key-id>"
dataS3SecretAccessKey: "<your-access-key-secret>"
dataS3Region: "cn-shenzhen"
dataS3ForcePathStyle: true
dataS3PublicBucket: "ones-public-files"
dataS3PrivateBucket: "ones-private-files"
dataS3TmpBucket: "ones-tmp-files"
- 配置回源(平滑迁移)
执行ones-ai-k8s.sh
进入操作容器,根据不同场景,按需修改config/private.yaml
场景1: 本地存储(NFS/NAS)迁移到对象存储, 则配置以下配置项
backToOriginEnabled: true
backToOriginWithS3Endpoint: ""
场景2: 对象存储迁移到对象存储, 则配置以下配置项
backToOriginEnabled: true
# 根据实际情况,调整下方配置值
backToOriginWithS3Endpoint: "https://old-oss.example.com"
backToOriginWithS3AccessKeyID: "<your-access-key-id>"
backToOriginWithS3SecretAccessKey: "<your-access-key-secret>"
backToOriginWithS3Region: "cn-shenzhen"
backToOriginWithS3ForcePathStyle: true
backToOriginWithS3PublicBucket: "old-public-files"
backToOriginWithS3PrivateBucket: "old-private-files"
backToOriginWithS3DisableSSL: false
场景3: 其他存储任意存储迁移到对象存储, 则配置以下配置项
⚠️注意:其他存储迁移到对象存储,需要 开发对应的 HTTP fileserver, 可连续ONES提供技术咨询
backToOriginEnabled: true
# 根据实际情况,调整下方配置值
backToOriginWithFileServerEndpoint: "http://fileserver.example.com"
backToOriginWithFileServerBasicUser: "<your-basic-user>"
backToOriginWithFileServerBasicPassword: "<your-basic-password>"
- 应用配置
执行命令,应用配置
make setup-ones
- 同步全量数据
全量同步数据基于Rclone,Rclone支持限制同步速度,比如:
--bwlimit 2M
固定限制到2M/s- 示例:
clone --bwlimit 2M --config /etc/rclone.conf -L copy ones-public-files/data/ s3-src:${newPublicBucket}/
- 示例:
--bwlimit "08:00,10M 21:00,50M"
从 08:00 开始,每秒限速 10MB,从 21:00开始,每秒限速 50MB- 示例:
rclone --bwlimit "08:00,10M 21:00,50M" --config /etc/rclone.conf -L copy ones-public-files/data/ s3-src:${newPublicBucket}/
- 示例:
⚠️ 注意:根据不同场景,按需选择操作步骤
场景1: 本地存储(NFS/NAS)迁移到对象存储, 则执行以下命令完成同步(建议用screen后台执行)
# 进入容器
kubectl -n ones exec -it $(kubectl -nones get pods |grep mc-backup-tools |awk '{print $1}') -- bash
# 在容器内执行以下命令
# 注意,根据对象存储桶名,替换下方的 newPrivateBucket 和 newPublicBucket 值
cd /data/ones/files
newPublicBucket=ones-public-files
newPrivateBucket=ones-private-files
# 如需限制速度,可以在 rclone 命令后面加上 --bwlimit 参数
rclone --config /etc/rclone.conf -L copy ones-public-files/data/ s3-src:${newPublicBucket}/
rclone --config /etc/rclone.conf -L copy ones-private-files/data/ s3-src:${newPrivateBucket}/
场景2: 对象存储迁移到对象存储, 则执行以下命令完成同步(建议用screen后台执行)
待新版本优化,暂未提供便捷的操作步骤
场景3: 其他存储任意存储迁移到对象存储, 则执行以下命令完成同步(建议用screen后台执行)
待新版本优化,暂未提供便捷的操作步骤
- 校验
步骤4完成同步后,再次执行步4的 rclone copy命令,如果无报错,则完成校验