基于GitHub 和 GitLab 的图床集群架构
2024-11-5 19:43:9 Author: www.upx8.com(查看原文) 阅读量:1 收藏

介绍

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

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

方案亮点:

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

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

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

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

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

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

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

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

教程

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

  • 两个方案的配置文件都是 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


文章来源: https://www.upx8.com/4388
如有侵权请联系:admin#unsafe.sh