介绍: 在当今文件存储需求日益增长的环境下,我成功打造了一个高效、灵活的私人文件存储集群,结合了 R2、GitHub 和 GitLab 多平台的优势,形成了一个高度可靠、分布式的存储系统。这套方案的核心亮点包括:
- 多节点分布式存储:文件按策略分散存储,规避单点故障风险。
- 自动化备份与同步:数据在不同节点间高效同步,确保一致性和安全性。
- 智能加速访问:借助 Cloudflare 全球边缘服务,访问速度得到极大提升,用户体验极为流畅。
- 无限扩展潜力:得益于分布式架构,理论上可以存储几乎无限量的文件。
- 这不仅是一个简单的图床解决方案,更是一个适合代码、文档乃至任何数据存储的多功能分布式存储系统。
集群节点信息截图:
这不仅是一个简单的图床解决方案,更是一个适合代码、文档乃至任何数据存储的多功能分布式存储系统。
部署条件
- GitHub 账号,https://github.com
- GitLab 账号,https://gitlab.com
- Cloudflare 账号,https://www.cloudflare.com
- 安装 PicGo,https://molunerfinn.com/PicGo
流程和工具介绍
PicGo 上传文件:使用 PicGo,并安装 s3 插件,上传文件到 Cloudflare R2 存储桶。
GitHub action 1:定时迁移 Cloudflare R2 存储桶上的文件到 GitHub,负载存储文件。
GitHub action 2:定时把 GitHub 节点镜像到 GitLab,避免文件全部丢失的风险。
获取经过 Worker 重写的链接:通过 Worker 隐藏 GitHub, GitLab 和 R2 私库的 PAT,输出自定义域名 url。
利用全球 Edge CDN 加速访问: 通过 Cache Rules 缓存静态文件,减少回源请求,大幅提升访问速度与稳定性。
GitHub 建 n 个私库作节点,获取一个 PAT
访问 https://github.com/new ,以建3个为例子,建3个私库,要求有相同的前缀,加数字序号,如 node-1, node-2, node-3 …
为这3个私库创建 PAT,访问 https://github.com/settings/tokens
GitLab 建 n 个同名私库作节点,获取n个 PAT 和 Repo ID
访问 https://gitlab.com/projects/new#blank_project ,建3个同名的私库,要求与前面建的私库名字完全一样,数量也一样
n 个 CloudFlare 账户各自建 R2 存储桶,获取 n 个 API 密钥
把所有的 PAT 和 Project ID 记录起来
PicGo 压缩插件 s3
安装好 PicGo 后,继续在软件里安装 s3 插件
自定义链接格式填 https://<自定义域名>/$fileName$extName
文件路径 files/{fileName}.{extName}
GitHub 建私库,运行两个定时任务
https://github.com/fscarmen2/pic-hosting-cluster 获取代码,在 GitHub 新建一个用于定时同步任务的私库,从我的仓库复制代码
正式使用流程
上传文件
通过 PicGo 上传文件到 GitHub,可以使用快捷键(默认 Ctrl + Shift + P)或拖拽文件到 PicGo 界面。
上传成功进度条是蓝色的,如果是红色,请检查设置是否有误。上传成功后自定义域名链接会自动在粘贴板
在 GitHub Action 里手动运行定时任务
进阶
url 的参数有以下这些
参数 query | 说明 |
---|---|
https://<自定义域名>/<自定义检测密码> | 检测各节点状态 |
https://<自定义域名>/<文件名>?from=r2 | 指定从 R2 获取 |
https://<自定义域名>/<文件名>?from=github | 指定从 GitHub 获取 |
https://<自定义域名>/<文件名>?from=gitlab | 指定从 GitLab 获取 |
https://<自定义域名>/<文件名>?from=where | 查询文件和归属节点信息 |
检测各节点状态
指定文件从 R2 获取
指定文件从 GitHub 获取
指定文件从 GitLab 获取
查询文件和归属节点信息
总结
通过本方案,我们成功搭建了一个融合 R2、GitHub 和 GitLab 的高效分布式文件存储集群。这一架构不仅提升了文件的安全性与备份可靠性,还充分利用了 Cloudflare 全球 Edge CDN 的加速能力,让文件访问更快、更稳定。
无论是存储图片、代码,还是其他重要文件,这个集群都能以低成本、高效率的方式满足需求。希望这个方案能够为你的工作和学习带来启发和便利。如果你对这个集群感兴趣,不妨尝试搭建,享受创新带来的乐趣!