Skip to main content

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

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

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 obter mais informações, confira "Sobre clustering".

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 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 obter mais informações, 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.

    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 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 obter mais informações, 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 obter mais informações, 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 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.

  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 obter mais informações, 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 obter mais informações, 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 obter mais informações, 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