生产环境变更 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...

相关推荐
今天也想躺ping1 小时前
linux系统移植pjsua库实现sip通话功能
linux·sip·交叉编译
hkj88082 小时前
Linux 总线-设备-驱动(Bus-Device-Driver)完整协作原理
linux·运维·microsoft
早点睡啊Y2 小时前
深入学 LangChain 官方文档(一):总览、安装与快速开始
linux·服务器·langchain
一直在努力学习的菜鸟3 小时前
Rocky8.5编译安装PHP8.4
linux·运维
国产化创客4 小时前
Kindle完整越狱改造:从闲置泡面盖到Linux开发与智能家居终端
linux·运维·物联网·嵌入式·智能家居·智能硬件
qetfw4 小时前
CentOS 7 搭建 MariaDB 数据库服务
linux·数据库·centos·mariadb
皮卡狮4 小时前
进程的地址空间
linux
Darkwanderor5 小时前
动、静态库相关内容的详细介绍
linux·c语言·开发语言·c++
2401_858286116 小时前
OS79.【Linux】POSIX信号量
linux·运维·服务器
CodingPioneer7 小时前
03零刻Pro-LS2K3000-Loongnix 20.7.rc1硬盘分区、格式化、挂载与卸载
linux·运维·服务器·硬盘挂载