Sobre o Node Eligibility Service
Em um cluster do GitHub Enterprise Server, um nó individual pode ficar 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.
É possível reduzir proativamente o impacto da disponibilidade reduzida do nó usando o 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. Você tem a opção de permitir que o Node Eligibility Service deixe os nós inelegíveis offline.
Por padrão, o Node Eligibility Service está desabilitado. Se você habilitar o 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 do GitHub Enterprise Server e na saída da CLI para alguns utilitários relacionados ao cluster, como ghe-config-apply
e ghe-cluster-diagnostics
.
O Node Eligibility Service permite monitorar a integridade de nós individuais. Também é possível monitorar a integridade geral do cluster. Para obter mais informações, confira "Monitorar a integridade do cluster".
Sobre a integridade e a qualificação de nós de cluster
Para determinar se um aviso deve ser emitido ou se a configuração do cluster deve ser ajustada automaticamente, o Node Eligibility Service monitora continuamente a integridade de cada nó. Cada nó relata regularmente um estado de integridade com carimbo de data/hora, que o Node Eligibility Service compara com uma duração de TTL (tempo de vida).
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
,warning
oucritical
. - Qualificação refere-se à capacidade do nó de trabalhar no cluster e tem dois estados possíveis:
eligible
ouineligible
.
O Node Eligibility Service fornece uma definição de TTL configurável para dois estados: warn
e fail
.
warn
: o nó ficou offline por um curto período de tempo. Isso pode indicar algo errado com o nó e deve ser investigado pelos administradores. 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.
No caso de cada nó, o Node Eligibility Service determina a integridade e a qualificação para participação no cluster como a seguir.
- Se foi observado que um nó está íntegro, o estado de integridade é
healthy
e 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 éwarning
e 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 écritical
e o estado de qualificação éineligible
.
Habilitar o Node Eligibility Service para seu cluster
Por padrão, o Node Eligibility Service está desabilitado. É possível habilitar o Node Eligibility Service configurando o valor de app.nes.enabled
por meio de ghe-config
.
-
Para se conectar ao sua instância do GitHub Enterprise Server, acesse via SSH qualquer um dos nós do cluster. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Para verificar se o 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 o 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 o Node Eligibility Service está em execução, execute o comando a seguir em qualquer nó.
Shell nomad status nes
nomad status nes
Definir as configurações de TTL do Node Eligibility Service
Para determinar como o Node Eligibility Service notifica você, defina as configurações de TTL para os estados fail
e warn
. O TTL do estado fail
deve ser maior que o TTL do estado warn
.
-
Para se conectar ao sua instância do GitHub Enterprise Server, acesse via SSH qualquer um dos nós do cluster. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para obter mais informações, confira "Acesar 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 para 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
Gerenciar a capacidade do Node Eligibility Service de colocar um nó offline
Por padrão, 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, o Node Eligibility Service atualizará a configuração para refletir a inelegibilidade dele quanto ao reingresso no cluster.
Para gerenciar a capacidade do Node Eligibility Service de colocar um nó e os respectivos serviços offline, configure estados adminaction
para o nó. Se um nó estiver no estado approved
, o Node Eligibility Service poderá colocá-lo offline. Se um nó estiver no estado none
, o Node Eligibility Service não poderá colocá-lo offline.
-
Para se conectar ao sua instância do GitHub Enterprise Server, acesse via SSH qualquer um dos nós do cluster. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Para configurar a capacidade do Node Eligibility Service de colocar um nó 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 a capacidade do Node Eligibility Service 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 dos nós por meio do Node Eligibility Service, use um dos métodos a seguir.
- Acesse via SSH qualquer nó no cluster e execute
nes get-cluster-health
. - Acesse a página "Status" do Console de Gerenciamento. Para obter mais informações, confira "Acessar o Console de Gerenciamento".
Reabilitar um nó inelegível para ingresso no cluster
Depois que o Node Eligibility Service detecta que um nó excedeu o TTL do estado fail
e o marca como ineligible
, ele não atualiza mais o status de integridade do nó. Para reabilitar um nó para ingresso no cluster, remova o status ineligible
dele.
-
Para se conectar ao sua instância do GitHub Enterprise Server, acesse via SSH qualquer um dos nós do cluster. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Para marcar o estado atual
adminaction
do 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
adminaction
estiver definido atualmente comoapproved
, altere-o paranone
executando 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 elegibilidade do nó no Node Eligibility Service, 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
Exibir os logs do Node Eligibility Service
É possível exibir os logs do Node Eligibility Service por meio de qualquer nó no cluster ou por meio do nó que executa o serviço. Se você gerar um pacote de suporte, os logs serão incluídos. Para obter mais informações, confira "Fornecer dados para o GitHub Support".
-
Para se conectar ao sua instância do GitHub Enterprise Server, acesse via SSH qualquer um dos nós do cluster. Na estação de trabalho, execute o comando a seguir. Substituir HOSTNAME pelo nome do host do nó. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Para exibir os logs do Node Eligibility Service por meio de qualquer nó no cluster, execute o comando a seguir.
Shell nomad alloc logs -job nes
nomad alloc logs -job nes
-
Como alternativa, é possível exibir os logs do Node Eligibility Service no nó que executa o serviço. O serviço grava logs no diário do systemd.
-
Para determinar qual nó executa o 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 a ele via SSH e execute o comando a seguir.
Shell journalctl -t nes
journalctl -t nes
-