Geoフェイルオーバーのトラブルシューティング
- プラン: Premium、Ultimate
- 提供形態: GitLab Self-Managed
フェイルオーバー中、またはセカンダリをプライマリサイトにプロモートする際のエラーのトラブルシューティング
以下は、フェイルオーバー中、またはセカンダリをプライマリサイトにプロモートする際に発生する可能性のあるエラーメッセージと、それらを解決するための対策です。
メッセージ:ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
セカンダリサイトをプロモートする場合、次のエラーメッセージが表示されることがあります:
Running gitlab-rake geo:set_secondary_as_primary...
rake aborted!
ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:236:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:221:in `block (2 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Tasks: TOP => geo:set_secondary_as_primary
(See full trace by running task with --trace)
You successfully promoted this node!gitlab-rake geo:set_secondary_as_primaryまたはgitlab-ctl promote-to-primary-nodeの実行時にこのメッセージが表示された場合は、Railsコンソールを起動して次を実行します:
Rails.application.load_tasks; nil
Gitlab::Geo.expire_cache!
Rake::Task['geo:set_secondary_as_primary'].invokeメッセージ:NoMethodError: undefined method `secondary?' for nil:NilClass
セカンダリサイトをプロモートする場合、次のエラーメッセージが表示されることがあります:
sudo gitlab-rake geo:set_secondary_as_primary
rake aborted!
NoMethodError: undefined method `secondary?' for nil:NilClass
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:232:in `block (3 levels) in <top (required)>'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/tasks/geo.rake:221:in `block (2 levels) in <top (required)>'
/opt/gitlab/embedded/bin/bundle:23:in `load'
/opt/gitlab/embedded/bin/bundle:23:in `<main>'
Tasks: TOP => geo:set_secondary_as_primary
(See full trace by running task with --trace)このコマンドはセカンダリサイトでのみ実行されることを想定しており、このコマンドをプライマリサイトで実行しようとすると、このエラーメッセージが表示されます。
期限切れのアーティファクト
何らかの理由で、Geoのセカンダリサイトに、Geoのプライマリサイトよりも多くのアーティファクトがある場合は、Rakeタスクを使用してorphanアーティファクトファイルをクリーンアップします
Geoのセカンダリサイトでは、このコマンドはディスク上の孤立ファイルに関連するすべてのGeoレジストリレコードもクリーンアップします。
サインインエラーの修正
メッセージ: 含まれているリダイレクトURIが無効です
プライマリサイトのWebインターフェースにサインインできるのに、セカンダリ Webインターフェースにサインインしようとするとこのエラーメッセージが表示される場合は、GeoサイトのURLが外部のURLと一致していることを確認する必要があります。
プライマリサイトで以下を実行します:
- 左側のサイドバーの下部で、管理者を選択します。
- Geo > サイトを選択します。
- 影響を受けるセカンダリサイトを見つけて、編集を選択します。
- URLフィールドが、Rails nodes of the secondary(セカンダリ)サイトのRailsノードの
/etc/gitlab/gitlab.rbにあるexternal_url "https://gitlab.example.com"の値と一致することを確認します。
セカンダリサイトでのSAMLでの認証は、常にプライマリサイトに着地します
この問題は通常、GitLab 15.1へのアップグレード時に発生します。この問題を修正するには、Geoでシングルサインオンを使用してインスタンス全体のSAMLを設定するを参照してください。
部分的なフェイルオーバーからの回復
セカンダリGeoサイトへの部分的なフェイルオーバーは、一時的/ 一時的な問題の結果である可能性があります。したがって、最初にプロモートコマンドを再度実行してみてください。
セカンダリサイトのすべてのSidekiq、PostgreSQL、Gitaly、およびRailsノードにSSHで接続し、次のいずれかのコマンドを実行します:
セカンダリサイトをプライマリサイトにプロモートするには:
sudo gitlab-ctl geo promoteセカンダリサイトをwithout any further confirmation(さらに確認せずに)プライマリにプロモートするには:
sudo gitlab-ctl geo promote --force
セカンダリサイトに以前使用したURLを使用して、新しくプロモートされたプライマリサイトに接続できることを確認します。
successful(成功した場合)、セカンダリサイトがプライマリサイトにプロモートされました。
前の手順がnot successful(成功しなかった)場合は、次の手順に進みます:
セカンダリサイトのすべてのSidekiq、PostgreSQL、Gitaly、およびRailsノードにSSHで接続し、次の操作を実行します:
次の内容で
/etc/gitlab/gitlab-cluster.jsonファイルを作成します:{ "primary": true, "secondary": false }変更を有効にするには、GitLabを再構成します:
sudo gitlab-ctl reconfigure
セカンダリサイトに以前使用したURLを使用して、新しくプロモートされたプライマリサイトに接続できることを確認します。
成功した場合、セカンダリサイトがプライマリサイトにプロモートされました。