Geoノード管理エリア

GitLab Geoノードの様々な設定を行うことができます。 詳しくはGeoドキュメントをご覧ください。

プライマリノードでは、管理エリア > Geoに進みます。 セカンダリノードでは、管理エリア > Geo > Nodesに進みます。

共通設定

すべての Geo ノードには以下の設定があります:

設定 説明
プライマリー プライマリノードは1つだけなので、最初にプライマリノードを追加してから他のノードを追加してください。
名称 Geo ノードの一意な識別子。/etc/gitlab/gitlab.rbの設定gitlab_rails['geo_node_name'] と一致する必要があります。設定のデフォルトはexternal_url で、末尾にスラッシュが付きます。
URL インスタンスのユーザー向けURL。

読み込み元のノードは緑色のCurrent node ラベルで表示され、プライマリ・ノードは青色のPrimary ラベルで表示されます。プライマリ・ノードにのみ変更を加えることができることを覚えておいてください!

セカンダリノードの設定

セカンダリノードにはいくつかの追加設定があります:

設定 説明
選択的同期 このセカンダリノードのGeo選択同期を有効にします。
リポジトリ同期容量 セカンダリノードが プライマリノードにリポジトリをバックフィルする際の同時リクエスト数。
ファイル同期容量 セカンダリノードが プライマリノードにファイルをバックフィルする際の同時リクエスト数。

Geo 埋め戻し

セカンダリノードはプライマリノードからリポジトリやファイルの変更が通知されると、その変更を可能な限り迅速に同期しようとします。

バックフィルとは、セカンダリノードがデータベースに追加される前に存在していたリポジトリやファイルをセカンダリノードに追加することです。 非常に多くのリポジトリやファイルが存在する可能性があるため、一度にすべてをダウンロードすることは不可能です。そのため、GitLabではこれらのオペレーションの同時実行に上限を設けています。

バックフィルにかかる時間は最大同時実行数の関数ですが、値が大きいほどプライマリノードへの負担が大きくなります。 GitLab10.2以降では、制限値を設定できるようになりました。プライマリノードの容量に余裕がある場合は、値を大きくしてバックフィルを短時間で完了させることができます。 負荷が高く、バックフィルによって通常のリクエストに対する可用性が低下している場合は、値を小さくすることができます。

同期に別のURLを使用

プライマリノードの内部URLはセカンダリノードがプライマリノードに連絡するために使用されます(リポジトリの同期など)。 内部URLという名前は、ユーザーが使用する外部URLと区別されます。 内部URLは非公開アドレスである必要はありません。

内部URLのデフォルトは外部URLですが、Admin Area >Geo> Nodesでカスタマイズできます。

警告:Geo ノードを設定する際は HTTPS 接続を使用することをお勧めします。 HTTPS を使用する際にプライマリノードと セカンダリノード間の通信が切断されるのを避けるため、内部 URL をロードバランサーを指すようにカスタマイズし、ロードバランサーで TLS が終了するようにしてください。

ロードバランサーの背後にある複数のセカンダリノード

GitLab 11.11では、各Geoノードに一意のname を設定する限り、セカンダリノードが同一の外部URLを使用することができます。gitlab.rb の設定gitlab_rails['geo_node_name'] は必須です:

  • unicorn,sidekiq,geo_logcursorを実行する GitLab インスタンスごとに設定します。
  • Geo ノード名にマッチします。

ロードバランサは認証の失敗やクロスサイトリクエストエラーを避けるためにスティッキーセッションを使わなければなりません。