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하면 인스턴스는 관리 웹 UI GitHub Enterprise Server에 배너를 표시하고, 일부 클러스터 관련 유틸리티(예 ghe-config-apply``ghe-cluster-diagnostics: 및 )에 대한 CLI 출력을 표시하여 비정상 노드를 경고합니다.

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

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

경고를 내보내는지 또는 클러스터 Node Eligibility Service 의 구성을 자동으로 조정할지 여부를 확인하려면 각 노드의 상태를 지속적으로 모니터링합니다. 각 노드는 TTL(Time To Live) 기간과 비교하여 타임스탬프가 있는 상태를 Node Eligibility Service 정기적으로 보고합니다.

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

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

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

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

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

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

클러스터에 Node Eligibility Service 대해 사용

기본적으로 Node Eligibility Service가 비활성화되어 있습니다. 사용할 값을 app.nes.enabled 설정하여 사용하도록 설정할 Node Eligibility Service 수 있습니다ghe-config.

  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. 구성을 적용하려면 다음 명령을 실행합니다.

    참고

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

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

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

    Shell
    nomad status nes
    

에 대한 TTL 설정 구성 Node Eligibility Service

알릴 방법을 Node Eligibility Service 확인하려면 TTL 설정 failwarn 상태를 구성할 수 있습니다. 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 수 있습니다. 노드가 상태에 Node Eligibility Service 있는 경우 노드를 approved 오프라인으로 전환할 수 있습니다. 노드가 상태에 Node Eligibility Service 있는 경우 노드를 none 오프라인으로 전환할 수 없습니다.

  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
      

추가 참고 자료