지리 검증 테스트

Tier: Premium, Ultimate Offering: Self-managed

Geo 팀은 Geo가 GitLab의 마이너 버전 및 PostgreSQL 데이터베이스의 주요 버전 간의 업그레이드 시 정상 작동하는지 확인하기 위해 일반 배포 구성에 대한 수동 테스트 및 검증을 수행합니다.

이 섹션에는 검증 테스트의 기록과 관련 문제에 대한 링크가 포함되어 있습니다.

GitLab 업그레이드

다음은 수행한 GitLab 업그레이드 검증 테스트입니다.

2020년 7월

Geo 다중 노드 설치 업그레이드:

Geo 주요 사이트에서 repmgr에서 Patroni로 전환:

  • 설명: 다중 노드 Geo 주요 사이트에서 repmgr에서 Patroni로 전환하는 것을 테스트했습니다. 오케스트레이터 도구를 사용하여 repmgr로 관리되는 3개의 데이터베이스 노드가 있는 Geo 설치를 배포했습니다. 이러한 접근 방식을 통해 Patroni 및 PostgreSQL 11로 Geo 설치 확인과 관련된 문제를 해결할 수 있었습니다.
  • 결과: 부분적인 성공. 주요 사이트에서 Patroni를 활성화하고 보조 사이트에서 데이터베이스 복제를 설정했습니다. 그러나 Patroni가 재시작될 때마다 보조 사이트의 복제 슬롯이 삭제된다는 것을 발견했습니다. 또 다른 문제는 Patroni가 클러스터에서 새로운 리더를 선출할 때 보조 사이트가 자동으로 새로운 리더를 따르지 않는 것입니다. 이러한 문제가 해결되기 전까지는 Geo 설치에 대한 Patroni를 공식적으로 지원하고 추천할 수 없습니다.
  • 후속 이슈/조치:

2020년 6월

Geo 다중 노드 설치 업그레이드:

Geo 다중 노드 설치 업그레이드:

2020년 2월

Geo 다중 노드 설치 업그레이드:

  • 설명: 다중 노드 구성에서 GitLab 12.7.5에서 최신 GitLab 12.8 패키지로 업그레이드 테스트를 수행했습니다.
  • 결과: 데모 중 다운타임 모니터링을 위해 루프 파이프라인을 실행하지 않았기 때문에 부분 성공.

2020년 1월

Geo 다중 노드 설치 업그레이드:

Geo 다중 노드 설치 업그레이드:

Geo 다중 노드 설치 업그레이드:

2019년 10월

Geo 다중 노드 설치 업그레이드:

  • 설명: 다중 노드 구성에서 GitLab 12.3.5에서 GitLab 12.4.1로 업그레이드 테스트를 수행했습니다.
  • 결과: 업그레이드 테스트가 성공적이었습니다.

Geo 다중 노드 설치 업그레이드:

  • 설명: GitLab 12.2.8에서 GitLab 12.3.5로 업그레이드 테스트를 수행했습니다.
  • 결과: 업그레이드 테스트가 성공적이었습니다.

Geo 다중 노드 설치 업그레이드:

  • 설명: GitLab 12.1.9에서 GitLab 12.2.8로 업그레이드 테스트를 수행했습니다.
  • 결과: 구성 문제 가능성으로 인해 부분 성공.

PostgreSQL 업그레이드

다음은 우리가 수행한 PostgreSQL 업그레이드 검증 테스트입니다.

2021년 9월

PostgreSQL 13을 사용한 Geo 설치 확인:

  • 설명: GitLab 14.1에서 선택적 버전으로 제공되는 PostgreSQL 13을 사용할 때 Geo와 함께 GitLab의 신규 설치를 테스트했습니다.
  • 결과: GitLab 환경 툴킷을 사용하여 Geo 및 PostgreSQL 13 환경을 성공적으로 구성하고, 장애 없이 환경에 대해 Geo QA 테스트를 수행했습니다.

2020년 9월

Geo 설치를 위한 PostgreSQL 12 업그레이드 확인:

  • 설명: GitLab 13.3에서 PostgreSQL 12가 선택적 버전으로 제공됨에 따라 기존 Geo 설치를 PostgreSQL 11에서 12로 업그레이드하는 테스트를 수행했습니다. PostgreSQL 12를 지원하기 위한 수정이 이루어진 후 GPS와 함께 GitLab의 새로운 설치도 재테스트했습니다. 이 테스트는 GitLab 13.4의 야간 빌드를 사용하여 수행되었습니다.

  • 결과: 기본 및 보조 데이터베이스 노드가 있는 Geo 배포에 대한 테스트는 성공적이었습니다. Geo 기본에서 repmgr 및 Patroni가 관리하는 PostgreSQL 클러스터와 관련된 알려진 문제에 직면했습니다. PostgreSQL 12를 기본에 있는 데이터베이스 클러스터와 함께 사용하는 것은 문제가 해결될 때까지 권장되지 않습니다.

  • PostgreSQL 클러스터의 알려진 문제:

2020년 8월

PostgreSQL 12로 Geo 설치 확인:

2020년 4월

Geo 설치를 위한 PostgreSQL 11 업그레이드 절차:

PostgreSQL 11로 Geo 설치 확인:

  • 설명: PostgreSQL 11을 GitLab 12.10의 기본 PostgreSQL 버전으로 설정하기 전에, PostgreSQL 11로 설치된 Geo와 함께 GitLab 12.9의 새로운 설치를 테스트했습니다.

  • 결과: 설치 테스트는 성공적이었습니다.

2019년 9월

Geo를 위한 PostgreSQL 10.0 업그레이드 테스트 및 검증:

객체 저장소 복제 테스트

다음은 우리가 수행한 추가 검증 테스트입니다.

2022년 4월

AWS 기반 객체 저장소를 사용한 객체 저장소 복제 검증:

  • 설명: AWS 기반 객체 저장소 복제 및 GitLab 기반 객체 저장소 복제를 사용할 때, 단일 이미지가 기본 객체 저장소 위치에서 보조 객체 저장소 위치로 복제되는 데 걸리는 평균 시간을 테스트했습니다. 이는 기본 사이트에 있는 프로젝트에 매초마다 1MB 이미지를 60초 동안 업로드하여 테스트했습니다. 그런 다음 보조 사이트에서 이미지가 사용 가능해질 때까지 시간을 측정했습니다. 이는 루비 스크립트를 사용하여 수행되었습니다.

  • 결과: AWS 관리 복제를 사용할 때, 사이트 간 이미지 복제에 걸리는 평균 시간은 약 49초입니다. 이는 사이트가 같은 지역에 있을 때와 더 멀리 떨어져 있을 때 (유럽에서 미국으로) 모두에 해당합니다. Geo 관리 복제를 같은 지역 내에서 사용할 때는 평균 복제 시간이 5초에 불과했지만, 지역 간 복제로는 평균 시간이 33초로 상승했습니다.

GCP 기반 객체 저장소를 사용한 객체 저장소 복제 검증:

  • 설명: GCP 기반 객체 저장소 복제 및 GitLab 기반 객체 저장소 복제를 사용할 때, 단일 이미지가 기본 객체 저장소 위치에서 보조 객체 저장소 위치로 복제되는 데 걸리는 평균 시간을 테스트했습니다. 이는 기본 사이트에 있는 프로젝트에 매초마다 1MB 이미지를 60초 동안 업로드하여 테스트했습니다. 그런 다음 보조 사이트에서 이미지가 사용 가능해질 때까지 시간을 측정했습니다. 이는 루비 스크립트를 사용하여 수행되었습니다.

  • 결과: GCP는 복제를 다른 클라우드 공급자와 다르게 처리합니다. GCP에서는 단일 버킷을 생성하는 과정이 있으며, 이 버킷은 다중, 이중 또는 단일 지역 기반입니다. 이는 선택한 옵션에 따라 자동으로 지역에 복제본을 저장합니다. 다중 지역을 사용할 때도, 이는 단일 대륙에서만 복제되며, 선택지는 미국, 유럽 또는 아시아입니다. 현재 GCP 기반 복제를 사용하여 대륙 간 객체를 복제할 수 있는 방법은 없는 것 같습니다. Geo 관리 복제를 사용할 때 같은 지역에서 복제할 때 평균 시간은 6초였으며, 지역 간 복제 시에는 9초로 상승했습니다.

2022년 1월

Azure 기반 객체 스토리지를 사용하여 객체 스토리지 복제를 검증합니다.:

  • 설명: Azure 기반 객체 스토리지 복제를 사용하여 기본 객체 스토리지 위치에서 보조 위치로 단일 이미지가 복제되는 평균 시간을 테스트했습니다. GitLab 기반 객체 스토리지 복제를 사용하여, 매초 1MB 이미지를 기본 사이트의 프로젝트에 60초 동안 업로드하여 테스트했습니다. 그런 다음 보조 사이트에서 이미지를 사용할 수 있을 때까지 시간을 측정했습니다. 이는 Ruby 스크립트를 사용하여 달성되었습니다.

  • 결과: Azure 기반 복제를 사용할 때 기본 객체 스토리지에서 보조로 복제되는 이미지의 평균 시간이 40초로 기록되었으며, 가장 긴 복제 시간은 70초, 가장 짧은 시간은 11초였습니다. GitLab 기반 복제를 사용할 때 복제를 완료하는 평균 시간은 5초였으며, 가장 긴 복제 시간은 10초, 가장 짧은 시간은 3초였습니다.

  • 후속 이슈:

2021년 5월

객체 스토리지 복제를 활성화한 상태에서 테스트 페일오버:

  • 설명: 테스트 당시 Geo의 객체 스토리지 복제 기능은 베타 상태였습니다. 우리는 객체 스토리지 복제가 의도한 대로 작동하는지와 페일오버 후 새로운 기본 위치에 데이터가 존재하는지 테스트했습니다.

  • 결과: 테스트 성공. 객체 스토리지의 데이터가 복제되어 페일오버 후에도 존재했습니다.

  • 후속 이슈:

기타 테스트

2020년 8월

Geo 배포에서 Gitaly 클러스터 테스트:

  • 설명: 기본 및 보조 Geo 사이트 모두에 구성된 Gitaly 클러스터가 있는 Geo 배포를 테스트했습니다. 기본 Geo 사이트에서 자동 Gitaly 클러스터 페일오버를 트리거하고 종단 간 Geo 테스트를 실행했습니다. 그런 다음 보조 Geo 사이트에서 Gitaly 클러스터 페일오버를 트리거하고 종단 간 Geo 테스트를 다시 실행했습니다.

  • 결과: 기본 사이트에서 Gitaly 클러스터 페일오버 이전 및 이후, 보조 사이트에서 Gitaly 클러스터 페일오버 이전 및 이후의 성공적인 종단 간 테스트.