데이터 서비스를 실행하는 클러스터 노드의 이동 정보
GitHub Enterprise Server에 대한 클러스터 구성에서 개별 노드를 오프라인으로 전환해야 할 수 있습니다. 예를 들어 노드의 VM(가상 머신)을 대체해야 할 수 있습니다. 대체할 노드가 스토리지 계층에서 작동하는 경우 GitHub은(는) 먼저 노드의 데이터 서비스를 제거하도록 권장합니다. 이동을 통해 나머지 노드에 데이터의 최소 예상 복사본이 포함되도록 할 수 있습니다.
GitHub Enterprise Server의 노드 및 서비스 계층에 대한 자세한 내용은 “클러스터 노드 정보”을(를) 참조하세요.
Warning
- 노드를 교체하는 동안 데이터가 손실되는 것을 방지하기 위해 GitHub은(는) 노드를 오프라인으로 전환하기 전에 노드의 해당하는 데이터 서비스를 이동하도록 권장합니다.
- 클러스터의 모든 데이터 서비스에 대한 이중화를 보장하려면 3개 이상의 노드에 데이터 복사본이 있어야 합니다. 예를 들어 4개 이상의 노드가 Git 데이터를 저장하는 경우 이동하는 동안 이동된 리포지토리 데이터는 원래 노드에서 다른 3개의 노드로 이동합니다. 서비스에 대한 데이터를 저장하는 노드가 3개뿐인 경우 한 노드의 이동이 실패하고 복제본 데이터 부족이 발생할 수 있습니다.
데이터 서비스를 실행하는 클러스터 노드 이동
노드를 오프라인으로 전환하려고 하고 노드가 다음 역할을 하나라도 실행하는 경우 노드를 오프라인으로 전환하기 전에 해당하는 서비스를 이동합니다.
서비스 | 데이터 |
---|---|
git-server | 리포지토리 |
pages-server | GitHub Pages의 사이트 빌드 |
storage-server |
|
-
클러스터의 모든 노드에 대한 SSH입니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.
-
이동할 노드의 UUID를 찾으려면 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 이후 명령에 UUID를 사용합니다.
ghe-config cluster.HOSTNAME.uuid
-
노드의 해당하는 각 서비스에 대해 초기 데이터 수를 확인하려면 다음 명령을 실행합니다. 각 명령에 대해 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)
-
-
-
노드에서 해당하는 서비스를 이동하려면 다음 명령을 실행합니다. 각 명령에 대해 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
:-
다음 명령을 실행하여 노드의 서비스를 오프라인으로 전환합니다.
ghe-storage offline storage-server-UUID
-
다음 명령을 실행하여 노드를 이동합니다.
ghe-storage evacuate storage-server-UUID
-
-
-
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
-
-
서비스의 이동이 완료되면 노드를 종료합니다.