Geoとオブジェクトストレージ
Geo はオブジェクトストレージ(AWS S3、またはその他の互換性のあるオブジェクトストレージ)と組み合わせて使用できます。
セカンダリサイトでは、以下のいずれかを使用できます:
- プライマリサイトと同じストレージバケット。
- 複製されたストレージバケット。
- プライマリがローカルストレージを使用している場合は、ローカルストレージ。
ファイルの保存方法(ローカルまたはオブジェクトストレージ)はデータベースに記録され、データベースはプライマリGeo サイトからセカンダリGeo サイトに複製されます。
アップロードされたオブジェクトにアクセスするときは、データベースからそのストレージ方法(ローカルまたはオブジェクトストレージ)を取得します。したがって、セカンダリGeo サイトはプライマリGeo サイトのストレージ方法と一致していなければなりません。
従って、プライマリGeo サイトがオブジェクトストレージを使っている場合、セカンダリGeo サイトもそれを使わなければなりません。
持つこと:
- GitLabがレプリケーションを管理するには、Enabling GitLab replicationに従ってください。
- サードパーティのサービスはレプリケーションを管理します。
GitLabが管理するレプリケーションとサードパーティのレプリケーションの比較については、オブジェクトストレージのレプリケーションテストを参照してください。
GitLab でのオブジェクトストレージの使用について、詳しくはこちらをご覧ください。
GitLabが管理するオブジェクトストレージのレプリケーションの有効化
この機能はGitLab 15.1で一般的に利用できるようになりました。
セカンダリサイトは、プライマリサイトに保存されたファイルを、ローカルファイルシステムかオブジェクトストレージかに関係なく複製することができます。
GitLabレプリケーションを有効にするには:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 左サイドバーでGeo > Nodes を選択します。
- セカンダリ・サイトの[編集]を選択します。
- Synchronization Settings] セクションで、[Allow this secondary node to replicate content on Object Storage] チェックボックスを見つけて有効にします。
LFSの場合は、ドキュメントに従ってLFSオブジェクトストレージを設定します。
CIジョブのアーティファクトについては、ジョブのアーティファクトオブジェクトストレージを設定するための同様のドキュメントがあります。
ユーザーのアップロードについては、アップロードオブジェクトストレージを設定する同様のドキュメントがあります。
プライマリ・サイトのファイルをオブジェクト・ストレージにマイグレーションする場合、セカンダリをいくつかの方法で設定できます:
- まったく同じオブジェクトストレージを使用します。
- 別のオブジェクト・ストアを使用しますが、オブジェクト・ストレージ・ソリューションのビルトイン・レプリケーションを活用します。
- 別のオブジェクト・ストアを使用し、[このセカンダリ・ノードがオブジェクト・ストレージ上でコンテンツをレプリケートできるようにする]設定を有効にします。
GitLabは現在、両方のケースをサポートしていません:
- プライマリサイトがローカルストレージを使用している場合。
- セカンダリサイトはオブジェクトストレージを使用します。
サードパーティレプリケーションサービス
Amazon S3を利用する場合、Cross-Region Replication(CRR)を利用することで、プライマリサイトが利用するバケットとセカンダリサイトが利用するバケットの間で自動レプリケーションを行うことができます。
Google Cloud Storageを使用している場合は、Multi-Regional Storageの使用を検討してください。また、Storage Transfer Service を利用することもできますが、これは日次同期にしか対応していません。
手動同期、またはcron
によるスケジュール同期については、こちらを参照してください: