AWS Route53을 사용한 위치 인식 Git 원격 URL
GitLab v19.5Offering: GitLab Self-Managed
요약
GitLab Geo는 웹 UI와 API 트래픽을 포함한 위치 인식 DNS를 지원합니다. GitLab 사용자에게 가장 가까운 Geo 사이트를 자동으로 사용하는 단일 원격 URL을 제공할 수 있습니다. 이는 Git 푸시 요청이 보조 사이트에서 기본 사이트로 자동으로 리디렉션(HTTP)되거나 프록시(SSH)될 수 있기 때문입니다.
GitLab Geo는 웹 UI와 API 트래픽을 포함한 위치 인식 DNS를 지원합니다. 이 문서에서 설명하는 위치 인식 Git 원격 URL보다 해당 구성을 권장합니다.
GitLab 사용자에게 가장 가까운 Geo 사이트를 자동으로 사용하는 단일 원격 URL을 제공할 수 있습니다. 따라서 사용자는 이동하더라도 더 가까운 Geo 사이트를 활용하기 위해 Git 구성을 갱신할 필요가 없습니다.
이는 Git 푸시 요청이 보조 사이트에서 기본 사이트로 자동으로 리디렉션(HTTP)되거나 프록시(SSH)될 수 있기 때문입니다.
이 안내는 AWS Route53을 사용하지만, Cloudflare 같은 다른 서비스도 사용할 수 있습니다.
사전 요구 사항#
이 예시에서는 다음이 이미 설정되어 있습니다.
- Geo 기본 사이트로서의
primary.example.com. - Geo 보조 사이트로서의
secondary.example.com.
요청을 자동으로 전달하는 git.example.com 하위 도메인을
만듭니다.
- 유럽에서 오는 요청은 보조 사이트로 전달합니다.
- 그 밖의 모든 위치에서 오는 요청은 기본 사이트로 전달합니다.
어느 경우든 다음이 필요합니다.
- 자체 주소로 접근할 수 있는 정상 동작 중인 GitLab 기본 사이트.
- 정상 동작 중인 GitLab 보조 사이트.
- 도메인을 관리하는 Route53 호스팅 영역.
Geo 기본 사이트와 보조 사이트를 아직 설정하지 않았다면 Geo 설정 안내를 참고합니다.
트래픽 정책 생성#
Route53 호스팅 영역에서는 트래픽 정책으로 다양한 라우팅 구성을 설정할 수 있습니다.
-
Route53 대시보드로 이동해 Traffic policies를 선택합니다.

-
Create traffic policy를 선택합니다.

-
Policy Name 필드에
Single Git Host를 입력하고 Next를 선택합니다.
-
DNS type은
A: IP Address in IPv4 format으로 둡니다. -
Connect to를 선택하고 Geolocation rule을 선택합니다.

-
첫 번째 Location은
Default로 둡니다. -
Connect to를 선택하고 New endpoint를 선택합니다.
-
Type으로
value를 선택하고<your primary IP address>를 입력합니다. -
두 번째 Location으로
Europe을 선택합니다. -
Connect to를 선택하고 New endpoint를 선택합니다.
-
Type으로
value를 선택하고<your secondary IP address>를 입력합니다.
-
Create traffic policy를 선택합니다.

-
Policy record DNS name에
git를 입력합니다. -
Create policy records를 선택합니다.

이렇게 하면 지리적 위치에 따라 Geo 사이트로 트래픽을 분산하는 단일 호스트
(예: git.example.com)를 설정하게 됩니다.
특수 Git URL을 사용하도록 Git 클론 URL 구성#
사용자가 리포지터리를 처음 클론할 때는 보통 프로젝트 페이지에서 Git 원격 URL을 복사합니다. 기본적으로 이 SSH 및 HTTP URL은 현재 호스트의 외부 URL을 기준으로 합니다. 예를 들면 다음과 같습니다.
git@secondary.example.com:group1/project1.githttps://secondary.example.com/group1/project1.git

다음 항목을 사용자 지정할 수 있습니다.
- 위치 인식
git.example.com을 사용하도록 SSH 원격 URL을 변경합니다. 웹 노드의gitlab.rb에서gitlab_rails['gitlab_ssh_host']를 설정해 SSH 원격 URL 호스트를 변경합니다. - HTTP 원격 URL은 HTTP(S) 용 사용자 지정 Git 클론 URL에 설명된 대로 변경합니다.
Git 요청 처리 동작 예시#
앞에서 설명한 구성 단계를 수행하면 Git 요청 처리가 위치를 인식하게 됩니다. 요청은 다음과 같이 처리됩니다.
- 유럽 밖에서는 모든 요청이 기본 사이트로 전달됩니다.
- 유럽 안에서는 프로토콜별로 다음과 같습니다.
- HTTP:
git clone http://git.example.com/foo/bar.git은 보조 사이트로 전달됩니다.git push는 처음에 보조 사이트로 전달되며, 보조 사이트가 자동으로primary.example.com으로 리디렉션합니다.
- SSH:
git clone git@git.example.com:foo/bar.git은 보조 사이트로 전달됩니다.git push는 처음에 보조 사이트로 전달되며, 보조 사이트가 자동으로primary.example.com으로 요청을 프록시합니다.
- HTTP: