動画チュートリアル#
前言とプロジェクトの特徴#
今日のファイルストレージの需要が高まる中、私は 効率的で柔軟なプライベートファイルストレージクラスター を成功裏に構築しました。これは 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 アクション 1:定期的に Cloudflare R2 バケットのファイルを GitHub に移行し、ストレージファイルを負荷分散します。
GitHub アクション 2:定期的に GitHub ノードを GitLab にミラーリングし、ファイルがすべて失われるリスクを回避します。
Worker で書き換えられたリンクを取得:Worker を通じて GitHub、GitLab、R2 のプライベートリポジトリの PAT を隠し、カスタムドメインの URL を出力します。
グローバル Edge CDN を利用してアクセスを加速:Cache Rules を通じて静的ファイルをキャッシュし、オリジンリクエストを減少させ、アクセス速度と安定性を大幅に向上させます。
GitHub で n 個のプライベートリポジトリを作成し、PAT を取得#
https://github.com/new にアクセスし、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://< カスタムドメイン & gt/$fileName$extName を入力します。
ファイルパスは files/{fileName}.{extName} です。
GitHub でプライベートリポジトリを作成し、2 つの定期タスクを実行#
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 の加速能力を最大限に活用し、ファイルアクセスをより速く、より安定させます。
画像、コード、またはその他の重要なファイルを保存する場合、このクラスターは低コストで高効率の方法でニーズを満たすことができます。このソリューションがあなたの仕事や学びにインスピレーションと便利さをもたらすことを願っています。このクラスターに興味がある場合は、ぜひ構築を試みて、革新の楽しさを体験してください!