Skip to main content

고가용성 복제본 만들기

활성/수동 구성에서 복제본 어플라이언스는 주 어플라이언스의 중복 복사본입니다. 고가용성 모드를 사용하면 주 어플라이언스에 장애가 발생할 경우 복제본이 주 어플라이언스 역할을 하여 서비스 중단을 최소화할 수 있습니다.

참고: GitHub Enterprise Server에 대해 최대 8개의 고가용성 복제본(수동 및 활성/지역 복제본 모두)이 허용됩니다.

고가용성 복제본 만들기

  1. 원하는 플랫폼에서 새 GitHub Enterprise Server 어플라이언스를 설정합니다. 복제본 어플라이언스는 기본 어플라이언스의 CPU, RAM 및 스토리지 설정을 미러링해야 합니다. 독립 환경에 복제본 어플라이언스를 설치하는 것이 좋습니다. 기본 하드웨어, 소프트웨어 및 네트워크 구성 요소는 기본 어플라이언스의 구성 요소와 격리되어야 합니다. 클라우드 공급자를 사용하는 경우 별도의 지역 또는 영역을 사용합니다. 자세한 내용은 “GitHub Enterprise Server 인스턴스 설정”을 참조하세요.

  2. 새 어플라이언스가 포트 122/TCP 및 1194/UDP를 통해 이 고가용성 환경의 다른 모든 어플라이언스와 통신할 수 있는지 확인합니다. 자세한 내용은 “네트워크 포트”를 참조하세요.

  3. 브라우저에서 새 복제본 어플라이언스의 IP 주소로 이동하여 GitHub Enterprise 라이선스를 업로드합니다.

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

  5. 복제본으로 구성을 클릭합니다. 새 인스턴스를 복제본으로 구성하는 링크가 있는 설치 옵션

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

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

  8. SSH를 사용하여 복제본 어플라이언스의 IP 주소로 연결합니다.

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

    $ ghe-repl-setup PRIMARY_IP
    1. 주 어플라이언스의 권한 있는 키 목록에 퍼블릭 키를 추가하려면 `https://PRIMARY-HOSTNAME/setup/settings`로 이동하여 복제본에서 복사한 키를 목록에 추가합니다.
  10. 기본에 대한 연결을 확인하고 새 복제본에 대해 복제본 모드를 사용하도록 설정하려면 ghe-repl-setup을 다시 실행합니다.

    $ ghe-repl-setup PRIMARY_IP
  11. 데이터 저장소의 복제를 시작하려면 ghe-repl-start 명령을 사용합니다.

    $ ghe-repl-start

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

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

지역 복제 복제본 만들기

이 예제 구성에서는 세 개의 서로 다른 지역에 있는 기본과 두 개의 복제본을 사용합니다. 세 노드는 서로 다른 네트워크에 있을 수 있지만 모든 노드는 다른 모든 노드에서 연결할 수 있어야 합니다. 최소한, 필요한 관리 포트는 다른 모든 노드에 열려 있어야 합니다. 포트 요구 사항에 대한 자세한 내용은 “네트워크 포트”를 참조하세요.

고가용성을 위해 활성 노드가 있는 네트워크와 수동 노드가 있는 네트워크 간의 대기 시간은 70밀리초 미만이어야 합니다. 두 네트워크 간에 방화벽을 구성하는 것은 권장되지 않습니다. 대기 시간이 70밀리초를 초과하는 경우 대신 캐시 복제본 노드를 사용하는 것이 좋습니다. 자세한 내용은 "리포지토리 캐시 구성"을 참조하세요.

  1. 첫 번째 복제본에서 ghe-repl-setup을 실행하여 표준 2개 노드 구성과 동일한 방식으로 첫 번째 복제본을 만듭니다.

    (replica1)$ ghe-repl-setup PRIMARY_IP
    (replica1)$ ghe-repl-start
  2. 두 번째 복제본을 만들고 ghe-repl-setup --add 명령을 사용합니다. --add 플래그는 기존 복제 구성을 덮어쓰지 못하게 하고 새 복제본을 구성에 추가합니다.

    (replica2)$ ghe-repl-setup --add PRIMARY_IP
    (replica2)$ ghe-repl-start
  3. 기본적으로 복제본은 동일한 데이터 센터로 구성되며, 이제 동일한 데이터 센터의 기존 노드에서 시드를 시도합니다. 데이터 센터 옵션에 대해 다른 값을 설정하여 다른 데이터 센터에 대한 복제본을 구성합니다. 값이 서로 다르다면 원하는 특정 값을 사용할 수 있습니다. 각 노드에서 ghe-repl-node 명령을 실행하고 데이터 센터를 지정합니다.

    기본:

    (primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME]

    첫 번째 복제본:

    (replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME]

    두 번째 복제본:

    (replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME]

    팁: --datacenter--active 옵션을 동시에 설정할 수 있습니다.

  4. 활성 복제본 노드는 어플라이언스 데이터 및 서비스 최종 사용자 요청의 복사본을 저장합니다. 비활성 노드는 어플라이언스 데이터의 복사본을 저장하지만 최종 사용자 요청을 처리할 수 없습니다. --active 플래그를 사용하여 활성 모드를 사용하도록 설정하거나 --inactive 플래그를 사용하여 비활성 모드를 사용하도록 설정합니다.

    첫 번째 복제본:

    (replica1)$ ghe-repl-node --active

    두 번째 복제본:

    (replica2)$ ghe-repl-node --active
  5. 구성을 적용하려면 기본에서 ghe-config-apply 명령을 사용합니다.

    (primary)$ ghe-config-apply

지역 복제를 위한 DNS 구성

기본 및 복제본 노드의 IP 주소를 사용하여 지역 DNS를 구성합니다. 기본 노드(예: primary.github.example.com)에 대한 DNS CNAME을 만들어 SSH를 통해 기본 노드에 액세스하거나 backup-utils를 통해 백업할 수도 있습니다.

테스트를 위해 로컬 워크스테이션의 hosts 파일(예: /etc/hosts)에 항목을 추가할 수 있습니다. 예제 항목은 replica2HOSTNAME에 대한 요청을 확인합니다. 다른 줄을 주석으로 처리하여 특정 호스트를 대상으로 지정할 수 있습니다.

# <primary IP>      HOSTNAME 
# <replica1 IP>     HOSTNAME 
<replica2 IP>     HOSTNAME 

추가 참고 자료