InfoGrab DocsInfoGrab Docs

Geo (개발)

GitLab Geo의 아키텍처, 복제 계층, 인증, 데이터 저장소, 검증, 개발 워크플로를 설명합니다.

Geo는 GitLab 인스턴스를 서로 연결합니다. 하나의 GitLab 인스턴스가 primary 사이트로 지정되며, 여러 secondary 사이트와 함께 운영될 수 있습니다. Geo는 아래 다이어그램에서 확인할 수 있고 이 문서에서 더 자세히 설명하는 여러 구성 요소를 조율합니다. [ ](/19.1/development/img/geo_architecture_v13_8.png) 복제 계층 # Geo는 다양한 구성 요소에 대한 복제를 처리합니다. 데이터베이스 : 캐시와 job을 제외한 전체 애플리케이션을 포함합니다. Git 리포지터리 : 프로젝트와 위키를 모두 포함합니다. Blob : 이슈에 첨부된 이미지부터 CI의 원시 로그 및 에셋까지 모든 항목을 포함합니다. 데이터베이스 복제를 제외하고, secondary 사이트에서 모든 것은 Geo Log Cursor 에 의해 조율됩니다. 복제 상태 # 다음 다이어그램은 복제가 작동하는 방식을 보여줍니다. 일부 허용 전환은 명확성을 위해 생략되었습니다. stateDiagram-v2 Pending --> Started Started --> Synced Started --> Failed Synced --> Pending: Mark for resync Failed --> Pending: Mark for resync Failed --> Started: Retry Geo Log Cursor 데몬 # Geo Log Cursor 데몬 은 각 secondary 사이트에서 실행되는 별도의 프로세스입니다. Geo Event Log 를 모니터링하여 새 이벤트를 감지하고, 각 특정 이벤트 유형에 대한 백그라운드 job을 생성합니다. 예를 들어 리포지터리가 업데이트되면, Geo primary 사이트는 연관된 리포지터리 업데이트 이벤트와 함께 Geo 이벤트를 생성합니다. Geo Log Cursor 데몬은 해당 이벤트를 감지하고 Geo::EventWorker job을 스케줄링하며, 이 job은 Geo::EventService 를 사용하여 리포지터리를 업데이트합니다. Geo Log Cursor 데몬은 자동으로 고가용성(High Availability) 모드에서 작동할 수 있습니다. 데몬은 주기적으로 잠금 획득을 시도하며, 일단 획득하면 활성 데몬으로 동작합니다. 동일한 사이트에서 추가로 실행 중인 데몬은 대기 모드로 전환되어, 활성 데몬이 잠금을 해제하면 즉시 작업을 재개할 준비가 됩니다. 짧은 TTL을 가진 ExclusiveLease 잠금 유형을 사용하며, 이 TTL은 매 폴링 사이클마다 갱신됩니다. 이를 통해 타임아웃이 있는 전역 잠금을 구현할 수 있습니다. 폴링 사이클이 끝날 때 데몬이 잠금을 갱신하거나 재획득하지 못하면, 대기 모드로 전환됩니다. 데이터베이스 복제 # Geo는 스트리밍 복제 를 사용하여 primary 에서 secondary 사이트로 데이터베이스를 복제합니다. 이 복제를 통해 secondary 사이트는 데이터베이스에 저장된 모든 데이터에 접근할 수 있으며, 사용자는 secondary 사이트에 로그인하여 모든