Skip to main content

노드 자격 서비스를 사용하여 클러스터 노드의 상태 모니터링

GitHub Enterprise Server 클러스터의 노드가 Node Eligibility Service을(를) 사용함으로써 문제를 일으킬 만큼 오랫동안 오프라인 상태였던 경우를 모니터링할 수 있습니다.

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

People with administrative SSH access to a GitHub Enterprise Server instance can monitor cluster nodes.

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

Node Eligibility Service 정보

GitHub Enterprise Server 클러스터에서 하드웨어 또는 소프트웨어 오류로 인해 개별 노드에 연결할 수 없게 될 수 있습니다. 시간이 지나면 노드의 상태를 복원하더라도 후속 데이터 동기화가 인스턴스의 성능에 부정적인 영향을 미칠 수 있습니다.

Node Eligibility Service을(를) 사용하여 노드 가용성 저하의 영향을 사전에 완화할 수 있습니다. 이 서비스는 클러스터 노드의 상태를 모니터링하고 노드가 너무 오랫동안 오프라인 상태인 경우 경고를 보냅니다. 오프라인 상태인 노드가 클러스터에 다시 조인하지 않도록 할 수도 있습니다. 필요에 따라 Node Eligibility Service이(가) 부적격 노드를 오프라인으로 전환하도록 허용할 수 있습니다.

기본적으로 Node Eligibility Service은(는) 사용하지 않도록 설정되어 있습니다. Node Eligibility Service을(를) 사용하도록 설정하면 인스턴스가 GitHub Enterprise Server의 관리 웹 UI와 일부 클러스터 관련 유틸리티(예: ghe-config-applyghe-cluster-diagnostics)의 CLI 출력에 배너를 표시하여 비정상 노드를 경고합니다.

Node Eligibility Service을(를) 사용하면 개별 노드의 상태를 모니터링할 수 있습니다. 또한 클러스터의 전반적인 상태도 검토할 수 있습니다. 자세한 내용은 클러스터의 상태 모니터링을(를) 참조하세요.

클러스터 노드의 상태 및 자격 정보

경고를 표시할지 또는 클러스터의 구성을 자동으로 조정할지 여부를 결정하기 위해 Node Eligibility Service은(는) 각 노드의 상태를 지속적으로 모니터링합니다. 각 노드는 정기적으로 타임스탬프가 적용된 상태를 보고합니다. Node Eligibility Service은(는) 이 타임스탬프를 TTL(Time To Live) 기간과 비교합니다.

각 노드에는 성능 상태와 자격 상태가 있습니다.

  • 상태는 클러스터 내 노드의 접근성을 의미하며 세 가지 가능한 상태(healthy, warning 또는 critical)가 있습니다.
  • 자격은 클러스터에서 노드가 작동할 수 있는 능력을 의미하며 두 가지 가능한 상태(eligible 또는 ineligible)가 있습니다.

Node Eligibility Service은(는) 두 상태(warnfail)에 대해 구성 가능한 TTL 설정을 제공합니다.

  • warn: 노드가 짧은 기간 동안 오프라인 상태였습니다. 이는 노드에 문제가 있으며 관리자가 조사할 필요가 있음을 나타낼 수 있습니다. 기본 설정은 15분입니다.
  • fail: 노드가 오랫동안 오프라인 상태였으며, 클러스터에 다시 추가하면 재동기화로 인해 성능 문제가 발생할 수 있습니다. 기본 설정은 60분입니다.

각 노드에 대해 Node Eligibility Service은(는) 다음과 같은 방법으로 클러스터에 참여하기 위한 상태 및 자격을 결정합니다.

  • 노드가 정상으로 관찰된 경우 성능 상태는 healthy이며 자격 상태는 eligible입니다.
  • 노드가 warnTTL보다 긴 시간 동안 정상 상태로 관찰되지 않은 경우 성능 상태는 warning이며 자격 상태는 eligible입니다.
  • 노드가 failTTL보다 긴 시간 동안 정상 상태로 관찰되지 않은 경우 성능 상태는 critical이며 자격 상태는 ineligible입니다.

클러스터에 Node Eligibility Service 사용

기본적으로 Node Eligibility Service은(는) 사용하지 않도록 설정되어 있습니다. ghe-config를 사용하여 app.nes.enabled의 값을 설정함으로써 Node Eligibility Service을(를) 사용하도록 설정할 수 있습니다.

  1. GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Node Eligibility Service이(가) 현재 사용하도록 설정되어 있는지 확인하려면 다음 명령을 실행합니다.

    Shell
    ghe-config app.nes.enabled
    
  3. Node Eligibility Service을(를) 사용하도록 설정하려면 다음 명령을 실행합니다.

    Shell
    ghe-config app.nes.enabled true
    
  4. 구성을 적용하려면 다음 명령을 실행합니다.

    Note

    구성을 실행하는 동안 의 서비스가 다시 시작될 수 있으므로 짧은 가동 중지 시간이 발생할 수 있습니다.

    Shell
    ghe-config-apply
    
  5. 구성 실행이 완료될 때까지 기다립니다.

  6. Node Eligibility Service이(가) 실행 중인지 확인하려면 모든 노드에서 다음 명령을 실행합니다.

    Shell
    nomad status nes
    

Node Eligibility Service에 대한 TTL 설정 구성

Node Eligibility Service이(가) 사용자에게 알리는 방법을 결정하려는 경우 failwarn 상태의 TTL 설정을 구성할 수 있습니다. fail 상태의 TTL은 warn 상태의 TTL보다 높아야 합니다.

  1. GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 현재 TTL 설정을 확인하려면 다음 명령을 실행합니다.

    Shell
    nes get-node-ttl all
    
  3. fail 상태의 TTL을 설정하려면 다음 명령을 실행합니다. MINUTES를 실패에 사용할 시간(분)으로 바꿉니다.

    Shell
    nes set-node-ttl fail MINUTES
    
  4. warn 상태의 TTL을 설정하려면 다음 명령을 실행합니다. MINUTES를 경고에 사용할 시간(분)으로 바꿉니다.

    Shell
    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이(가) 노드를 오프라인으로 전환할 수 없습니다.

  1. GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Node Eligibility Service이(가) 노드를 오프라인으로 전환할 수 있는지 여부를 구성하려면 다음 명령 중 하나를 실행합니다.

    • 노드가 오프라인 상태가 될 경우 서비스가 자동으로 관리 작업을 수행하도록 하려면 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다.

      Shell
      nes set-node-adminaction approved HOSTNAME
      
    • 노드를 오프라인으로 전환하는 Node Eligibility Service의 능력을 철회하려면 다음 명령 중 하나를 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다.

      Shell
      nes set-node-adminaction none HOSTNAME
      

노드 상태의 개요 보기

Node Eligibility Service을(를) 사용하여 노드의 상태에 대한 개요를 보려면 다음 방법 중 하나를 사용합니다.

  • 클러스터의 모든 노드에 SSH로 액세스한 다음 nes get-cluster-health를 실행합니다.
  • 관리 콘솔의 "상태" 페이지로 이동합니다. 자세한 내용은 관리 콘솔에 액세스을(를) 참조하세요.

부적격 노드가 클러스터에 다시 조인할 수 있도록 설정

Node Eligibility Service에서 노드가 fail 상태의 TTL을 초과했음을 감지하고 서비스가 노드를 ineligible로 표시한 후, 서비스는 더 이상 노드의 성능 상태를 업데이트하지 않습니다. 노드가 클러스터에 다시 조인할 수 있도록 설정하려면 노드에서 ineligible 상태를 제거하면 됩니다.

  1. GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 노드의 현재 adminaction 상태를 검사하려면 다음 명령을 실행합니다. HOSTNAME을 부적격 노드의 호스트 이름으로 바꿉니다.

    Shell
    nes get-node-adminaction HOSTNAME
    
  3. adminaction 상태가 현재 approved로 설정되어 있는 경우 다음 명령을 실행하여 상태를 none로 변경합니다. HOSTNAME을 부적격 노드의 호스트 이름으로 바꿉니다.

    Shell
    nes set-node-adminaction none HOSTNAME
    
  4. 노드가 정상 상태인지 확인하려면 다음 명령을 실행하고 노드의 상태가 ready인지 확인합니다.

    Shell
    nomad node status
    
    • 노드의 상태가 ineligible인 경우 SSH를 통해 노드에 연결하고 다음 명령을 실행하여 노드를 적격 상태로 만듭니다.

      Shell
      nomad node eligibility -enable -self
      
  5. Node Eligibility Service에서 노드의 자격을 업데이트하려면 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다.

    Shell
    nes set-node-eligibility eligible HOSTNAME
    
  6. 30초 동안 기다렸다가 클러스터의 상태를 다음 명령을 실행하여 대상 노드가 적격 상태인지 확인합니다.

    Shell
    nes get-cluster-health
    

Node Eligibility Service의 로그 보기

클러스터의 노드 또는 서비스를 실행하는 노드에서 Node Eligibility Service의 로그를 볼 수 있습니다. 지원 번들을 생성하면 로그가 포함됩니다. 자세한 내용은 GitHub 지원에 데이터 제공을(를) 참조하세요.

  1. GitHub Enterprise Server 인스턴스에 연결하려면 클러스터의 노드 중 하나에 SSH합니다. 워크스테이션에서 다음 명령을 실행합니다. HOSTNAME을 노드의 호스트 이름으로 바꿉니다. 자세한 내용은 "관리 셸(SSH)에 액세스"을(를) 참조하세요.

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 클러스터의 노드에서 Node Eligibility Service의 로그를 보려면 다음 명령을 실행합니다.

    Shell
    nomad alloc logs -job nes
    
  3. 또는 서비스를 실행하는 노드에서 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"
      
    • 노드에서 로그를 보려면 SSH를 통해 노드에 연결한 후 다음 명령을 실행합니다.

      Shell
      journalctl -t nes
      

추가 참고 자료