AWS Route53을 활용한 위치 기반 Git 원격 URL
여러분은 GitLab 사용자에게 가장 가까운 Geo 사이트를 자동으로 사용하는 단일 원격 URL을 제공할 수 있습니다. 이는 사용자가 이동할 때 Git 설정을 업데이트할 필요가 없다는 것을 의미합니다.
이것이 가능한 이유는 Git 푸시 요청이 secondary 사이트에서 primary 사이트로 자동으로 리디렉션(HTTP) 또는 프록시(SSH)될 수 있기 때문입니다.
이 지침에서는 AWS Route53과 같은 다른 서비스인 Cloudflare를 사용할 수도 있습니다.
전제 조건
이 예에서는 이미 다음을 설정했습니다:
-
primary.example.com
을 Geo primary 사이트로 설정했습니다. -
secondary.example.com
을 Geo secondary 사이트로 설정했습니다.
우리는 요청을 자동으로 다음과 같이 전달하는 git.example.com
서브도메인을 만듭니다:
- 유럽에서는 secondary 사이트로부터의 요청.
- 다른 위치에서는 primary 사이트로부터의 요청.
어느 경우에도 다음이 필요합니다:
- 자체 주소에서 접근 가능한 작동 중인 GitLab primary 사이트.
- 작동 중인 GitLab secondary 사이트.
- 도메인을 관리하는 Route53 호스팅 영역.
아직 Geo primary 사이트 및 secondary 사이트를 설정하지 않은 경우 Geo 설정 지침을 참조하세요.
트래픽 정책 생성
Route53 호스팅 영역에서 트래픽 정책을 사용하여 다양한 라우팅 구성을 설정할 수 있습니다.
-
Route53 대시보드로 이동하여 트래픽 정책을 선택합니다.
-
트래픽 정책 생성을 선택합니다.
-
Policy Name 필드에
Single Git Host
를 입력하고 다음을 선택합니다. -
DNS type을
A: IPv4 형식의 IP 주소
로 남겨둡니다. -
연결 대상을 선택하고 Geolocation rule을 선택합니다.
- 첫 번째 위치는
기본(Default)
으로 남겨둡니다. - 연결 대상을 선택하고 새 엔드포인트을 선택합니다.
-
유형을
값(value)
으로 선택하고 자신의 primary IP 주소를 입력합니다. - 두 번째 위치는
유럽(Europe)
을 선택합니다. - 연결 대상을 선택하고 새 엔드포인트을 선택합니다.
-
유형을
값(value)
으로 선택하고 자신의 secondary IP 주소를 입력합니다. -
트래픽 정책 생성을 선택합니다.
-
Policy record DNS name에
git
을 입력하고 정책 레코드 생성을 선택합니다.
여러분은 지역에 따라 트래픽을 분산시키는 예를 들어 git.example.com
과 같은 단일 호스트를 성공적으로 설정했습니다!
Git 클론 URL을 특수 Git URL 사용하도록 구성
사용자가 처음으로 리포지터리를 복제할 때, 보통 프로젝트 페이지에서 Git 원격 URL을 복사합니다. 기본적으로 이러한 SSH 및 HTTP URL은 현재 호스트의 외부 URL을 기반으로 합니다. 예를 들면:
git@secondary.example.com:group1/project1.git
https://secondary.example.com/group1/project1.git
여러분은 다음을 사용자 정의할 수 있습니다:
- SSH 원격 URL을 위치 기반의
git.example.com
을 사용하도록 변경합니다. 이를 위해web 노드
의gitlab.rb
에서gitlab_rails['gitlab_ssh_host']
를 설정하여 SSH 원격 URL 호스트를 변경합니다. - HTTP 원격 URL은 HTTP(S)를 위한 사용자 정의 Git 복제 URL에 표시된 대로 수정합니다.
예제 Git 요청 처리 동작
위의 구성 단계를 따른 후, Git 요청 처리는 이제 위치를 고려합니다.
- 유럽 외부에서는 모든 요청이 primary 사이트로 전달됩니다.
- 유럽 내에서는:
- HTTP:
-
git clone http://git.example.com/foo/bar.git
은 secondary 사이트로 전달됩니다. -
git push
는 초기에 secondary로 전달되며, 자동으로primary.example.com
로 리디렉션됩니다.
-
- SSH:
-
git clone git@git.example.com:foo/bar.git
은 secondary로 전달됩니다. -
git push
는 초기에 secondary로 전달되며, 요청이 자동으로primary.example.com
로 프록시됩니다.
-
- HTTP: