Geoとオブジェクトストレージ
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed
Geoは、オブジェクトストレージ(AWS S3、またはその他の互換性のあるオブジェクトストレージ)と組み合わせて使用できます。
セカンダリサイトは、次のいずれかを使用できます:
- プライマリサイトと同じストレージバケット。
- レプリケーションされたストレージバケット。
- プライマリがローカルストレージを使用している場合は、ローカルストレージ。
ファイルのストレージ方法(ローカルまたはオブジェクトストレージ)はデータベースに記録され、データベースはプライマリGeoサイトからセカンダリGeoサイトにレプリケーションされます。
アップロードされたオブジェクトにアクセスすると、ストレージ方法(ローカルまたはオブジェクトストレージ)がデータベースから取得されるため、セカンダリGeoサイトはプライマリGeoサイトのストレージ方法と一致する必要があります。
したがって、プライマリGeoサイトがオブジェクトストレージを使用している場合、セカンダリGeoサイトもそれを使用する必要があります。
利用するには:
- GitLabにレプリケーションを管理させるには、GitLab管理のオブジェクトストレージレプリケーションの有効化に従ってください。
- サードパーティサービスにレプリケーションを管理させるには、サードパーティのレプリケーションサービスに従ってください。
GitLabにおけるオブジェクトストレージの使用の詳細については、こちらをご覧ください。
オブジェクトストレージの検証
Geoは、オブジェクトストレージに保存されているファイルを検証して、プライマリサイトとセカンダリサイト間のデータ整合性を確保します。
オブジェクトストレージの検証を無効にすることはお勧めできません。geo_object_storage_verification機能フラグを無効にすると、GitLabは既存のすべての検証状態レコードを非同期的に削除します。
geo_object_storage_verification機能フラグが無効になっている場合:
- Geo検証ワーカー(
Geo::VerificationBatchWorker)はSidekiqログに表示されることがありますが、検証は行われません。 - 検証レコードのクリーンアップ中に、残りのレコードを処理するためにワーカーがエンキューされる場合があります。
GitLab管理のオブジェクトストレージレプリケーションの有効化
問題が発生した場合は、個々のファイルを手動で削除しないでください。データの不整合につながる可能性があります。
セカンダリサイトは、ローカルファイルシステムまたはオブジェクトストレージに保存されているかどうかにかかわらず、プライマリサイトによって保存されたファイルをレプリケートすることができます。
GitLabレプリケーションを有効にするには:
- 左側のサイドバーの下部で、管理者を選択します。
- Geo > サイトを選択します。
- 左側のサイドバーの下部にあるセカンダリサイトで編集を選択します。
- Synchronization Settings(同期設定)セクションで、このセカンダリサイトで、オブェクトストレージ上のコンテンツの複製を許可しますチェックボックスを見つけて有効にします。
LFSについては、ドキュメントに従ってLFSオブジェクトストレージを設定します。
CIジョブアーティファクトについては、ジョブアーティファクトオブジェクトストレージを設定するための同様のドキュメントがあります。
ユーザーのアップロードについては、アップロードオブジェクトストレージを設定するための同様のドキュメントがあります。
プライマリサイトのファイルをオブジェクトストレージに移行する場合は、セカンダリをいくつかの方法で設定できます:
- まったく同じオブジェクトストレージを使用します。
- 別のオブジェクトストアを使用しますが、オブジェクトストレージソリューションに組み込まれているレプリケーションを活用します。
- 別のオブジェクトストアを使用し、このセカンダリサイトで、オブェクトストレージ上のコンテンツの複製を許可します設定を有効にします。
このセカンダリサイトで、オブェクトストレージ上のコンテンツの複製を許可します設定が無効になっており、すべてのファイルをローカルストレージからオブジェクトストレージに移行した場合、多くの管理者 > Geo > サイトの進行状況バーに同期対象がありませんと表示されます。
データの損失を避けるために、このセカンダリサイトで、オブェクトストレージ上のコンテンツの複製を許可します設定は、プライマリサイトとセカンダリサイトに別々のオブジェクトストアを使用している場合にのみ有効にする必要があります。
GitLabは、次の両方のケースをサポートしていません:
- プライマリサイトがローカルストレージを使用している。
- セカンダリサイトがオブジェクトストレージを使用している。
移行後の不整合
ローカルストレージからオブジェクトストレージに移行すると、データの不整合が発生する可能性があり、詳細についてはオブジェクトストレージのトラブルシューティングセクションで説明されています。
サードパーティのレプリケーションサービス
Amazon S3を使用している場合は、Cross-Region Replication(CRR)を使用して、プライマリサイトで使用されているバケットとセカンダリサイトで使用されているバケット間で自動レプリケーションを行うことができます。
Google Cloud Storageを使用している場合は、Multi-Regional Storageの使用を検討してください。または、Storage Transfer Serviceを使用することもできますが、これは毎日の同期のみをサポートしています。
手動同期の場合、またはcronでスケジュールされている場合は、以下を参照してください: