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

相关推荐
optimistic_chen19 分钟前
【Redis 系列】Redis详解
linux·数据库·redis·缓存·xsheel
低客的黑调25 分钟前
了解JVM 结构和运行机制,从小白编程Java 大佬
java·linux·开发语言
想唱rap25 分钟前
C++ map和set
linux·运维·服务器·开发语言·c++·算法
CodeByV37 分钟前
【Linux】Ext 系列文件系统深度解析:从磁盘到软硬链接
linux·服务器
运维-大白同学1 小时前
2025最全面开源devops运维平台功能介绍
linux·运维·kubernetes·开源·运维开发·devops
梦在深巷、2 小时前
linux系统防火墙之iptables
linux·运维·服务器
放学有种别跑、3 小时前
GIT使用指南
大数据·linux·git·elasticsearch
做人不要太理性3 小时前
【Linux系统】线程的同步与互斥:核心原理、锁机制与实战代码
linux·服务器·算法
weixin_660096783 小时前
zsh中使用自动补全zsh-autosuggestions
linux·ubuntu·zsh·zshrc
Ghost Face...3 小时前
Linux音频控制神器:amixer完全指南
linux·chrome·音视频