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, а также в выходных данных CLI для некоторых служебных программ, связанных с кластером, таких как ghe-config-apply и ghe-cluster-diagnostics.

Node Eligibility Service позволяет отслеживать работоспособность отдельных узлов. Вы также можете отслеживать общую работоспособность кластера. Дополнительные сведения см. в разделе Мониторинг работоспособности кластера.

Сведения о работоспособности и правах узлов кластера

Чтобы определить, следует ли выдавать предупреждение или автоматически настраивать конфигурацию кластера, Node Eligibility Service постоянно отслеживает работоспособность каждого узла. Каждый узел регулярно сообщает состояние работоспособности с меткой времени, которое Node Eligibility Service сравнивается с длительностью времени жизни (TTL).

Каждый узел имеет состояние работоспособности и состояние соответствия.

  • Работоспособность относится к специальным возможностям узла в кластере и имеет три возможных состояния: healthy, warningили critical.
  • Доступность относится к способности узла работать в кластере и имеет два возможных состояния: eligible или ineligible.

Node Eligibility Service предоставляет настраиваемый параметр TTL для двух состояний и warn fail.

  • warn: узел находится в автономном режиме в течение короткого периода времени. Это может указывать на то, что не так с узлом, и что администраторы должны исследовать. Значение по умолчанию — 15 минут.
  • fail: узел находится в автономном режиме в течение длительного периода времени, а повторное введение в кластер может привести к проблемам с производительностью из-за повторной синхронизации. Значение по умолчанию — 60 минут.

Для каждого узла Node Eligibility Service определяет работоспособность и право на участие в кластере следующим образом.

  • Если узел был замечен как работоспособный, состояние работоспособности — healthy это состояние работоспособности и состояние eligibleсоответствия.
  • Если узел не был замечен работоспособным в течение длительного warn времени, чем срок жизни, состояние работоспособности и warning состояние соответствия.eligible
  • Если узел не был замечен работоспособным в течение длительного fail времени, чем срок жизни, состояние работоспособности и critical его состояние соответствия.ineligible

Включение Node Eligibility Service для кластера

По умолчанию Node Eligibility Service отключен. Вы можете включить Node Eligibility Service, задав значение для app.nes.enabled использования ghe-config.

  1. Чтобы проверить, включена ли в данный момент Node Eligibility Service, выполните следующую команду.

    Shell
    ghe-config app.nes.enabled
    
  2. Чтобы включить Node Eligibility Service, выполните следующую команду.

    Shell
    ghe-config app.nes.enabled true
    
  3. Чтобы применить конфигурацию, выполните следующую команду.

    Примечание. Во время выполнения конфигурации службы на ваш экземпляр GitHub Enterprise Server могут перезапуститься, что может привести к краткому простою для пользователей.

    Shell
    ghe-config-apply
    
  4. Подождите завершения запуска конфигурации.

  5. Чтобы убедиться, что Node Eligibility Service выполняется из любого узла, выполните следующую команду.

    Shell
    nomad status nes
    

Настройка параметров TTL для Node Eligibility Service

Чтобы определить, как Node Eligibility Service уведомляет вас, можно настроить параметры TTL для fail и warn состояний. TTL для fail состояния должен быть выше, чем срок жизни для warn состояния.

  1. Чтобы проверить текущие параметры TTL, выполните следующую команду.

    Shell
    nes get-node-ttl all
    
  2. Чтобы задать TTL для fail состояния, выполните следующую команду. Замените MINUTES числом минут, используемых для сбоев.

    Shell
    nes set-node-ttl fail MINUTES
    
  3. Чтобы задать TTL для warn состояния, выполните следующую команду. Замените 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. Чтобы настроить, может ли 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 состояния, а после того, как служба помечает узел как ineligible, служба больше не обновит состояние работоспособности узла. Чтобы повторно включить узел для присоединения к кластеру, можно удалить ineligible состояние с узла.

  1. Чтобы проверить текущее adminaction состояние узла, выполните следующую команду. Замените HOSTNAME именем узла недопустимого узла.

    Shell
    nes get-node-adminaction HOSTNAME
    
  2. adminaction Если в настоящее время задано approvedсостояние, измените состояние, none выполнив следующую команду. Замените HOSTNAME именем узла недопустимого узла.

    Shell
    nes set-node-adminaction none HOSTNAME
    
  3. Чтобы убедиться, что узел находится в работоспособном состоянии, выполните следующую команду и убедитесь, что состояние узла равно ready.

    Shell
    nomad node status
    
    • Если состояние узла равно ineligible, сделайте узел допустимым, подключив его к узлу через SSH и выполнив следующую команду.

      Shell
      nomad node eligibility -enable -self
      
  4. Чтобы обновить право узла в Node Eligibility Service, выполните следующую команду. Замените HOSTNAME именем узла.

    Shell
    nes set-node-eligibility eligible HOSTNAME
    
  5. Подождите 30 секунд, а затем проверьте работоспособность кластера, чтобы убедиться, что целевой узел имеет право, выполнив следующую команду.

    Shell
    nes get-cluster-health
    

Просмотр журналов для Node Eligibility Service

Журналы для Node Eligibility Service можно просматривать из любого узла в кластере или с узла, на котором выполняется служба. Если вы создаете пакет поддержки, будут включены журналы. Дополнительные сведения см. в разделе Предоставление данных для службы поддержки GitHub.

  1. Чтобы просмотреть журналы для Node Eligibility Service из любого узла в кластере, выполните следующую команду.

    Shell
    nomad alloc logs -job nes
    
  2. Кроме того, можно просмотреть журналы для Node Eligibility Service на узле, где выполняется служба. Служба записывает журналы в системный журнал.

    • Чтобы определить, какой узел запускает 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
      

Дополнительные материалы