Geo 페일오버 문제 해결
GitLab v19.4Offering: GitLab Self-Managed
요약
페일오버 중이나 보조 사이트를 기본 사이트로 승격할 때 나타날 수 있는 오류 메시지와 해결 방법은 다음과 같습니다. 보조 사이트를 승격할 때 다음 오류 메시지가 나타날 수 있습니다. gitlab-rake gitlab:geo:set_secondary_as_primary 또는 gitlab-ctl promote-to-primary-node 를 실행할 때 이 메시지가 나타나면 Rails 콘솔에서 다음을 실행합니다.
페일오버 중 또는 보조 사이트를 기본 사이트로 승격할 때 발생하는 오류 수정#
페일오버 중이나 보조 사이트를 기본 사이트로 승격할 때 나타날 수 있는 오류 메시지와 해결 방법은 다음과 같습니다.
메시지: ActiveRecord::RecordInvalid: Validation failed: Name has already been taken#
보조 사이트를 승격할 때 다음 오류 메시지가 나타날 수 있습니다.
Running gitlab-rake gitlab: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 => gitlab:geo:set_secondary_as_primary
(See full trace by running task with --trace)
You successfully promoted this node!
gitlab-rake gitlab:geo:set_secondary_as_primary 또는 gitlab-ctl promote-to-primary-node
를 실행할 때 이 메시지가 나타나면 Rails 콘솔에서 다음을 실행합니다.
Rails.application.load_tasks; nil
Gitlab::Geo.expire_cache!
Rake::Task['gitlab:geo:set_secondary_as_primary'].invoke
메시지: NoMethodError: undefined method `secondary?' for nil:NilClass#
보조 사이트를 승격할 때 다음 오류 메시지가 나타날 수 있습니다.
sudo gitlab-rake gitlab: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 => gitlab:geo:set_secondary_as_primary
(See full trace by running task with --trace)
이 명령은 보조 사이트에서만 실행하도록 만들어졌으며, 기본 사이트에서 실행하면 이 오류 메시지가 표시됩니다.
만료된 아티팩트#
어떤 이유로 Geo 보조 사이트의 아티팩트가 Geo 기본 사이트보다 많다면 Rake 태스크로 고아 아티팩트 파일을 정리할 수 있습니다
Geo 보조 사이트에서는 이 명령이 디스크의 고아 파일과 관련된 모든 Geo 레지스트리 레코드도 함께 정리합니다.
로그인 오류 수정#
메시지: The redirect URI included is not valid#
기본 사이트의 웹 인터페이스에는 로그인할 수 있으나 보조 사이트의 웹 인터페이스에 로그인할 때 이 오류 메시지가 표시된다면, 해당 Geo 사이트의 URL 이 외부 URL과 일치하는지 확인해야 합니다.
사전 요구 사항:
- 관리자 액세스 권한.
기본 사이트에서 수행합니다.
- 오른쪽 위 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Geo > Sites를 선택합니다.
- 문제가 발생한 보조 사이트를 찾아 Edit을 선택합니다.
- URL 필드가 보조 사이트 Rails 노드의
/etc/gitlab/gitlab.rb에 있는external_url "https://gitlab.example.com"값과 일치하는지 확인합니다.
보조 사이트에서 SAML로 인증하면 항상 기본 사이트로 이동하는 문제#
이 문제는 대개 GitLab 15.1로 업그레이드할 때 발생합니다. 이 문제를 해결하려면 Single Sign-On을 사용하는 Geo에서 인스턴스 전체 SAML 구성을 참고합니다.
부분 페일오버에서 복구#
보조 Geo 사이트로의 부분 페일오버는 일시적인 문제로 발생했을 수 있습니다. 따라서 먼저 승격 명령을 다시 실행해 봅니다.
-
보조 사이트의 모든 Sidekiq, PostgreSQL, Gitaly, Rails 노드에 SSH로 접속한 다음 아래 명령 중 하나를 실행합니다.
-
보조 사이트를 기본 사이트로 승격하려면 다음을 실행합니다.
sudo gitlab-ctl geo promote -
추가 확인 없이 보조 사이트를 기본 사이트로 승격하려면 다음을 실행합니다.
sudo gitlab-ctl geo promote --force
-
-
이전에 보조 사이트에 사용하던 URL로 새로 승격된 기본 사이트에 연결되는지 확인합니다.
-
연결에 성공하면 보조 사이트가 기본 사이트로 승격된 것입니다.
앞의 단계로 해결되지 않으면 다음 단계를 진행합니다.
-
보조 사이트의 모든 Sidekiq, PostgreSQL, Gitaly, Rails 노드에 SSH로 접속한 다음 아래 작업을 수행합니다.
-
다음 내용으로
/etc/gitlab/gitlab-cluster.json파일을 만듭니다.{ "primary": true, "secondary": false } -
변경 사항을 적용하도록 GitLab을 재구성합니다.
sudo gitlab-ctl reconfigure
-
-
이전에 보조 사이트에 사용하던 URL로 새로 승격된 기본 사이트에 연결되는지 확인합니다.
-
연결에 성공하면 보조 사이트가 기본 사이트로 승격된 것입니다.