Skip to main content

이 버전의 GitHub Enterprise는 다음 날짜에 중단되었습니다. 2024-03-26. 중요한 보안 문제에 대해서도 패치 릴리스가 이루어지지 않습니다. 더 뛰어난 성능, 향상된 보안, 새로운 기능을 위해 최신 버전의 GitHub Enterprise Server로 업그레이드합니다. 업그레이드에 대한 도움말은 GitHub Enterprise 지원에 문의하세요.

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

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

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

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

About evacuation of cluster nodes running data services

In a cluster configuration for GitHub Enterprise Server, you may need to take an individual node offline. For example, you may need to replace the node's virtual machine (VM). If the node you want to replace operates in the storage tier, GitHub recommends that you first evacuate the node's data services. Evacuation ensures that the remaining nodes contain the minimum expected copies of the data.

For more information about nodes and service tiers for GitHub Enterprise Server, see "About cluster nodes."

Warnings:

  • To avoid data loss during replacement of a node, GitHub strongly recommends evacuation of the applicable data services on the node before you take the node offline.

  • To ensure redundancy for any data service on your cluster, copies of data should exist on at least three nodes. For example, when four or more nodes store Git data, during evacuation, evacuated repository data will move from the node you're evacuating to the other three nodes. If you only have three nodes that store data for a service, evacuation of one node could fail and result in under-replicated data.

Evacuating a cluster node running data services

If you plan to take a node offline and the node runs any of the following roles, evacuate each applicable service before taking the node offline.

ServiceData
git-serverRepositories
pages-serverSite builds for GitHub Pages
storage-server
  • Data stored in repositories using Git Large File Storage
  • Avatar images
  • File attachments from comments in the web UI
  • Release archives
  1. SSH into any node in your cluster. For more information, see "Accessing the administrative shell (SSH)."

  2. To find the UUID of the node to evacuate, run the following command. Replace HOSTNAME with the node's hostname. You'll use the UUID in subsequent commands.

    ghe-config cluster.HOSTNAME.uuid
    
  3. For each applicable service on the node, to determine the initial data counts, run the following commands. For each command, replace UUID with the UUID from the previous step.

    • git-server:

      • Command:

        ghe-spokes evac-status git-server-UUID
        
      • Relevant output: Networks, Gists

    • pages-server:

      • Command:

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

      • Command:

        ghe-storage evacuation-status storage-server-UUID
        
      • Relevant output: Remaining item(s)

  4. To evacuate an applicable service on the node, run the following commands. For each command, replace UUID with the UUID from the earlier step.

    • git-server:

      • Command (replace REASON FOR EVACUATION with the reason for evacuation):

        ghe-spokes server evacuate git-server-UUID 'REASON FOR EVACUATION'
        
    • pages-server:

      • Command:

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

      1. Take the node's service offline by running the following command.

        ghe-storage offline storage-server-UUID
        
      2. Evacuate the node by running the following command.

        ghe-storage evacuate storage-server-UUID
        
  5. To monitor evacuation of a service while GitHub Enterprise Server copies the data, run the following commands. For each command, replace UUID with the UUID from the earlier step.

    Warning: Do not shut down the node until evacuation is complete. Evacuation is complete when the data counts reach zero, which means that all data is safely stored on other nodes.

    • git-server:

      ghe-spokes 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. After evacuation completes for the service, shut down the node.