지원되는 지오 데이터 유형
자세한 사항: Tier: Premium, Ultimate Offering: Self-Managed
지오 데이터 유형은 GitLab 기능 중 하나 이상이 필요로 하는 특정 데이터 클래스로, 관련 정보를 저장하는 데 사용됩니다.
이러한 기능에서 생성된 데이터를 지오로 복제하기 위해 접근, 전송 및 확인하기 위해 여러 전략을 사용합니다.
데이터 유형
우리는 세 가지 다른 데이터 유형을 구별합니다:
아래 목록에서 우리가 복제하는 각 기능 또는 구성 요소, 해당 데이터 유형, 복제 및 확인 방법을 확인하세요.
유형 | 기능 / 구성 요소 | 복제 방법 | 확인 방법 |
---|---|---|---|
데이터베이스 | PostgreSQL의 응용 프로그램 데이터 | 네이티브 | 네이티브 |
데이터베이스 | Redis | 해당 없음 1 | 해당 없음 |
데이터베이스 | Elasticsearch | 네이티브 | 네이티브 |
데이터베이스 | SSH 공개 키 | PostgreSQL 복제 | PostgreSQL 복제 |
Git | 프로젝트 저장소 | 지오 및 Gitaly로 | Gitaly 체크섬 |
Git | 프로젝트 위키 저장소 | 지오 및 Gitaly로 | Gitaly 체크섬 |
Git | 프로젝트 디자인 저장소 | 지오 및 Gitaly로 | Gitaly 체크섬 |
Git | 프로젝트 스니펫 | 지오 및 Gitaly로 | Gitaly 체크섬 |
Git | 개인 스니펫 | 지오 및 Gitaly로 | Gitaly 체크섬 |
Git | 그룹 위키 저장소 | 지오 및 Gitaly로 | Gitaly 체크섬 |
Blobs | 사용자 업로드 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 사용자 업로드 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | LFS 객체 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | LFS 객체 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | CI 작업 아티팩트 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | CI 작업 아티팩트 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 보관된 CI 빌드 추적 (파일 시스템) | 지오 및 API로 | 구현되지 않음 |
Blobs | 보관된 CI 빌드 추적 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 컨테이너 레지스트리 (파일 시스템) | 지오 및 API/Docker API | SHA256 체크섬 |
Blobs | 컨테이너 레지스트리 (객체 저장소) | 지오 및 API/Managed/Docker API 2 | SHA256 체크섬 3 |
Blobs | 패키지 레지스트리 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 패키지 레지스트리 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | Terraform 모듈 레지스트리 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | Terraform 모듈 레지스트리 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 버전화된 Terraform 상태 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 버전화된 Terraform 상태 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 외부 머지 요청 차이 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 외부 머지 요청 차이 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 파이프라인 아티팩트 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 파이프라인 아티팩트 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 페이지 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 페이지 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | CI 보안 파일 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | CI 보안 파일 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 사고 메트릭 이미지 (파일 시스템) | 지오 및 API/Managed | SHA256 체크섬 |
Blobs | 사고 메트릭 이미지 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 경보 메트릭 이미지 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 경보 메트릭 이미지 (객체 저장소) | 지오 및 API/Managed 2 | SHA256 체크섬 3 |
Blobs | 종속성 프록시 이미지 (파일 시스템) | 지오 및 API로 | SHA256 체크섬 |
Blobs | 종속성 프록시 이미지 (객체 저장소) | 지오 및 API/managed 2 | SHA256 체크섬 3 |
각주:
- Redis 복제는 Redis 센티널과 함께 HA의 일부로 사용될 수 있습니다. 이것은 지오 사이트 간에 사용되지 않습니다.
- 객체 저장소 복제는 지오나 객체 저장소 제공업체/장치의 기본 복제 기능으로 수행될 수 있습니다.
- 객체 저장소 검증은 feature flag
geo_object_storage_verification
에 따라 구현되며, 16.4에서 도입되었으며 기본적으로 활성화됩니다. 파일 크기의 체크섬을 사용하여 파일을 확인합니다.
### Git 저장소
GitLab 인스턴스는 하나 이상의 저장소 샤드를 가질 수 있습니다. 각 샤드에는 로컬로 저장된 Git 저장소에 대한 액세스 및 작업을 허용하는 Gitaly 인스턴스가 있습니다. 이 인스턴스는 다음과 같은 기계에서 실행할 수 있습니다.
- 단일 디스크가 장착된 기기에서.
- 하나로 마운트된 복수 디스크가 있는 기기에서 (RAID 배열과 같이).
- LVM을 사용하여.
GitLab은 특별한 파일 시스템을 필요로 하지 않으며, 마운트된 스토리지 장비와 함께 작동할 수 있습니다. 그러나 원격 파일 시스템을 사용할 때 성능 제약과 일관성 문제가 발생할 수 있습니다.
Geo는 Geo 이차 사이트에서 포크된 저장소를 중복으로 제거하기 위해 Gitaly에서 가비지 수집을 트리거합니다.
Gitaly gRPC API는 세 가지 동기화 방법을 사용하여 통신합니다.
- 특별한 인증을 사용하여 한 Geo 사이트에서 다른 사이트로 정기적으로 Git을 클론/페치하는 방법으로.
- 리포지토리 스냅샷을 사용하여 (첫 번째 방법이 실패하거나 리포지토리가 손상된 경우).
- '관리자' 영역에서의 수동 트리거 (위의 두 가지 방법의 조합).
각 프로젝트는 최대 3개의 다른 저장소를 가질 수 있습니다.
- 프로젝트 저장소: 소스 코드가 저장되는 위치입니다.
- 위키 저장소: 위키 콘텐츠가 저장되는 위치입니다.
- 디자인 저장소: 디자인 자산이 색인화되는 위치입니다 (실제 자산은 LFS에 있음).
모든 저장소는 동일한 샤드에 있으며 위키 및 디자인 저장소 경우에는 `-wiki` 및 `-design` 접미사와 함께 동일한 기본 이름을 공유합니다.
이외에도 스니펫 저장소가 있습니다. 이들은 프로젝트나 특정 사용자에 연결될 수 있습니다. 두 유형 모두 Geo 이차 사이트에 동기화됩니다.
### 블롭
GitLab은 파일 및 LFS 개체와 같은 블롭을 다음과 같이 저장합니다.
- 특정 위치에 파일 시스템.
- [객체 저장](../../object_storage.md) 솔루션. 객체 저장 솔루션은 다음과 같을 수 있습니다.
- 클라우드 기반으로 Amazon S3 및 Google Cloud Storage와 같이.
- MinIO와 같이 본인이 호스팅하는 경우.
- 객체 저장 호환 API를 노출하는 스토리지 장비.
객체 저장을 사용할 때 여러 노드를 사용할 경우 GitLab을 실행하기 위해 네트워크 마운트된 파일 시스템을 사용하세요.
복제 및 검증에 대해:
- 내부 API 요청을 사용하여 파일 및 블롭을 전송합니다.
- 객체 저장을 사용할 경우, 다음 중 하나를 선택할 수 있습니다:
- 클라우드 제공자 복제 기능을 사용합니다.
- GitLab이 대신 복제합니다.
### 데이터베이스
GitLab은 다양한 사용 사례에 대해 여러 데이터베이스에 저장된 데이터에 의존합니다. PostgreSQL은 Web 인터페이스에서 사용자가 생성한 콘텐츠(이슈 콘텐츠, 코멘트 및 권한, 자격 증명 등)에 대해 단일 진실의 지점입니다.
PostgreSQL은 HTML로 렌더링된 Markdown과 캐싱된 병합 요청 차이와 같은 일부 수준의 캐시된 데이터도 보유할 수 있습니다. 이 데이터는 객체 저장 장치로 오프로드되도록 구성할 수도 있습니다.
우리는 PostgreSQL의 자체 복제 기능을 사용하여 '주(primary)' 사이트에서 '이차(secondary)' 사이트로부터 데이터를 복제합니다.
우리는 Redis를 캐시 저장소로 사용하고 백그라운드 작업 시스템에서 지속적인 데이터를 보유하기 위해 사용합니다. 두 사용 사례 모두 동일한 Geo 사이트에서만 사용되는 데이터가 있기 때문에, 우리는 이를 사이트 사이에서 복제하지 않습니다.
Elasticsearch는 고급 검색을 위한 선택적 데이터베이스입니다. 이것은 소스 코드 수준뿐만 아니라 이슈, 병합 요청 및 토의에서 사용자 생성 콘텐츠의 검색을 개선할 수 있습니다. Elasticsearch는 Geo에서 지원되지 않습니다.
## 복제된 데이터 유형
### 기능 플래그 뒤에 있는 복제된 데이터 유형
일부 데이터 유형의 복제는 해당 기능 플래그 뒤에 있습니다.
> - 기능 플래그 뒤에 배포되었으며 기본적으로 활성화되어 있습니다.
> - GitLab.com에 활성화되어 있습니다.
> - 프로젝트 단위로 활성화 또는 비활성화할 수 없습니다.
> - 프로덕션 환경에서 추천됩니다.
> - GitLab 셀프 매니지드 인스턴스의 경우, GitLab 관리자는 [비활성화](#enable-or-disable-replication-for-some-data-types)할 수 있습니다.
#### 일부 데이터 유형에 대한 복제 활성화 또는 비활성화
일부 데이터 유형에 대한 복제는 **기본적으로 활성화된** 기능 플래그 뒤에 있습니다. [GitLab 레일즈 콘솔에 액세스](../../feature_flags.md)할 수 있는 GitLab 관리자는 인스턴스에서 이를 비활성화할 수 있습니다. 각 데이터 유형의 기능 플래그 이름은 아래 표의 노트 열에 나와 있습니다.
예를 들어, 패키지 파일 복제를 비활성화하려면:
```ruby
Feature.disable(:geo_package_file_replication)
패키지 파일 복제를 활성화하려면:
Feature.enable(:geo_package_file_replication)
경고: 이 목록에 있는 기능 또는 ‘복제’ 열에 No가 있는 기능은 이차 사이트로 복제되지 않습니다. 이러한 기능의 수동 복제 없이 장애 조치를 수행하면 데이터가 손실됩니다. 이차 사이트에서 이러한 기능을 사용하려면 또는 장애 조치를 성공적으로 실행하려면 이를 다른 방법으로 복제해야 합니다.
기능 | 복제 (GitLab 버전) | 검증 (GitLab 버전) | GitLab에서 관리되는 객체 저장 복제 (GitLab 버전) | GitLab에서 관리되는 객체 저장 검증 (GitLab 버전) | 노트 |
---|---|---|---|---|---|
PostgreSQL에 있는 응용 프로그램 데이터 | 예 (10.2) | 예 (10.2) | 해당 없음 | 해당 없음 | |
프로젝트 저장소 | 예 (10.2) | 예 (10.7) | 예 (16.4)3 | 예 (16.4)3 | 16.2에서 자체 서비스 프레임워크로 이관되었습니다. 세부 내용은 GitLab 이슈 #367925를 참조하십시오. 기능 플래그 geo_project_repository_replication 뒤에 있으며 (16.3)에 기본으로 활성화됩니다.archived projects를 포함하여 모든 프로젝트가 복제됩니다. |
프로젝트 위키 저장소 | 예 (10.2)2 | 예 (10.7)2 | 예 (16.4)3 | 예 (16.4)3 | 15.11에서 자체 서비스 프레임워크로 이관되었습니다. 세부 내용은 GitLab 이슈 #367925를 참조하십시오. |
그룹 위키 저장소 | 예 (13.10) | 예 (16.3) | 예 (16.4)3 | 예 (16.4)3 | 기능 플래그 geo_group_wiki_repository_replication 뒤에 있으며 기본으로 활성화됩니다.
|
업로드 | 예 (10.2) | 예 (14.6) | 예 (15.1) | 예 (16.4)3 | 복제는 기능 플래그 geo_upload_replication 뒤에 있으며 기본으로 활성화됩니다. 검증은 기능 플래그 geo_upload_verification 뒤에 있으며 14.8에서 제거되었습니다.
|
LFS 개체 | 예 (10.2) | 예 (14.6) | 예 (15.1) | 예 (16.4)3 | 11.11.x 및 12.0.x 버전의 GitLab은 새 LFS 객체가 복제되지 않는 버그에 영향을 받습니다. 복제는 기능 플래그 geo_lfs_object_replication 뒤에 있으며 기본으로 활성화됩니다. 검증은 14.7에서 제거되었습니다.
|
개인 스니펫 | 예 (10.2) | 예 (10.2) | 예 (16.4)3 | 예 (16.4)3 | |
프로젝트 스니펫 | 예 (10.2) | 예 (10.2) | 예 (16.4)3 | 예 (16.4)3 | |
CI 작업 아티팩트 | 예 (10.4) | 예 (14.10) | 예 (15.1) | 예 (16.4)3 | 검증은 기능 플래그 geo_job_artifact_replication 뒤에 있으며 14.10에서 기본으로 활성화되었습니다.
|
CI 파이프라인 아티팩트 | 예 (13.11) | 예 (13.11) | 예 (15.1) | 예 (16.4)3 | 파이프라인 완료 후 추가 아티팩트를 지속합니다. |
CI 보안 파일 | 예 (15.3) | 예 (15.3) | 예 (15.3) | 예 (16.4)3 | 검증은 기능 플래그 geo_ci_secure_file_replication 뒤에 있으며 15.3에서 기본으로 활성화되었습니다.
|
컨테이너 레지스트리 | 예 (12.3)1 | 예 (15.10) | 예 (12.3)1 | 예 (15.10) | 컨테이너 레지스트리 복제를 설정하는 지침을 참조하십시오. |
Terraform 모듈 레지스트리 | ** |