리포지토리 캐싱 구성 정보
리포지토리 캐시라는 특수한 유형의 복제본을 만들어 리포지토리 캐싱을 구성할 수 있습니다. 이제 리포지토리 캐시에 복제되는 리포지토리 네트워크를 결정하는 데이터 위치 정책을 설정할 수 있습니다.
리포지토리 캐싱은 클러스터링에서는 지원되지 않습니다.
리포지토리 캐시용 DNS
주 인스턴스와 리포지토리 캐시는 DNS 이름이 달라야 합니다. 예를 들어 주 인스턴스가 github.example.com
에 있다면 캐시 이름을 europe-ci.github.example.com
이나 github.asia.example.com
으로 지정할 수 있습니다.
CI 머신이 주 인스턴스 대신 리포지토리 캐시에서 가져오게 하려면 Git의 url.<base>.insteadOf
구성 설정을 사용하면 됩니다. 자세한 내용은 Git 설명서의 git-config
를 참조하세요.
예를 들어 CI 머신의 전역 .gitconfig
는 이러한 줄을 포함합니다.
[url "https://europe-ci.github.example.com/"]
insteadOf = https://github.example.com/
이후 https://github.example.com/myorg/myrepo
를 패치하라는 지시를 받으면 Git는 https://europe-ci.github.example.com/myorg/myrepo
에서 가져오기를 수행합니다.
리포지토리 캐시 구성
-
원하는 플랫폼에서 새 GitHub Enterprise Server 인스턴스를 설정합니다. 이 인스턴스는 리포지토리 캐시가 됩니다. 자세한 내용은 "GitHub Enterprise Server 인스턴스 설정"을 참조하세요.
-
기본 어플라이언스에서 암호와 일치하는 관리자 암호를 설정하고 계속 진행합니다.
-
복제본으로 구성을 클릭합니다.
-
“새 SSH 키 추가”에서 SSH 키를 입력합니다.
-
키 추가를 클릭합니다.
-
SSH를 사용하여 리포지토리 캐시의 IP 주소에 연결합니다.
ssh -p 122 admin@REPLICA-IP
-
복제를 위한 키 쌍을 생성하려면 기본 어플라이언스의 IP 주소와 함께
ghe-repl-setup
명령을 사용하고 반환하는 퍼블릭 키를 복사합니다.ghe-repl-setup PRIMARY_IP
-
주 어플라이언스의 권한 있는 키 목록에 퍼블릭 키를 추가하려면
https://PRIMARY-HOSTNAME/setup/settings
로 이동하여 복제본에서 복사한 키를 목록에 추가합니다. -
기본에 대한 연결을 확인하고 리포지토리 캐시에 대해 복제본 모드를 사용하도록 설정하려면
ghe-repl-setup
을 다시 실행합니다.-
리포지토리 캐시가 유일한 추가 노드인 경우 인수가 필요하지 않습니다.
ghe-repl-setup PRIMARY-IP
-
하나 이상의 기존 복제본 외에 리포지토리 캐시도 구성하는 경우
--add
또는-a
인수를 사용합니다.ghe-repl-setup -a PRIMARY-IP
-
-
리포지토리 캐시를 구성하려면
ghe-repl-node
명령을 사용하고 필요한 매개 변수를 포함합니다.-
리포지토리 캐시에
cache-location
을 설정하여 _CACHE-LOCATION_을 영숫자 식별자(예: 캐시가 배포된 지역)로 대체합니다. CACHE-LOCATION 값은assets
,media
등 하위 도메인 격리에 사용하도록 예약된 하위 도메인 중 하나가 아니어야 합니다. 예약된 이름의 목록은 “하위 도메인 격리 사용”을(를) 참조하세요. -
_EXTERNAL-CACHE-DOMAIN_을 Git 클라이언트가 리포지토리 캐시에 액세스하는 데 사용할 호스트 이름으로 바꿔 리포지토리 캐시에 대해
cache-domain
을 설정합니다.cache-domain
을 지정하지 않으면 GitHub Enterprise Server이(가) 인스턴스에 대해 구성된 호스트 이름 앞에 CACHE-LOCATION 값을 하위 도메인으로 추가합니다. 자세한 내용은 "인스턴스에 대한 호스트 이름 구성하기"을 참조하세요. -
아직 설정하지 않은 경우 DC-NAME을 데이터 센터 이름으로 바꿔 기본 및 복제본 어플라이언스에서 데이터 센터 이름을 설정합니다.
ghe-repl-node --datacenter DC-NAME
-
새 캐시는 동일한 데이터 센터의 다른 캐시에서 시딩을 시도합니다. REPLICA-DC-NAME을 노드를 배포하는 데이터 센터의 이름으로 바꿔 리포지토리 캐시에 대해
datacenter
를 설정합니다.
ghe-repl-node --cache CACHE-LOCATION --cache-domain EXTERNAL-CACHE-DOMAIN --datacenter REPLICA-DC-NAME
-
-
데이터 저장소의 복제를 시작하려면
ghe-repl-start
명령을 사용합니다.ghe-repl-start
경고:
ghe-repl-start
는 사용자가 내부 서버 오류를 보는 동안 주 서버에서 잠시 중단됩니다. 친숙한 메시지를 제공하려면 복제본 노드에서ghe-repl-start
를 실행하기 전에 주 노드에서ghe-maintenance -s
를 실행하여 어플라이언스 유지 관리 모드로 전환합니다. 복제가 시작되면ghe-maintenance -u
로 유지 관리 모드를 사용하지 않도록 설정합니다. 주 노드가 유지 관리 모드에 있는 동안에는 Git 복제가 진행되지 않습니다. -
각 데이터 저장소의 복제 채널 상태를 확인하려면
ghe-repl-status
명령을 사용합니다.ghe-repl-status
-
리포지토리 네트워크를 리포지토리 캐시로 복제할 수 있게 하려면 데이터 위치 정책을 설정해야 합니다. 자세한 내용은 "데이터 위치 정책"을 참조하세요.
데이터 위치 정책
spokesctl cache-policy
명령으로 리포지토리에 대한 데이터 위치 정책을 구성하면 데이터 지역성을 제어할 수 있습니다. 데이터 위치 정책은 어떤 리포지토리 네트워크가 어떤 리포지토리 캐시에 복제되는지를 결정합니다. 기본적으로 데이터 위치 정책이 구성되기 전에는 리포지토리 네트워크가 리포지토리 캐시에 복제되지 않습니다.
데이터 위치 정책은 Git 콘텐츠에만 영향을 미칩니다. 문제 및 끌어오기 요청 주석과 같은 데이터베이스의 콘텐츠는 정책에 관계없이 모든 노드에 복제됩니다.
참고: 데이터 위치 정책은 액세스 제어와 동일하지 않습니다. 리포지토리에 액세스할 수 있는 사용자를 리포지토리 역할을 이용해 제어해야 합니다. 리포지토리 역할에 대한 자세한 내용은 "조직의 리포지토리 역할"을(를) 참조하세요.
--default
플래그를 사용하여 모든 네트워크를 복제하도록 정책을 구성할 수 있습니다. 예를 들어 이 명령은 모든 리포지토리 네트워크의 단일 복사본을 cache_location
이 "캔자스"인 리포지토리 캐시 집합에 복제하는 정책을 만듭니다.
ghe-spokesctl cache-policy set --default 1 kansas
리포지토리 네트워크에 대한 복제를 구성하려면 네트워크의 루트인 리포지토리를 지정합니다. 리포지토리 네트워크에는 리포지토리 및 리포지토리의 모든 포크가 포함됩니다. 전체 네트워크를 복제하지 않고 네트워크의 일부를 복제할 수를 없습니다.
ghe-spokesctl cache-policy set <owner/repository> 1 kansas
네트워크의 복제본 수를 0으로 지정하면 모든 네트워크를 복제하고 특정 네트워크를 제외하는 정책을 재정의할 수 있습니다. 예를 들어 이 명령은 "캔자스" 위치에 있는 모든 리포지토리 캐시에 해당 네트워크의 복사본이 포함될 수 없다고 지정합니다.
ghe-spokesctl cache-policy set <owner/repository> 0 kansas
해당 캐시 위치에는 복제본이 2개 이상 존재할 수 없습니다.