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

Geoでサポートされているデータ型

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

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

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

データ型

以下の異なるデータ型を区別します:

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

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

脚注:

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

Gitリポジトリ

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

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

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

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

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

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

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

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

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

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

コンテナリポジトリ

コンテナリポジトリはコンテナレジストリに保存されます。これらはコンテナレジストリをデータストアとして構築された、GitLab固有のコンセプトです。

blob

GitLabは、イシューの添付ファイルやLFSオブジェクトなどのファイルやblobを以下のいずれかに保存します:

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

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

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

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

データベース

GitLabは、さまざまなユースケースのために複数のデータベースに保存されているデータに依存しています。PostgreSQLは、Webインターフェース内のユーザー生成コンテンツ(イシューのコンテンツ、コメント、権限、および認証情報など)の単一の真実点です。

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

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

Redisは、キャッシュデータストアとして、またバックグラウンドジョブシステム用の永続データを保持するために使用されます。両方のユースケースには同じGeoサイトに固有のデータがあるため、サイト間でレプリケートすることはありません。

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

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

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

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

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

一部のデータ型のレプリケーションは、機能フラグの背後でリリースされており、enabled by defaultで有効になっています。GitLab RailsコンソールにアクセスできるGitLab管理者は、インスタンスでそれを無効にすることを選択できます。それらの各データ型の機能フラグ名は、以下の表のノート列に記載されています。

無効にするには、パッケージファイルのレプリケーションの場合と同様に、次のコマンドを実行します:

Feature.disable(:geo_package_file_replication)

有効にするには、パッケージファイルのレプリケーションの場合と同様に、次のコマンドを実行します:

Feature.enable(:geo_package_file_replication)

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

機能Replicated(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)3機能フラグgeo_package_file_replicationの背後で、デフォルトで有効になっています。
プロジェクトデザインリポジトリ可能(12.7)可能(16.1)可能(16.4)3可能(16.4)3デザインには、LFSオブジェクトとアップロードのレプリケーションも必要です。
パッケージレジストリ可能(13.2)可能(13.10)可能(15.1)可能(16.4)3機能フラグgeo_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)3機能フラグgeo_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リポジトリFile計画なしいいえいいえいいえ
パッケージ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という名前の機能フラグでデフォルトで有効になりました。