AWS Route53을 사용한 위치인식 Git 원격 URL
GitLab 사용자에게 가장 가까운 Geo 사이트를 자동으로 사용하는 단일 원격 URL을 제공할 수 있습니다. 이는 사용자가 이동할 때 Git 설정을 업데이트할 필요가 없어진다는 것을 의미합니다.
이것은 Git push 요청이 secondary 사이트에서 primary 사이트로 자동으로 리디렉션(HTTP) 또는 프록시(SSH)될 수 있기 때문에 가능합니다.
이 지침은 AWS Route53을 사용하지만, Cloudflare와 같은 다른 서비스도 사용할 수 있습니다.
전제 조건
이 예제에서는 이미 다음을 설정했습니다:
-
primary.example.com
을 Geo primary 사이트로. -
secondary.example.com
을 Geo secondary 사이트로.
우리는 요청을 자동으로 다음과 같이 보냅니다: - Europe에서 secondary 사이트로. - 다른 모든 장소에서 primary 사이트로.
어찌되었든, 여러분은 다음을 필요로 합니다: - 접근 가능한 작동 중인 GitLab primary 사이트. - 작동 중인 GitLab secondary 사이트. - 도메인을 관리하는 Route53 호스팅 영역.
아직 Geo primary 사이트 및 secondary 사이트를 설정하지 않은 경우, Geos 설치 지침을 참조하십시오.
트래픽 정책 생성
Route53 호스트 영역에서 트래픽 정책을 사용하여 다양한 라우팅 구성을 설정할 수 있습니다.
-
Route53 대시 보드로 이동하고 트래픽 정책을 선택합니다.
-
트래픽 정책 생성을 선택합니다.
-
정책 이름 필드에
Single Git Host
를 입력하고 다음을 선택합니다. -
DNS 유형을
A: IPv4 형식의 IP 주소
로 남겨두십시오. -
연결 위치를 선택하고 지오프로세싱 규칙을 선택합니다.
- 첫 번째 위치를
기본값
으로 둡니다. - 연결 위치를 선택하고 새 엔드포인트를 선택합니다.
-
유형을
값
으로 선택하고 기본 IP 주소를 입력합니다. - 두 번째 위치를
유럽
으로 선택합니다. - 연결 위치를 선택하고 새 엔드포인트를 선택합니다.
-
유형을
값
으로 선택하고 secondary IP 주소를 입력합니다. -
트래픽 정책 생성을 선택합니다.
-
정책 레코드 DNS 이름에
git
을 입력하고 정책 레코드 생성을 선택합니다.
위 단계대로, Geo 사이트로의 트래픽을 분배하는 git.example.com
과 같은 단일 호스트를 성공적으로 설정했습니다!
특별한 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
을 사용합니다. 이를 위해 웹 노드의 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: