Node Eligibility Service 정보
GitHub Enterprise Server 클러스터에서 하드웨어 또는 소프트웨어 오류로 인해 개별 노드에 연결할 수 없게 될 수 있습니다. 시간이 지나면 노드의 상태를 복원하더라도 후속 데이터 동기화가 인스턴스의 성능에 부정적인 영향을 미칠 수 있습니다.
Node Eligibility Service을(를) 사용하여 노드 가용성 저하의 영향을 사전에 완화할 수 있습니다. 이 서비스는 클러스터 노드의 상태를 모니터링하고 노드가 너무 오랫동안 오프라인 상태인 경우 경고를 보냅니다. 오프라인 상태인 노드가 클러스터에 다시 조인하지 않도록 할 수도 있습니다. 필요에 따라 Node Eligibility Service이(가) 부적격 노드를 오프라인으로 전환하도록 허용할 수 있습니다.
기본적으로 Node Eligibility Service은(는) 사용하지 않도록 설정되어 있습니다. Node Eligibility Service을(를) 사용하도록 설정하면 인스턴스가 GitHub Enterprise Server의 관리 웹 UI와 일부 클러스터 관련 유틸리티(예: ghe-config-apply
및 ghe-cluster-diagnostics
)의 CLI 출력에 배너를 표시하여 비정상 노드를 경고합니다.
Node Eligibility Service을(를) 사용하면 개별 노드의 상태를 모니터링할 수 있습니다. 또한 클러스터의 전반적인 상태도 검토할 수 있습니다. 자세한 내용은 "클러스터의 상태 모니터링"을(를) 참조하세요.
클러스터 노드의 상태 및 자격 정보
경고를 표시할지 또는 클러스터의 구성을 자동으로 조정할지 여부를 결정하기 위해 Node Eligibility Service은(는) 각 노드의 상태를 지속적으로 모니터링합니다. 각 노드는 정기적으로 타임스탬프가 적용된 상태를 보고합니다. Node Eligibility Service은(는) 이 타임스탬프를 TTL(Time To Live) 기간과 비교합니다.
각 노드에는 성능 상태와 자격 상태가 있습니다.
- 상태는 클러스터 내 노드의 접근성을 의미하며 세 가지 가능한 상태(
healthy
,warning
또는critical
)가 있습니다. - 자격은 클러스터에서 노드가 작동할 수 있는 능력을 의미하며 두 가지 가능한 상태(
eligible
또는ineligible
)가 있습니다.
Node Eligibility Service은(는) 두 상태(warn
및 fail
)에 대해 구성 가능한 TTL 설정을 제공합니다.
warn
: 노드가 짧은 기간 동안 오프라인 상태였습니다. 이는 노드에 문제가 있으며 관리자가 조사할 필요가 있음을 나타낼 수 있습니다. 기본 설정은 15분입니다.fail
: 노드가 오랫동안 오프라인 상태였으며, 클러스터에 다시 추가하면 재동기화로 인해 성능 문제가 발생할 수 있습니다. 기본 설정은 60분입니다.
각 노드에 대해 Node Eligibility Service은(는) 다음과 같은 방법으로 클러스터에 참여하기 위한 상태 및 자격을 결정합니다.
- 노드가 정상으로 관찰된 경우 성능 상태는
healthy
이며 자격 상태는eligible
입니다. - 노드가
warn
TTL보다 긴 시간 동안 정상 상태로 관찰되지 않은 경우 성능 상태는warning
이며 자격 상태는eligible
입니다. - 노드가
fail
TTL보다 긴 시간 동안 정상 상태로 관찰되지 않은 경우 성능 상태는critical
이며 자격 상태는ineligible
입니다.
클러스터에 Node Eligibility Service 사용
기본적으로 Node Eligibility Service은(는) 사용하지 않도록 설정되어 있습니다. ghe-config
를 사용하여 app.nes.enabled
의 값을 설정함으로써 Node Eligibility Service을(를) 사용하도록 설정할 수 있습니다.
-
GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Node Eligibility Service이(가) 현재 사용하도록 설정되어 있는지 확인하려면 다음 명령을 실행합니다.
Shell ghe-config app.nes.enabled
ghe-config app.nes.enabled
-
Node Eligibility Service을(를) 사용하도록 설정하려면 다음 명령을 실행합니다.
Shell ghe-config app.nes.enabled true
ghe-config app.nes.enabled true
-
구성을 적용하려면 다음 명령을 실행합니다.
Note
구성을 실행하는 동안 의 서비스가 다시 시작될 수 있으므로 짧은 가동 중지 시간이 발생할 수 있습니다.
Shell ghe-config-apply
ghe-config-apply
-
구성 실행이 완료될 때까지 기다립니다.
-
Node Eligibility Service이(가) 실행 중인지 확인하려면 모든 노드에서 다음 명령을 실행합니다.
Shell nomad status nes
nomad status nes
Node Eligibility Service에 대한 TTL 설정 구성
Node Eligibility Service이(가) 사용자에게 알리는 방법을 결정하려는 경우 fail
및 warn
상태의 TTL 설정을 구성할 수 있습니다. fail
상태의 TTL은 warn
상태의 TTL보다 높아야 합니다.
-
GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
현재 TTL 설정을 확인하려면 다음 명령을 실행합니다.
Shell nes get-node-ttl all
nes get-node-ttl all
-
fail
상태의 TTL을 설정하려면 다음 명령을 실행합니다. MINUTES를 실패에 사용할 시간(분)으로 바꿉니다.Shell nes set-node-ttl fail MINUTES
nes set-node-ttl fail MINUTES
-
warn
상태의 TTL을 설정하려면 다음 명령을 실행합니다. MINUTES를 경고에 사용할 시간(분)으로 바꿉니다.Shell nes set-node-ttl warn MINUTES
nes set-node-ttl warn MINUTES
Node Eligibility Service에서 노드를 오프라인으로 전환할 수 있는지 여부 관리
기본적으로 Node Eligibility Service은(는) 클러스터 노드의 상태 변경을 알리는 경고를 제공합니다. 필요에 따라, 서비스에서 비정상 노드가 클러스터에 다시 조인할 수 없다고 판단될 경우 서비스가 노드를 오프라인으로 전환하도록 허용할 수 있습니다.
노드가 오프라인 상태가 되면 인스턴스는 노드에서 작업 할당을 제거합니다. 노드가 데이터 스토리지 서비스를 실행하는 경우 Node Eligibility Service은(는) 클러스터에 다시 조인할 수 없는 노드의 부적격성을 반영하도록 구성을 업데이트합니다.
Node Eligibility Service이(가) 노드 및 해당 서비스를 오프라인으로 전환할 수 있는지 여부를 관리하려는 경우 노드의 adminaction
상태를 구성할 수 있습니다. 노드가 approved
상태인 경우 Node Eligibility Service이(가) 노드를 오프라인으로 전환할 수 있습니다. 노드가 none
상태인 경우 Node Eligibility Service이(가) 노드를 오프라인으로 전환할 수 없습니다.
-
GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Node Eligibility Service이(가) 노드를 오프라인으로 전환할 수 있는지 여부를 구성하려면 다음 명령 중 하나를 실행합니다.
-
노드가 오프라인 상태가 될 경우 서비스가 자동으로 관리 작업을 수행하도록 하려면 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다.
Shell nes set-node-adminaction approved HOSTNAME
nes set-node-adminaction approved HOSTNAME
-
노드를 오프라인으로 전환하는 Node Eligibility Service의 능력을 철회하려면 다음 명령 중 하나를 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다.
Shell nes set-node-adminaction none HOSTNAME
nes set-node-adminaction none HOSTNAME
-
노드 상태의 개요 보기
Node Eligibility Service을(를) 사용하여 노드의 상태에 대한 개요를 보려면 다음 방법 중 하나를 사용합니다.
- 클러스터의 모든 노드에 SSH로 액세스한 다음
nes get-cluster-health
를 실행합니다. - 관리 콘솔의 "상태" 페이지로 이동합니다. 자세한 내용은 "관리 콘솔에 액세스"을(를) 참조하세요.
부적격 노드가 클러스터에 다시 조인할 수 있도록 설정
Node Eligibility Service에서 노드가 fail
상태의 TTL을 초과했음을 감지하고 서비스가 노드를 ineligible
로 표시한 후, 서비스는 더 이상 노드의 성능 상태를 업데이트하지 않습니다. 노드가 클러스터에 다시 조인할 수 있도록 설정하려면 노드에서 ineligible
상태를 제거하면 됩니다.
-
GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
노드의 현재
adminaction
상태를 검사하려면 다음 명령을 실행합니다. HOSTNAME을 부적격 노드의 호스트 이름으로 바꿉니다.Shell nes get-node-adminaction HOSTNAME
nes get-node-adminaction HOSTNAME
-
adminaction
상태가 현재approved
로 설정되어 있는 경우 다음 명령을 실행하여 상태를none
로 변경합니다. HOSTNAME을 부적격 노드의 호스트 이름으로 바꿉니다.Shell nes set-node-adminaction none HOSTNAME
nes set-node-adminaction none HOSTNAME
-
노드가 정상 상태인지 확인하려면 다음 명령을 실행하고 노드의 상태가
ready
인지 확인합니다.Shell nomad node status
nomad node status
-
노드의 상태가
ineligible
인 경우 SSH를 통해 노드에 연결하고 다음 명령을 실행하여 노드를 적격 상태로 만듭니다.Shell nomad node eligibility -enable -self
nomad node eligibility -enable -self
-
-
Node Eligibility Service에서 노드의 자격을 업데이트하려면 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다.
Shell nes set-node-eligibility eligible HOSTNAME
nes set-node-eligibility eligible HOSTNAME
-
30초 동안 기다렸다가 클러스터의 상태를 다음 명령을 실행하여 대상 노드가 적격 상태인지 확인합니다.
Shell nes get-cluster-health
nes get-cluster-health
Node Eligibility Service의 로그 보기
클러스터의 노드 또는 서비스를 실행하는 노드에서 Node Eligibility Service의 로그를 볼 수 있습니다. 지원 번들을 생성하면 로그가 포함됩니다. 자세한 내용은 "GitHub 지원에 데이터 제공"을(를) 참조하세요.
-
GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
클러스터의 노드에서 Node Eligibility Service의 로그를 보려면 다음 명령을 실행합니다.
Shell nomad alloc logs -job nes
nomad alloc logs -job nes
-
또는 서비스를 실행하는 노드에서 Node Eligibility Service의 로그를 볼 수도 있습니다. 서비스는 systemd 저널에 로그를 씁니다.
-
Node Eligibility Service을(를) 실행하는 노드를 확인하려면 다음 명령을 실행합니다.
Shell nomad job status "nes" | grep running | grep "${nomad_node_id}" | awk 'NR==2{ print $1 }' | xargs nomad alloc status | grep "Node Name"
nomad job status "nes" | grep running | grep "${nomad_node_id}" | awk 'NR==2{ print $1 }' | xargs nomad alloc status | grep "Node Name"
-
노드에서 로그를 보려면 SSH를 통해 노드에 연결한 후 다음 명령을 실행합니다.
Shell journalctl -t nes
journalctl -t nes
-
추가 참고 자료
- "명령줄 유틸리티"