Geo 장애 조치
장애 조치 또는 이차 사이트를 주 사이트로 승격하는 중에 오류 수정
다음은 장애 조치 또는 이차 사이트를 주 사이트로 승격하는 중에 발견될 수 있는 가능한 오류 메시지와 이를 해결하기 위한 전략입니다.
메시지: ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
이차 사이트를 승격할 때 gitlab-rake geo:set_secondary_as_primary
을 실행하는 중에 다음과 같은 오류 메시지가 나타날 수 있습니다.
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 이차 사이트에 아티팩트가 주 사이트보다 더 많은 이유가 있는 경우, Rake 작업을 사용하여 고아 아티팩트 파일을 정리할 수 있습니다.
이 명령은 Geo 이차 사이트에서 디스크의 고아 파일에 관련된 모든 Geo 레지스트리 레코드도 정리합니다.
로그인 오류 수정
메시지: 포함된 리디렉션 URI가 유효하지 않습니다
주 사이트의 웹 인터페이스에 로그인할 수 있지만 이차 웹 인터페이스에 로그인하려고 하면 이 오류 메시지를 받은 경우 Geo 사이트의 URL이 외부 URL과 일치하는지 확인해야 합니다.
주 사이트에서:
- 왼쪽 사이드바에서 아래쪽에 관리 영역(Admin Area)을 선택합니다.
- Geo > Sites를 선택합니다.
- 영향을 받는 이차 사이트를 찾아 편집(Edit)을 선택합니다.
-
URL 필드가 이차 사이트의 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
-
이차 사이트를 주 사이트로 추가 확인 없이 승격하려면:
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로 새로 승격된 주 사이트에 연결할 수 있는지 확인하세요.
- 성공하면, 이차 사이트는 이제 주 사이트로 승격됩니다.