Skip to main content

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

É possível monitorar quando os nós em um cluster do GitHub Enterprise Server ficaram offline por tempo suficiente para causar problemas usando o Node Eligibility Service.

Quem pode usar esse recurso?

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

A GitHub determina a qualificação para clustering e deve habilitar a configuração para a licença da instância. O clustering requer um planejamento cuidadoso e sobrecarga administrativa adicional. Para saber mais, confira Sobre clustering.

Sobre o Node Eligibility Service

Em um cluster do GitHub Enterprise Server, um nó individual pode se tornar inacessível a 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, a instância alertará você sobre nós não íntegros exibindo um banner na interface de 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 saber mais, 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 ou critical.
  • Qualificação refere-se à capacidade do nó de trabalhar no cluster e tem dois estados possíveis: eligible ou ineligible.

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.

  1. 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 saber mais, confira Acesar o shell administrativo (SSH).

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Para verificar se o Node Eligibility Service está habilitado no momento, execute o comando a seguir.

    Shell
    ghe-config app.nes.enabled
    
  3. Para habilitar o 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.

    Note

    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 o Node Eligibility Service está em execução, execute o comando a seguir em qualquer nó.

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

  1. 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 saber mais, confira Acesar 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 ​​para 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
    

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.

  1. 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 saber mais, confira Acesar o shell administrativo (SSH).

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 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
      
    • 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
      

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 saber mais, 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.

  1. 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 saber mais, confira Acesar 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 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
    
  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
    

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 saber mais, confira Fornecer dados para o GitHub Support.

  1. 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 saber mais, confira Acesar o shell administrativo (SSH).

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 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
    
  3. 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"
      
    • Para exibir os logs no nó, conecte-se a ele via SSH e execute o comando a seguir.

      Shell
      journalctl -t nes
      

Leitura adicional