生产环境变更 AppSpace存储切换

你好,我是老成。今日分享一个运维实战案例。

背景介绍

去年24年,我搭建了一个其他人员找的开源 App 分发系统(AppSpace),供公司内部使用。最开始在一个单节点 Docker 环境部署,随着时间的推移,迁移到了 K8s 环境当中,我们 K8s 环境中,所有项目没有特殊情况存储方式全部都会走对象存储,不会走 PVC(使用对象存储,是为了便于项目的迁移)。

然而,这个 App 分发系统就是那个特殊情况,不支持内部的 Ceph 版的对象存储,要支持只能去修改代码,当时又没有人去改这个东西,于是只能先走 PVC 进行存储。

上周,我领导将这个 App 分发系统进行了代码修改,支持了内部的 Ceph 对象存储。于是我就开始实施存储方式的切换,和数据迁移(PVC->对象存储)工作。

下面将介绍,存储切换和数据迁移过程中的问题和流程。注意:以下操作均在测试环境验证通过之后,才具体变更到生产,同时本文已在生产变更实践。

官网:appspa.github.io/docs/develo...

GitHub:github.com/appspa/app-...

数据迁移

通过 s3cmd 命令将数据目录,同步到对象存储当中

bash 复制代码
1. 单次
s3cmd sync /data s3://xxx-appspace
# 或者
s3cmd put --recursive /data s3://xxx-appspace-test

2. 批量
for i in $(ls); do
  s3cmd sync ${i} s3://xxx-appspace
done

更多 s3cmd 命令介绍,可查看这篇博客:blog.csdn.net/codelearnin...

修改数据库

1)修改我们数据库的地址,将http://appsapce-test.test.com修改为http://appspace-test.test.com/对象存储桶名称。将源下载地址,修改为新地址。

2)通过查看数据,得知只有这两个集合中保存地址信息,导出数据

不知道具体集合,可直接导出整个库数据,通过 VSCode 批量查找信息即可

3)通过 VSCode 批量替换后再将数据导入数据库即可

数据迁移了,App应用无法下载

1)问题现象

点击下载 App 按钮后,无反应,浏览器页面空白,好像也看不出和意识到啥问题,如图:

2)排查步骤

排查第一步,浏览器打开 F12 开发者模式查看接口地址。

拿到地址后,我们直接访问该地址,发现403错误,权限被拒绝访问。正常情况直接访问对象存储地址都是可以下载资源的,所以肯定是对象存储权限问题。

3)处理方法

通过 s3cmd 命令批量开启目录下文件权限

bash 复制代码
s3cmd setacl --recursive s3://xxx-appspace-test/67b5926efe8167002406ad64/ --acl-public

由于这里有23个目录,实现批量的话,可以写个 for 循环即可

bash 复制代码
for i in $(s3cmd la | awk '{print $2}'); do
  s3cmd setacl --recursive ${i} --acl-public
done

通过以上操作之后,我们服务下载功能就正常

另外通过 S3 Browser 图形化也是可以管理,不过不推荐,因为不能批量操作。通过 s3cmd 命令,可以实现对目录进行批量操作。

END

最后。昨天我创建了一个免费星球,叫 "运维开发领域(免费)",欢迎围观,交流。

星球将会比群聊更加活跃,同时包含干货内容和知识分享。

进星球可免费看,我前段时间写的付费专栏,《如何搞定博客,全流程实践指南》:mp.weixin.qq.com/s/3AnbRTxcN...

点击查看,免费专栏地址:wx.zsxq.com/group/88882...

相关推荐
To_再飞行1 小时前
K8s 调度管理
linux·云原生·kubernetes
2302_799525741 小时前
【Hadoop】Hadoop集群安装中出现的问题
linux·hadoop
刘一说1 小时前
Linux调试命令速查:Java/微服务必备
java·linux·微服务
枫の准大一1 小时前
【Linux游记】基础指令篇
linux
ypf52082 小时前
OrbStack 配置国内镜像加速
linux
Hello.Reader2 小时前
一文通关 Proto3完整语法与工程实践
java·linux·数据库·proto3
Hello.Reader2 小时前
一文吃透 Protobuf “Editions” 模式从概念、语法到迁移与实战
linux·服务器·网络·protobuf·editions
陌上花开缓缓归以2 小时前
linux ubi文件系统
linux
口嗨农民工2 小时前
exiftool 分析jpeg图片使用
linux
大明者省3 小时前
pycharm解释器使用anaconda建立的虚拟环境里面的python,无需系统里面安装python。
linux·python·pycharm