Skip to main content

리포지토리 캐시 구성

새 인스턴스를 만들고, 리포지토리 캐시를 기본 인스턴스에 연결하고, 리포지토리 네트워크의 복제를 리포지토리 캐시에 구성하여GitHub Enterprise Server에 대한 리포지지토리 캐시를 구성할 수 있습니다.

리포지토리 캐싱 구성 정보

리포지토리 캐시라는 특수한 유형의 복제본을 만들어 리포지토리 캐싱을 구성할 수 있습니다. 이제 리포지토리 캐시에 복제되는 리포지토리 네트워크를 결정하는 데이터 위치 정책을 설정할 수 있습니다.

리포지토리 캐싱은 클러스터링에서는 지원되지 않습니다.

리포지토리 캐시용 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에서 가져오기를 수행합니다.

리포지토리 캐시 구성

  1. 원하는 플랫폼에 새 GitHub Enterprise Server 인스턴스를 설정합니다. 이 인스턴스는 리포지토리 캐시가 됩니다. 자세한 내용은 "GitHub Enterprise Server 인스턴스 설정"을(를) 참조하세요.

  2. 기본 어플라이언스에서 암호와 일치하는 관리자 암호를 설정하고 계속 진행합니다.

  3. Click 복제본(replica) 노드 만들기.

  4. “새 SSH 키 추가”에서 SSH 키를 입력합니다.

  5. 키 추가를 클릭합니다.

  6. SSH를 사용하여 리포지토리 캐시의 IP 주소에 연결합니다.

    ssh -p 122 admin@REPLICA-IP
    
  7. 복제를 위한 키 쌍을 생성하려면 기본 어플라이언스의 IP 주소와 함께 ghe-repl-setup 명령을 사용하고 반환하는 퍼블릭 키를 복사합니다.

    ghe-repl-setup PRIMARY_IP
    
  8. 주 어플라이언스의 권한 있는 키 목록에 퍼블릭 키를 추가하려면 https://PRIMARY-HOSTNAME/setup/settings로 이동하여 복제본에서 복사한 키를 목록에 추가합니다.

  9. 기본에 대한 연결을 확인하고 리포지토리 캐시에 대해 복제본 모드를 사용하도록 설정하려면 ghe-repl-setup을 다시 실행합니다.

    • 리포지토리 캐시가 유일한 추가 노드인 경우 인수가 필요하지 않습니다.

      ghe-repl-setup PRIMARY-IP
      
    • 하나 이상의 기존 복제본 외에 리포지토리 캐시를 구성하는 경우 -a 또는 --add 인수를 사용합니다.

      ghe-repl-setup -a PRIMARY-IP
      
  10. 리포지토리 캐시를 구성하려면 ghe-repl-node 명령을 사용하고 필요한 매개 변수를 포함합니다.

    • 리포지토리 캐시에 cache-location을 설정하여 _CACHE-LOCATION_을 영숫자 식별자(예: 캐시가 배포된 지역)로 대체합니다. CACHE-LOCATION 값은 assets 또는 media과 같은 하위 도메인 격리에 사용하도록 예약된 하위 도메인 중 하나가 아니어야 합니다. 예약된 이름 목록은 "하위 도메인 격리 사용"을 참조하세요.

    • 리포지토리 캐시 대해 cache-domain 을 설정하고, _EXTERNAL-CACHE-DOMAIN_을 Git 클라이언트가 리포지토리 캐시에 액세스하는 데 사용할 호스트 이름으로 바꾸세요. cache-domain을 지정하지 않으면 GitHub Enterprise Server이(가) 인스턴스에 대해 구성된 호스트 이름 앞에 CACHE-LOCATION 값을 하위 도메인으로 추가합니다. 자세한 내용은 "인스턴스에 대한 호스트 이름 구성하기"을(를) 참조하세요.

    • 아직 설정하지 않은 경우 기본 및 복제본 어플라이언스에서 데이터 센터 이름을 설정하고 DC-NAME을 데이터 센터 이름으로 바꾸세요.

      ghe-repl-node --datacenter DC-NAME
      
    • 새 캐시는 동일한 데이터 센터의 다른 캐시에서 시딩을 시도합니다. 리포지토리 캐시의 datacenter를 설정하고, REPLICA-DC-NAME을 노드를 배포할 데이터 센터의 이름으로 바꾸세요.

    ghe-repl-node --cache CACHE-LOCATION --cache-domain EXTERNAL-CACHE-DOMAIN --datacenter REPLICA-DC-NAME
    
  11. 데이터 저장소의 복제를 시작하려면 ghe-repl-start 명령을 사용합니다.

    ghe-repl-start
    

    경고: ghe-repl-start는 사용자가 내부 서버 오류를 보는 동안 주 서버에서 잠시 중단됩니다. 친숙한 메시지를 제공하려면 복제본 노드에서 ghe-repl-start를 실행하기 전에 주 노드에서 ghe-maintenance -s를 실행하여 어플라이언스 유지 관리 모드로 전환합니다. 복제가 시작되면 ghe-maintenance -u로 유지 관리 모드를 사용하지 않도록 설정합니다. 주 노드가 유지 관리 모드에 있는 동안에는 Git 복제가 진행되지 않습니다.

  12. 각 데이터 저장소의 복제 채널 상태를 확인하려면 ghe-repl-status 명령을 사용합니다.

    ghe-repl-status
    
  13. 리포지토리 네트워크를 리포지토리 캐시로 복제할 수 있게 하려면 데이터 위치 정책을 설정해야 합니다. 자세한 내용은 "데이터 위치 정책"을 참조하세요.

데이터 위치 정책

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개 이상 존재할 수 없습니다.