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