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