Skip to main content

데이터 서비스를 실행하는 클러스터 노드 이동

GitHub Enterprise Server 클러스터의 노드에서 분산된 데이터를 저장하는 서비스를 실행하는 경우 노드의 데이터를 제거하여 노드를 대체할 준비를 할 때 이중화를 보장할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

GitHub은(는) 클러스터링 자격을 결정하며 인스턴스의 라이선스 구성을 사용하도록 설정해야 합니다. 클러스터링은 신중하게 계획해야 하며 관리 오버헤드가 추가로 필요합니다. 자세한 내용은 "클러스터링 정보"을(를) 참조하세요.

데이터 서비스를 실행하는 클러스터 노드의 이동 정보

GitHub Enterprise Server에 대한 클러스터 구성에서 개별 노드를 오프라인으로 전환해야 할 수 있습니다. 예를 들어 노드의 VM(가상 머신)을 대체해야 할 수 있습니다. 대체할 노드가 스토리지 계층에서 작동하는 경우 GitHub은(는) 먼저 노드의 데이터 서비스를 제거하도록 권장합니다. 이동을 통해 나머지 노드에 데이터의 최소 예상 복사본이 포함되도록 할 수 있습니다.

GitHub Enterprise Server의 노드 및 서비스 계층에 대한 자세한 내용은 “클러스터 노드 정보”을(를) 참조하세요.

Warning

  • 노드를 교체하는 동안 데이터가 손실되는 것을 방지하기 위해 GitHub은(는) 노드를 오프라인으로 전환하기 전에 노드의 해당하는 데이터 서비스를 이동하도록 권장합니다.
  • 클러스터의 모든 데이터 서비스에 대한 이중화를 보장하려면 3개 이상의 노드에 데이터 복사본이 있어야 합니다. 예를 들어 4개 이상의 노드가 Git 데이터를 저장하는 경우 이동하는 동안 이동된 리포지토리 데이터는 원래 노드에서 다른 3개의 노드로 이동합니다. 서비스에 대한 데이터를 저장하는 노드가 3개뿐인 경우 한 노드의 이동이 실패하고 복제본 데이터 부족이 발생할 수 있습니다.

데이터 서비스를 실행하는 클러스터 노드 이동

노드를 오프라인으로 전환하려고 하고 노드가 다음 역할을 하나라도 실행하는 경우 노드를 오프라인으로 전환하기 전에 해당하는 서비스를 이동합니다.

서비스데이터
git-server리포지토리
pages-serverGitHub Pages의 사이트 빌드
storage-server
  • Git 대용량 파일 스토리지을(를) 사용하여 리포지토리에 저장된 데이터
  • 아바타 이미지
  • 웹 UI의 댓글 첨부 파일
  • 릴리스 아카이브
  1. 클러스터의 모든 노드에 대한 SSH입니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.

  2. 이동할 노드의 UUID를 찾으려면 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 이후 명령에 UUID를 사용합니다.

    ghe-config cluster.HOSTNAME.uuid
    
  3. 노드의 해당하는 각 서비스에 대해 초기 데이터 수를 확인하려면 다음 명령을 실행합니다. 각 명령에 대해 UUID를 이전 단계의 UUID로 바꿉니다.

    • git-server:

      • 명령:

        ghe-spokesctl server status git-server-UUID
        
      • 관련 출력: NETWORKS, GISTS

    • pages-server:

      • 명령:

        echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
        
    • storage-server:

      • 명령:

        ghe-storage evacuation-status storage-server-UUID
        
      • 관련 출력: Remaining item(s)

  4. 노드에서 해당하는 서비스를 이동하려면 다음 명령을 실행합니다. 각 명령에 대해 UUID를 이전 단계의 UUID로 바꿉니다.

    • git-server:

      • 명령(REASON FOR EVACUATION을 이동하는 사유로 바꿈):

        ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
        
    • pages-server:

      • 명령:

        ghe-dpages evacuate pages-server-UUID
        
    • storage-server:

      1. 다음 명령을 실행하여 노드의 서비스를 오프라인으로 전환합니다.

        ghe-storage offline storage-server-UUID
        
      2. 다음 명령을 실행하여 노드를 이동합니다.

        ghe-storage evacuate storage-server-UUID
        
  5. GitHub Enterprise Server이(가) 데이터를 복사하는 동안 서비스 이동을 모니터링하려면 다음 명령을 실행합니다. 각 명령에 대해 UUID를 이전 단계의 UUID로 바꿉니다.

    Warning

    이동이 완료될 때까지 노드를 종료하지 마세요. 데이터 수가 0에 도달하면 이동이 완료됩니다. 즉, 모든 데이터가 다른 노드에 안전하게 저장됩니다.

    • git-server:

      ghe-spokesctl server evac-status git-server-UUID
      
    • pages-server:

      echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
      
    • storage-server:

      ghe-storage evacuation-status storage-server-UUID
      
  6. 서비스의 이동이 완료되면 노드를 종료합니다.