Skip to main content

Monitorar a integridade dos nós de cluster com o Serviço de Qualificação de Nó

Você pode monitorar quando os nós em um GitHub Enterprise Server cluster estão offline há tempo suficiente para causar problemas usando Node Eligibility Service.

Quem pode usar esse recurso?

People with administrative SSH access to a GitHub Enterprise Server instance can monitor cluster nodes.

GitHub determina a elegibilidade para o clustering e deve habilitar essa configuração na licença da sua instância. O clustering requer um planejamento cuidadoso e sobrecarga administrativa adicional. Para saber mais, confira Sobre agrupamento (clustering).

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, warning ou critical.
  • Elegibilidade refere-se à capacidade do nó de operar no cluster e possui dois estados possíveis: eligible ou ineligible.

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 é 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.

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.

  1. 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
    
  2. Para verificar se Node Eligibility Service está habilitado no momento, execute o comando a seguir.

    Shell
    ghe-config app.nes.enabled
    
  3. Para habilitar Node Eligibility Service, execute o comando a seguir.

    Shell
    ghe-config app.nes.enabled true
    
  4. 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
    
  5. Aguarde a conclusão da execução de suas configurações.

  6. Para verificar se Node Eligibility Service está em execução, em qualquer nó, execute o comando a seguir.

    Shell
    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.

  1. 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
    
  2. Para verificar as configurações de TTL atuais, execute o comando a seguir.

    Shell
    nes get-node-ttl all
    
  3. 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
    
  4. 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
    

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.

  1. 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
    
  2. 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
      
    • 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
      

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.

  1. 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
    
  2. 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
    
  3. Se o estado adminaction estiver definido atualmente como approved, altere-o para none executando o comando a seguir. Substitua HOSTNAME pelo nome do host do nó inelegível.

    Shell
    nes set-node-adminaction none HOSTNAME
    
  4. 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
    
    • 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
      
  5. 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
    
  6. 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
    

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.

  1. 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
    
  2. Para exibir logs de Node Eligibility Service qualquer nó no cluster, execute o comando a seguir.

    Shell
    nomad alloc logs -job nes
    
  3. 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"
      
    • Para exibir os logs no nó, conecte-se ao nó via SSH e execute o seguinte comando.

      Shell
      journalctl -t nes
      

Leitura adicional