正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

サポートされているGeoデータタイプ

  • プラン: Premium、Ultimate
  • 提供形態: GitLab Self-Managed

Geoデータタイプとは、1つ以上のGitLab機能が関連情報を保存するために必要とする特定のデータクラスのことです。

これらの機能によって生成されたデータをGeoでレプリケートするには、アクセス、転送、および検証を行うためのいくつかの戦略を使用します。

データタイプ

以下のさまざまなデータタイプを区別します:

以下に、レプリケートする各機能またはコンポーネント、対応するデータタイプ、レプリケーション、および検証方法のリストを示します:

機能/コンポーネントレプリケーション方法検証方法
データベースPostgreSQLのアプリケーションデータネイティブネイティブ
データベースRedis該当なし1該当なし
データベース高度な検索(ElasticsearchまたはOpenSearch)ネイティブネイティブ
データベース完全一致コードの検索(Zoekt)ネイティブネイティブ
データベースSSH公開キーPostgreSQLレプリケーションPostgreSQLレプリケーション
GitプロジェクトリポジトリGeoとGitalyGitalyチェックサム
GitプロジェクトWikiリポジトリGeoとGitalyGitalyチェックサム
GitプロジェクトデザインリポジトリGeoとGitalyGitalyチェックサム
GitプロジェクトスニペットGeoとGitalyGitalyチェックサム
GitパーソナルスニペットGeoとGitalyGitalyチェックサム
GitグループウィキリポジトリGeoとGitalyGitalyチェックサム
Blobユーザーアップロード_(ファイルシステム)_GeoとAPISHA256チェックサム
Blobユーザーアップロード_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
BlobLFSオブジェクト_(ファイルシステム)_GeoとAPISHA256チェックサム
BlobLFSオブジェクト_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
BlobCIジョブアーティファクト_(ファイルシステム)_GeoとAPISHA256チェックサム
BlobCIジョブアーティファクト_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
BlobアーカイブされたCIビルドトレース_(ファイルシステム)_GeoとAPI未実装
BlobアーカイブされたCIビルドトレース_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
Blobコンテナレジストリ_(ファイルシステム)_GeoとAPI/Docker APISHA256チェックサム
Blobコンテナレジストリ_(オブジェクトストレージ)_GeoとAPI/管理対象/Docker API2SHA256チェックサム3
Blobパッケージレジストリ_(ファイルシステム)_GeoとAPISHA256チェックサム
Blobパッケージレジストリ_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
BlobTerraformモジュールレジストリ_(ファイルシステム)_GeoとAPISHA256チェックサム
BlobTerraformモジュールレジストリ_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
Blobバージョン管理されたTerraform State (ファイルシステム)GeoとAPISHA256チェックサム
Blobバージョン管理されたTerraform State (オブジェクトストレージ)GeoとAPI/管理対象2SHA256チェックサム3
Blob外部マージリクエスト差分_(ファイルシステム)_GeoとAPISHA256チェックサム
Blob外部マージリクエスト差分_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
Blobパイプラインアーティファクト_(ファイルシステム)_GeoとAPISHA256チェックサム
Blobパイプラインアーティファクト_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
BlobPages (ファイルシステム)GeoとAPISHA256チェックサム
BlobPages (オブジェクトストレージ)GeoとAPI/管理対象2SHA256チェックサム3
BlobCIセキュアファイル_(ファイルシステム)_GeoとAPISHA256チェックサム
BlobCIセキュアファイル_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
Blobインシデントメトリックイメージ_(ファイルシステム)_GeoとAPI/管理対象SHA256チェックサム
Blobインシデントメトリックイメージ_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
Blobアラートメトリックイメージ_(ファイルシステム)_GeoとAPISHA256チェックサム
Blobアラートメトリックイメージ_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
Blob依存プロキシイメージ_(ファイルシステム)_GeoとAPISHA256チェックサム
Blob依存プロキシイメージ_(オブジェクトストレージ)_GeoとAPI/管理対象2SHA256チェックサム3
コンテナリポジトリコンテナレジストリ_(ファイルシステム)_GeoとAPI/Docker APISHA256チェックサム
コンテナリポジトリコンテナレジストリ_(オブジェクトストレージ)_GeoとAPI/管理対象/Docker API2SHA256チェックサム3

脚注:

  1. Redisレプリケーションは、Redis SentinelでHAの一部として使用できます。Geoサイト間では使用されません。
  2. オブジェクトストレージのレプリケーションは、Geoまたはオブジェクトストレージプロバイダー/アプライアンスのネイティブレプリケーション機能によって実行できます。
  3. オブジェクトストレージの検証は、機能フラグ geo_object_storage_verification 16.4で導入され、デフォルトで有効になっています。ファイルサイズチェックサムを使用して、ファイルを検証します。

Gitリポジトリ

GitLabインスタンスには、1つ以上のリポジトリシャードを設定できます。各シャードには、ローカルに保存されたGitリポジトリへのアクセスと操作を可能にするGitalyインスタンスがあります。これは、次のマシンで実行できます:

  • 単一のディスクを使用しているマシン。
  • 複数のディスクが(RAIDアレイなどの構成により)単一のマウントポイントとしてマウントされているマシン。
  • LVMを使用しているマシン。

GitLabは特別なファイルシステムを必要とせず、マウントされたストレージアプライアンスで動作します。ただし、リモートファイルシステムを使用すると、パフォーマンスの制限や整合性の問題が発生する可能性があります。

GeoはGitalyのガベージコレクションをトリガーし、Geoセカンダリサイト上のフォークしたリポジトリを重複排除します。

Gitaly gRPC APIが通信を行い、次の3つの同期方法があります:

  • (特別な認証を使用して)あるGeoサイトから別のGeoサイトへの通常のGitクローン/フェッチを使用します。
  • (最初の方法が失敗した場合、またはリポジトリが破損している場合)リポジトリのスナップショットを使用します。
  • 管理者エリアからの手動トリガー(リストされている他の可能な方法を組み合わせます)。

各プロジェクトは、最大3つの異なるリポジトリを持つことができます:

  • ソースコードを保存するプロジェクトリポジトリ。
  • Wikiコンテンツを保存するWikiリポジトリ。
  • デザインアーティファクトをインデックス登録するデザインリポジトリ(実際のアセットはLFSに保存されます)。

これらのリポジトリはすべて同じシャード内に存在し、Wikiリポジトリとデザインリポジトリは同じベース名を共有し、それぞれ-wikiおよび-designというサフィックスが付きます。

それ以外に、スニペットリポジトリがあります。これらは、プロジェクトまたは特定のユーザーに接続できます。どちらのタイプもセカンダリサイトに同期されます。

コンテナリポジトリ

コンテナリポジトリは、コンテナレジストリに格納されます。これらは、データストアとしてのコンテナレジストリ上に構築されたGitLab固有の概念です。

blob

イシューの添付ファイルやLFSオブジェクトなどのファイルとblobをGitLabが格納する場所:

  • 特定の場所にあるファイルシステム。
  • オブジェクトストレージソリューション。オブジェクトストレージソリューションには、次のものがあります:
    • Amazon S3やGoogle Cloud Storageなど、クラウドベースのもの。
    • ユーザー自身がホストするもの(MinIOなど)。
    • オブジェクトストレージ互換APIを提供するストレージアプライアンス。

オブジェクトストレージの代わりにファイルシステムストアを使用する場合は、複数のノードを使用するときにネットワークマウントされたファイルシステムを使用してGitLabを実行します。

レプリケーションと検証に関して:

  • 内部APIリクエストを使用して、ファイルとblobを転送します。
  • オブジェクトストレージを使用すると、次のいずれかを行うことができます:
    • クラウドプロバイダーレプリケーション機能を使用します。
    • GitLabにレプリケートさせます。

データベース

GitLabは、さまざまなユースケースに対応するため、複数のデータベースに格納されたデータに依存しています。PostgreSQLは、イシューコンテンツ、コメント、権限、認証情報など、Webインターフェースでユーザーが生成したコンテンツの信頼できる唯一の情報源です。

PostgreSQLは、HTMLレンダリングされたMarkdownやキャッシュされたマージリクエストの差分など、ある程度のレベルのキャッシュされたデータを保持することもできます。これは、オブジェクトストレージにオフロードするように構成することもできます。

プライマリサイトからセカンダリサイトにデータをレプリケートするために、PostgreSQL独自のレプリケーション機能を使用します。

GitLabは、キャッシュストアとして、またバックグラウンドジョブシステム用の永続データを保持するためにRedisを使用します。どちらのユースケースも同じGeoサイトに排他的なデータを持っているため、サイト間でレプリケートすることはありません。

Elasticsearchは、高度な検索のためのオプションのデータベースです。これにより、ソースコードレベルと、イシュー、マージリクエスト、ディスカッションにおけるユーザー生成コンテンツの両方で、検索を改善できます。ElasticsearchはGeoではサポートされていません。

レプリケートされるデータタイプ

機能フラグの背後にあるレプリケートされたデータタイプ

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。

(一部のデータタイプで)レプリケーションを有効または無効にする

一部のデータタイプのレプリケーションは、デフォルトで有効になっている機能フラグの背後でリリースされます。GitLab Railsコンソールへのアクセス権を持つGitLab管理者は、インスタンスに対してそれを無効にすることを選択できます。これらの各データタイプの機能フラグ名は、以下の表の備考欄に記載されています。

無効にするには(パッケージファイルのレプリケーションなど):

Feature.disable(:geo_package_file_replication)

有効にするには(パッケージファイルのレプリケーションなど):

Feature.enable(:geo_package_file_replication)

このリストにない機能、またはReplicated(レプリケート)列にいいえがある機能は、セカンダリGeoサイトサイトサイトにレプリケートされません。これらの機能から手動でデータをレプリケートせずにフェイルオーバーすると、データがlost(失われ)ます。これらの機能をセカンダリサイトで使用したり、フェイルオーバーを正常に実行したりするには、他の方法でデータをレプリケートする必要があります。

機能レプリケート(GitLabバージョンで追加)検証済み(GitLabバージョンで追加)GitLab管理のオブジェクトストレージレプリケーション(GitLabバージョンで追加)GitLab管理のオブジェクトストレージ検証(GitLabバージョンで追加)備考
PostgreSQLのアプリケーションデータ可能(10.2)可能(10.2)該当なし該当なし
プロジェクトリポジトリ可能(10.2)可能(10.7)該当なし該当なし16.2でセルフサービスフレームワークに移行しました。詳細については、GitLabイシュー#367925を参照してください。

geo_project_repository_replicationの機能フラグは、(16.3)でデフォルトで有効になりました。

アーカイブされたプロジェクトを含む、すべてのプロジェクトがレプリケートされます。
プロジェクトウィキリポジトリ可能(10.2)2可能(10.7)2該当なし該当なし15.11でセルフサービスフレームワークに移行しました。詳細については、GitLabイシュー#367925を参照してください。

geo_project_wiki_repository_replicationの機能フラグは、(15.11)でデフォルトで有効になりました。
グループウィキリポジトリ可能(13.10)可能(16.3)該当なし該当なしgeo_group_wiki_repository_replication機能フラグの背後にあり、デフォルトで有効になっています。
ユーザーアップロード可能(10.2)可能(14.6)可能(15.1)可能(16.4)3レプリケーションは、geo_upload_replication機能フラグの背後にあり、デフォルトで有効になっています。検証はgeo_upload_verification機能フラグの背後にあり、14.8で削除されました。
LFSオブジェクト可能(10.2)可能(14.6)可能(15.1)可能(16.4)3GitLabバージョン11.11.xおよび12.0.xは、新しいLFSオブジェクトがレプリケートされないバグの影響を受けます。

レプリケーションは、geo_lfs_object_replication機能フラグの背後にあり、デフォルトで有効になっています。検証はgeo_lfs_object_verification機能フラグの背後にあり、14.7で削除されました。
パーソナルスニペット可能(10.2)可能(10.2)該当なし該当なし
プロジェクトスニペット可能(10.2)可能(10.2)該当なし該当なし
CIジョブアーティファクト可能(10.4)可能(14.10)可能(15.1)可能(16.4)3検証は機能フラグgeo_job_artifact_replicationの背後にあり、14.10デフォルトで有効になっています。
パイプラインアーティファクト可能(13.11)可能(13.11)可能(15.1)可能(16.4)3パイプラインの完了後、追加のアーティファクトを永続化します。
CIセキュアファイル可能(15.3)可能(15.3)可能(15.3)可能(16.4)3検証は機能フラグgeo_ci_secure_file_replicationの背後にあり、15.3デフォルトで有効になっています。
コンテナレジストリ可能(12.3)1可能(15.10)可能(12.3)1可能(15.10)コンテナレジストリのレプリケーションを設定するには、手順を参照してください。
Terraformモジュールレジストリ可能(14.0)可能(14.0)可能(15.1)可能(16.4)3geo_package_file_replication機能フラグの背後にあり、デフォルトで有効になっています。
プロジェクトデザインリポジトリ可能(12.7)可能(16.1)可能(16.4)3可能(16.4)3デザインには、LFSオブジェクトとアップロードのレプリケーションも必要です。
パッケージレジストリ可能(13.2)可能(13.10)可能(15.1)可能(16.4)3geo_package_file_replication機能フラグの背後にあり、デフォルトで有効になっています。
バージョン管理されたTerraform State可能(13.5)可能(13.12)可能(15.1)可能(16.4)3レプリケーションは、geo_terraform_state_version_replication機能フラグの背後にあり、デフォルトで有効になっています。検証は機能フラグgeo_terraform_state_version_verificationの背後にあり、14.0で削除されました。
外部マージリクエストの差分可能(13.5)可能(14.6)可能(15.1)可能(16.4)3レプリケーションは、geo_merge_request_diff_replication機能フラグの背後にあり、デフォルトで有効になっています。検証は機能フラグgeo_merge_request_diff_verificationの背後にあり、14.7で削除されました。
バージョン管理されたスニペット可能(13.7)可能(14.2)可能(16.4)3可能(16.4)3検証は13.11の機能フラグgeo_snippet_repository_verificationの背後に実装され、機能フラグは14.2で削除されました。
Pages可能(14.3)可能(14.6)可能(15.1)可能(16.4)3geo_pages_deployment_replication機能フラグの背後にあり、デフォルトで有効になっています。検証は機能フラグgeo_pages_deployment_verificationの背後にあり、14.7で削除されました。
プロジェクトレベルのCIセキュアファイル可能(15.3)可能(15.3)可能(15.3)可能(16.4)3
インシデントメトリクス画像可能(15.5)可能(15.5)可能(15.5)可能(16.4)3レプリケーション/検証は、アップロードデータタイプを介して処理されます。
アラートメトリクスの画像可能(15.5)可能(15.5)可能(15.5)可能(16.4)3レプリケーション/検証は、アップロードデータタイプを介して処理されます。
サーバー側のGitフック計画されていませんいいえ該当なし該当なし現在の実装の複雑さ、顧客の関心の低さ、およびフックの代替手段の利用可能性のため、計画されていません。
Elasticsearch計画されていませんいいえ不可いいえ製品のさらなる調査が必要であり、Elasticsearch(ES)クラスターを再構築できるため、計画されていません。セカンダリは、プライマリと同じESクラスターを使用します。
依存プロキシ画像可能(15.7)可能(15.7)可能(15.7)可能(16.4)3
脆弱性エクスポート計画されていませんいいえ不可いいえそれらは一時的なものであり、機密情報であるため、計画されていません。それらはオンデマンドで再生成できます。
パッケージNPMメタデータキャッシュ計画されていませんいいえ不可いいえディザスターリカバリー機能もセカンダリサイトでの応答時間も大幅に向上しないため、計画されていません。
パッケージDebian GroupComponentFile計画されていませんいいえ不可いいえ
パッケージDebian ProjectComponentFile計画されていませんいいえ不可いいえ
パッケージDebian GroupDistribution計画されていませんいいえ不可いいえ
パッケージDebian ProjectDistribution計画されていませんいいえ不可いいえ
パッケージRPM RepositoryFile計画されていませんいいえ不可いいえ
パッケージNuGet Symbol計画されていませんいいえ不可いいえ
VirtualRegistries Mavenキャッシュエントリ計画されていませんいいえ不可いいえ
SBOM脆弱性スキャンデータ計画されていませんいいえ不可いいえデータが一時的であり、セカンダリサイトでのディザスターリカバリー機能への影響が限られているため、計画されていません。

脚注:

  1. 15.5でセルフサービスフレームワークに移行しました。詳細については、GitLabイシュー#337436を参照してください。
  2. 15.11でセルフサービスフレームワークに移行しました。geo_project_wiki_repository_replication機能フラグの背後にあり、デフォルトで有効になっています。詳細については、GitLabイシュー#367925を参照してください。
  3. オブジェクトストレージに格納されているファイルの検証は、GitLab 16.4で導入されました(geo_object_storage_verificationという名前の機能フラグを使用)。