Geoでサポートされているデータ型
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed
Geoデータ型は、1つ以上のGitLab機能が関連情報を保存するために必要な特定のデータクラスです。
これらの機能によって生成されたデータをGeoでレプリケートするために、アクセス、転送、および検証にいくつかの戦略を使用します。
データ型
以下の異なるデータ型を区別します:
レプリケートする各機能またはコンポーネント、対応するデータ型、レプリケーション、および検証方法のリストを以下に示します:
| 種類 | 機能 / コンポーネント | レプリケーション方法 | 検証方法 |
|---|---|---|---|
| データベース | PostgreSQLのアプリケーションデータ | ネイティブ | ネイティブ |
| データベース | Redis | 該当なし1 | 該当なし |
| データベース | 高度な検索(ElasticsearchまたはOpenSearch) | ネイティブ | ネイティブ |
| データベース | 完全一致コードの検索(Zoekt) | ネイティブ | ネイティブ |
| データベース | SSH公開キー | PostgreSQLレプリケーション | PostgreSQLレプリケーション |
| Git | プロジェクトリポジトリ | GeoとGitaly | Gitalyチェックサム |
| Git | プロジェクトウィキリポジトリ | GeoとGitaly | Gitalyチェックサム |
| Git | プロジェクトデザインリポジトリ | GeoとGitaly | Gitalyチェックサム |
| Git | プロジェクトスニペット | GeoとGitaly | Gitalyチェックサム |
| Git | 個人スニペット | GeoとGitaly | Gitalyチェックサム |
| Git | グループウィキリポジトリ | GeoとGitaly | Gitalyチェックサム |
| blob | ユーザーのアップロード_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | ユーザーのアップロード_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | LFSオブジェクト_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | LFSオブジェクト_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | CIジョブアーティファクト_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | CIジョブアーティファクト_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | アーカイブされたCIビルドトレース_(ファイルシステム)_ | GeoとAPI | 未実装 |
| blob | アーカイブされたCIビルドトレース_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | コンテナレジストリ_(ファイルシステム)_ | GeoとAPI/Docker API | SHA256チェックサム |
| blob | コンテナレジストリ_(オブジェクトストレージ)_ | GeoとAPI/Managed/Docker API 2 | SHA256チェックサム3 |
| blob | パッケージレジストリ_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | パッケージレジストリ_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | Terraformモジュールレジストリ_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | Terraformモジュールレジストリ_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | バージョン管理されたTerraform State (ファイルシステム) | GeoとAPI | SHA256チェックサム |
| blob | バージョン管理されたTerraform State (オブジェクトストレージ) | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | 外部マージリクエストの差分_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | 外部マージリクエストの差分_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | パイプラインアーティファクト_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | パイプラインアーティファクト_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | Pages (ファイルシステム) | GeoとAPI | SHA256チェックサム |
| blob | Pages (オブジェクトストレージ) | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | CIセキュアファイル_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | CIセキュアファイル_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | インシデントメトリクス画像_(ファイルシステム)_ | GeoとAPI/Managed | SHA256チェックサム |
| blob | インシデントメトリクス画像_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | アラートメトリクス画像_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | アラートメトリクス画像_(オブジェクトストレージ)_ | GeoとAPI/Managed 2 | SHA256チェックサム3 |
| blob | 依存プロキシ画像_(ファイルシステム)_ | GeoとAPI | SHA256チェックサム |
| blob | 依存プロキシ画像_(オブジェクトストレージ)_ | GeoとAPI/managed 2 | SHA256チェックサム3 |
| コンテナリポジトリ | コンテナレジストリ_(ファイルシステム)_ | GeoとAPI/Docker API | SHA256チェックサム |
| コンテナリポジトリ | コンテナレジストリ_(オブジェクトストレージ)_ | GeoとAPI/Managed/Docker API 2 | SHA256チェックサム3 |
脚注:
- Redisレプリケーションは、Redis Sentinelを使用したHAの一部として使用できます。Geoサイト間では使用されません。
- オブジェクトストレージのレプリケーションは、Geoまたはオブジェクトストレージプロバイダー/アプライアンスのネイティブレプリケーション機能によって実行できます。
- オブジェクトストレージの検証は、機能フラグ、
geo_object_storage_verification、16.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)3 | GitLabバージョン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脆弱性スキャンデータ | 計画なし | いいえ | いいえ | いいえ | データが一時的なものであり、ディザスターリカバリー機能およびセカンダリサイトでの影響が限定的であるため、計画されていません。 |
脚注: