О 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
.
-
Чтобы проверить, включена ли в данный момент 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
Во время выполнения конфигурации службы на ваш экземпляр GitHub Enterprise Server могут перезапуститься, что может привести к краткому простою для пользователей.
Shell ghe-config-apply
ghe-config-apply
-
Подождите завершения запуска конфигурации.
-
Чтобы убедиться, что Node Eligibility Service выполняется из любого узла, выполните следующую команду.
Shell nomad status nes
nomad status nes
Настройка параметров TTL для Node Eligibility Service
Чтобы определить, как Node Eligibility Service уведомляет вас, можно настроить параметры TTL для fail
и warn
состояний. TTL для fail
состояния должен быть выше, чем срок жизни для warn
состояния.
-
Чтобы проверить текущие параметры TTL, выполните следующую команду.
Shell nes get-node-ttl all
nes get-node-ttl all
-
Чтобы задать TTL для
fail
состояния, выполните следующую команду. Замените MINUTES числом минут, используемых для сбоев.Shell nes set-node-ttl fail MINUTES
nes set-node-ttl fail MINUTES
-
Чтобы задать TTL для
warn
состояния, выполните следующую команду. Замените 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 не может отключить узел.
- Чтобы настроить, может ли 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
состояния, а после того, как служба помечает узел как ineligible
, служба больше не обновит состояние работоспособности узла. Чтобы повторно включить узел для присоединения к кластеру, можно удалить ineligible
состояние с узла.
-
Чтобы проверить текущее
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.
-
Чтобы просмотреть журналы для Node Eligibility Service из любого узла в кластере, выполните следующую команду.
Shell nomad alloc logs -job nes
nomad alloc logs -job nes
-
Кроме того, можно просмотреть журналы для 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"
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
-