Sobre Node Eligibility Service
Em um GitHub Enterprise Server cluster, um nó individual pode se tornar inacessível por outros nós devido a uma falha de hardware ou software. Ao longo do tempo, mesmo que você restaure a integridade do nó, a sincronização subsequente dos dados poderá afetar negativamente o desempenho da instância.
Você pode reduzir proativamente o impacto da redução da disponibilidade do nó usando Node Eligibility Service. Esse serviço monitora o estado dos nós do cluster e emite um aviso quando um nó está offline por muito tempo. Também é possível impedir que um nó offline reingresse no cluster. Opcionalmente, você pode permitir colocar Node Eligibility Service nós inelegíveis offline.
Por padrão, Node Eligibility Service está desabilitado. Se você habilitar Node Eligibility Service, sua instância alertará você sobre nós não íntegros exibindo uma faixa na interface do usuário da Web administrativa para GitHub Enterprise Servere na saída da CLI para alguns utilitários relacionados ao cluster, como ghe-config-apply e ghe-cluster-diagnostics.
Node Eligibility Service permite monitorar a integridade de nós individuais. Também é possível monitorar a integridade geral do cluster. Para saber mais, confira Monitorar a saúde do cluster.
Sobre a integridade e a qualificação de nós de cluster
Para determinar se deseja emitir um aviso ou ajustar automaticamente a configuração do cluster, Node Eligibility Service monitora continuamente a integridade de cada nó. Cada nó relata regularmente um estado de integridade com carimbo de data/hora, que Node Eligibility Service se compara a uma duração de TTL (Vida Útil).
Cada nó tem um estado de integridade e um estado de qualificação.
- Integridade refere-se à acessibilidade do nó dentro do cluster e tem três estados possíveis:
healthy,warningoucritical. - Elegibilidade refere-se à capacidade do nó de operar no cluster e possui dois estados possíveis:
eligibleouineligible.
Node Eligibility Service fornece uma configuração TTL configurável para dois estados warn e fail.
warn: o nó ficou offline por um curto período de tempo. Isso pode indicar que há algo errado com o nó e que os administradores devem investigar. A configuração padrão é 15 minutos.fail: o nó ficou offline por um longo período de tempo e a reintrodução no cluster pode causar problemas de desempenho devido à ressincronização. A configuração padrão é 60 minutos.
Para cada nó, Node Eligibility Service determina a integridade e a qualificação para participação no cluster das seguintes maneiras.
- Se foi observado que um nó está íntegro, o estado de integridade é
healthye o estado de qualificação éeligible. - Se um nó não está íntegro por mais tempo do que o TTL de
warn, o estado de integridade éwarninge o estado de qualificação éeligible. - Se um nó não foi considerado íntegro por mais tempo do que o TTL de
fail, o estado de integridade écriticale o estado de qualificação éineligible.
Habilitando Node Eligibility Service para seu cluster
Por padrão, Node Eligibility Service está desabilitado. Você pode habilitar Node Eligibility Service definindo o valor para app.nes.enabled usar ghe-config.
-
Para se conectar a sua instância do GitHub Enterprise Server, acesse qualquer um dos nós do cluster via SSH. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para saber mais, confira Acessar o shell administrativo (SSH).
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME -
Para verificar se Node Eligibility Service está habilitado no momento, execute o comando a seguir.
Shell ghe-config app.nes.enabled
ghe-config app.nes.enabled -
Para habilitar Node Eligibility Service, execute o comando a seguir.
Shell ghe-config app.nes.enabled true
ghe-config app.nes.enabled true -
Para aplicar a configuração, execute o comando a seguir.
Observação
Durante uma execução de configuração, os serviços do sua instância do GitHub Enterprise Server podem ser reiniciados, o que pode causar um breve tempo de inatividade para os usuários.
Shell ghe-config-apply
ghe-config-apply -
Aguarde a conclusão da execução de suas configurações.
-
Para verificar se Node Eligibility Service está em execução, em qualquer nó, execute o comando a seguir.
Shell nomad status nes
nomad status nes
Configurando configurações de TTL para Node Eligibility Service
Para determinar como Node Eligibility Service notifica você, você pode definir as configurações de TTL para fail e warn estados. O TTL do estado fail deve ser maior que o TTL do estado warn.
-
Para se conectar a sua instância do GitHub Enterprise Server, acesse qualquer um dos nós do cluster via SSH. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para saber mais, confira Acessar o shell administrativo (SSH).
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME -
Para verificar as configurações de TTL atuais, execute o comando a seguir.
Shell nes get-node-ttl all
nes get-node-ttl all -
Para definir o TTL do estado
fail, execute o comando a seguir. Substitua MINUTES pelo número de minutos a serem usados em caso de falhas.Shell nes set-node-ttl fail MINUTES
nes set-node-ttl fail MINUTES -
Para definir o TTL do estado
warn, execute o comando a seguir. Substitua MINUTES pelo número de minutos a serem usados para avisos.Shell nes set-node-ttl warn MINUTES
nes set-node-ttl warn MINUTES
Gerenciando se Node Eligibility Service um nó pode ficar offline
Por padrão, Node Eligibility Service fornece alertas para notificar você sobre alterações na integridade dos nós de cluster. Opcionalmente, se o serviço determinar que um nó não íntegro é inelegível para reingressar no cluster, será possível permitir que ele coloque o nó offline.
Quando um nó é colocado offline, a instância remove as alocações de trabalho dele. Se o nó executar serviços de armazenamento de dados, Node Eligibility Service atualizará a configuração para refletir a inelegibilidade do nó para voltar ao cluster.
Para gerenciar se Node Eligibility Service pode colocar um nó e seus serviços offline, você pode configurar adminaction estados para o nó. Se um nó estiver no approved estado, Node Eligibility Service poderá deixar o nó offline. Se um nó estiver no none estado, Node Eligibility Service não será possível deixar o nó offline.
-
Para se conectar a sua instância do GitHub Enterprise Server, acesse qualquer um dos nós do cluster via SSH. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para saber mais, confira Acessar o shell administrativo (SSH).
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME -
Para configurar se Node Eligibility Service um nó pode ficar offline, execute um dos comandos a seguir.
-
Para permitir que o serviço execute automaticamente uma ação administrativa quando um nó ficar offline, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó.
Shell nes set-node-adminaction approved HOSTNAME
nes set-node-adminaction approved HOSTNAME -
Para revogar Node Eligibility Servicea capacidade de colocar um nó offline, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó.
Shell nes set-node-adminaction none HOSTNAME
nes set-node-adminaction none HOSTNAME
-
Exibir uma visão geral da integridade do nó
Para exibir uma visão geral da integridade de seus nós usando Node Eligibility Service, use um dos métodos a seguir.
- Acesse via SSH qualquer nó no cluster e execute
nes get-cluster-health. - Navegue até a Console de Gerenciamentopágina "Status". Para saber mais, confira Acessando o Console de Gerenciamento.
Reabilitar um nó inelegível para ingresso no cluster
Depois Node Eligibility Service de detectar que um nó excedeu o TTL do fail estado e, depois que o serviço marcar o nó como ineligible, o serviço não atualizará mais o status de integridade do nó. Para reabilitar um nó para ingresso no cluster, remova o status ineligible dele.
-
Para se conectar a sua instância do GitHub Enterprise Server, acesse qualquer um dos nós do cluster via SSH. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para saber mais, confira Acessar o shell administrativo (SSH).
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME -
Para marcar o estado atual
adminactiondo nó, execute o comando a seguir. Substitua HOSTNAME pelo nome do host do nó inelegível.Shell nes get-node-adminaction HOSTNAME
nes get-node-adminaction HOSTNAME -
Se o estado
adminactionestiver definido atualmente comoapproved, altere-o paranoneexecutando o comando a seguir. Substitua HOSTNAME pelo nome do host do nó inelegível.Shell nes set-node-adminaction none HOSTNAME
nes set-node-adminaction none HOSTNAME -
Para garantir que o nó esteja em um estado íntegro, execute o comando a seguir e confirme se o status do nó é
ready.Shell nomad node status
nomad node status-
Se o status do nó for
ineligible, torne o nó elegível conectando-se a ele via SSH e executando o comando a seguir.Shell nomad node eligibility -enable -self
nomad node eligibility -enable -self
-
-
Para atualizar a qualificação Node Eligibility Servicedo nó, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó.
Shell nes set-node-eligibility eligible HOSTNAME
nes set-node-eligibility eligible HOSTNAME -
Aguarde 30 segundos e execute o comando a seguir a fim de verificar a integridade do cluster para confirmar se o nó de destino é elegível.
Shell nes get-cluster-health
nes get-cluster-health
Exibindo logs para Node Eligibility Service
Você pode exibir logs de Node Eligibility Service qualquer nó no cluster ou no nó que executa o serviço. Se você gerar um pacote de suporte, os logs serão incluídos. Para saber mais, confira Fornecendo dados para GitHub suporte.
-
Para se conectar a sua instância do GitHub Enterprise Server, acesse qualquer um dos nós do cluster via SSH. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para saber mais, confira Acessar o shell administrativo (SSH).
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME -
Para exibir logs de Node Eligibility Service qualquer nó no cluster, execute o comando a seguir.
Shell nomad alloc logs -job nes
nomad alloc logs -job nes -
Como alternativa, você pode exibir logs Node Eligibility Service no nó que executa o serviço. O serviço grava logs no diário do systemd.
-
Para determinar qual nó é executado Node Eligibility Service, execute o comando a seguir.
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" -
Para exibir os logs no nó, conecte-se ao nó via SSH e execute o seguinte comando.
Shell journalctl -t nes
journalctl -t nes
-