자동 배경 검증
자동 배경 검증은 전송된 데이터가 계산된 체크섬과 일치하는지를 확인합니다. 주 사이트에서의 데이터의 체크섬이 보조 사이트에서의 데이터의 체크섬과 일치하면 데이터가 성공적으로 전송됩니다. 계획된 장애 조치 후에 데이터가 손상된 경우, 손상 정도에 따라 일부 데이터가 손실될 수 있습니다.
주 사이트에서 검증에 실패하면 Geo가 손상된 객체를 복제 중이라는 것을 나타냅니다. 해당 문제를 해결하려면 백업에서 복원하거나 주 사이트에서 해당 객체를 제거할 수 있습니다.
주 사이트에서 검증에 성공하지만 보조 사이트에서는 검증에 실패하면, 이는 객체가 복제 프로세스 중에 손상되었음을 나타냅니다. Geo는 검증 실패를 수정하려고 하며 백오프 기간으로 리포지터리를 다시 동기화하도록 표시합니다. 이러한 실패에 대해 검증을 재설정하려면 이 지침을 따르세요.
검증이 복제보다 크게 뒤처지는 경우, 계획된 장애 조치를 예약하기 전에 사이트에 더 많은 시간을 부여하는 것을 고려하세요.
리포지터리 검증
주 사이트에서:
- 왼쪽 사이드바에서 아래쪽으로 이동하여 관리 영역(Admin Area)을 선택합니다.
- Geo > 사이트(Sites)를 선택합니다.
-
해당 사이트의 검증 정보(Verification information) 탭을 확장하여 리포지터리 및 위키에 대한 자동 체크섬 상태를 확인합니다. 성공은 녹색으로, 보류 중인 작업은 회색으로, 실패는 빨간색으로 표시됩니다.
보조 사이트에서:
- 왼쪽 사이드바에서 아래쪽으로 이동하여 관리 영역(Admin Area)을 선택합니다.
- Geo > 사이트(Sites)를 선택합니다.
-
해당 사이트의 검증 정보(Verification information) 탭을 확장하여 리포지터리 및 위키에 대한 자동 체크섬 상태를 확인합니다. 성공은 녹색으로, 보류 중인 작업은 회색으로, 실패는 빨간색으로 표시됩니다.
Geo 사이트 비교에 체크섬 사용하기
Geo 보조 사이트의 건강 상태를 확인하기 위해 Git 참조 및 해당 값에 대한 체크섬을 사용합니다. 이 체크섬에는 HEAD
, heads
, tags
, notes
, GitLab 특정 참조가 포함되어 진정한 일관성을 보장합니다. 두 사이트의 체크섬이 동일하면 확실히 동일한 참조를 보유하고 있습니다. 모든 사이트에 대해 업데이트 후 체크섬을 계산하여 모든 사이트가 동기화되어 있는지 확인합니다.
리포지터리 재검증
버그나 일시적인 인프라 장애로 인해 Git 리포지터리가 예상치 못하게 변경되어 검증되지 않을 수 있습니다. Geo는 데이터의 무결성을 보장하기 위해 리포지터리를 지속적으로 재검증합니다. 기본적으로 권장되는 재검증 간격은 7일이지만 1일로 설정할 수도 있습니다. 간격이 짧을수록 위험이 감소하지만 부하가 증가하며 그 반대도 마찬가지입니다.
주 사이트에서:
- 왼쪽 사이드바에서 아래쪽으로 이동하여 관리 영역(Admin Area)을 선택합니다.
- Geo > 사이트(Sites)를 선택합니다.
-
주 사이트의 편집(Edit)을 선택하여 최소한의 재검증 간격을 사용자 정의합니다:
검증이 실패한 프로젝트의 검증 재설정
Geo는 검증에 실패한 프로젝트를 백오프 기간 없이 다시 동기화하려고 노력합니다. 매뉴얼으로 재설정하려면 다음 Rake 작업을 실행하여 검증에 실패하거나 체크섬이 일치하지 않는 프로젝트를 다시 동기화하도록 표시합니다:
보조의 Rails 노드에서 해당 명령을 실행하세요.
리포지터리의 경우:
sudo gitlab-rake geo:verification:repository:reset
위키의 경우:
sudo gitlab-rake geo:verification:wiki:reset
체크섬 불일치로 인한 차이점 조정
주 사이트와 보조 사이트가 체크섬 검증이 일치하지 않는 경우, 그 원인이 명확하지 않을 수 있습니다. 체크섬 불일치의 원인을 찾으려면 다음을 수행하세요:
-
주 사이트에서:
- 왼쪽 사이드바에서 아래쪽으로 이동하여 관리 영역(Admin Area)을 선택합니다.
- 왼쪽 사이드바에서 개요(Overview) > 프로젝트(Projects)를 선택합니다.
- 확인하려는 프로젝트를 찾아 해당 이름을 선택합니다.
- 프로젝트 관리 페이지에서 리포지터리 이름(Storage name) 및 상대 경로(Relative path) 필드의 값을 얻습니다.
-
주 사이트의 Gitaly 노드 및 보조 사이트의 Gitaly 노드에서 프로젝트 리포지터리 디렉터리로 이동합니다. Gitaly 클러스터를 사용하는 경우, 이 명령을 실행하기 전에 클러스터가 정상 상태인지 확인합니다.
기본 경로는
/var/opt/gitlab/git-data/repositories
입니다. 사용자 정의된git_data_dirs
를 사용하는 경우 서버의 디렉터리 레이아웃을 확인하세요:cd /var/opt/gitlab/git-data/repositories
-
주 사이트에서 다음 명령을 실행하고 출력을 파일로 리디렉션합니다:
git show-ref --head | grep -E "HEAD|(refs/(heads|tags|keep-around|merge-requests|environments|notes)/)" > primary-site-refs
-
보조 사이트에서 다음 명령을 실행하고 출력을 파일로 리디렉션합니다:
git show-ref --head | grep -E "HEAD|(refs/(heads|tags|keep-around|merge-requests|environments|notes)/)" > secondary-site-refs
-
이전 단계의 파일을 동일한 시스템에서 복사하고 내용을 비교합니다:
diff primary-site-refs secondary-site-refs
-
현재 제한 사항
복제 및 검증 방법에 대한 자세한 정보는 지원되는 Geo 데이터 유형을 참조하세요.