基于GitHub 和 GitLab 的图床集群架构

发布时间: 2024-11-05(New Article)

介绍

现有的图库方案,均为单节点,遇到该节点故障的将是令人崩毁的。

为了满足日益增长的需求,我设计了一个基于 GitHub 和 GitLab 的图床集群架构。这个方案是全新的原创设计,旨在提供高效、实用的图片存储解决方案。其部署简单,用户可以轻松上手,迅速享受集群和分布式存储带来的优势。

方案亮点:

  • 超大存储:通过分布式存储和多节点架构,轻松应对海量图片存储,打破单个存储库的容量限制。

  • 安全保障:数据在多个节点间自动同步,形成多重备份机制,确保数据的安全性与可靠性。即使某个节点出现故障,其他节点也能保证数据完整无损,用户无忧使用。

  • 集群高可用性:系统通过负载均衡将请求分散到不同节点上,提升了整体性能,即使部分节点宕机,仍然能够稳定运行,确保用户随时访问图像。

  • 智能监控:通过自定义密码获取节点状态,轻松掌握集群运行情况,简化管理流程。

  • 统一域名:只需一个自定义域名,简化访问体验,确保使用过程的顺畅。

  • 高速访问:自动选择响应速度最快的节点进行数据传输,确保用户以最快的速度获取所需内容。

  • 全球加速:利用 Cloudflare CDN,提升全球访问速度,确保无论身处何地都能享受流畅体验。

  • 图片压缩:自动压缩上传的图片,减少文件大小,提升网页加载速度。

教程

视频: https://youtu.be/SGex7xJ9YdQ
代码: https://github.com/fscarmen2/pic-hosting-cluster

GitHub 和 GitLab 图床集群同步库

  • 两个方案的配置文件都是 config.yml,只需要根据实际修改

GitHub --→ GitLab 目录下3个文件,放到 GitHub 库:

  • 配置文件config.yml
  • 同步脚本sync_to_gitlab.sh
  • AC 脚本./github/workflows/cluster_sync.yml

GitLab --→ GitHub 目录下3个文件,放到 GitLab 库:

  • 配置文件config.yml
  • 同步脚本sync_to_github.sh
  • CI/CD 脚本.gitlab-ci.yml

Cloudflare worker 目录下3个文件,复制代码到 worker 处:

  • 只使用 GitHubgithub_only.js
  • 只使用 GitLabgitlab_only.js
  • 同时使用 GitHub 和 GitLabgithub_gitlab.js

检测节点状态 https://<自定义域名>/<GitHub PAT>

  • 正常状态

image-2

  • 各种不正常状态

image-2

检测文件信息

  • 从 GitHub 获取 https://<自定义域名>/<文件名>?from=where

指定文件获取平台

  • 从 GitHub 获取 https://<自定义域名>/<文件名>?from=github

  • 从 GitLab 获取 https://<自定义域名>/<文件名>?from=gitlab

请在下方留下您的评论.加入TG吹水群