Skip to main content

Surveillance de l’intégrité de vos nœuds de cluster avec Node Eligibility Service

Vous pouvez surveiller quand les nœuds d’un cluster GitHub Enterprise Server sont hors connexion suffisamment longtemps pour entraîner des problèmes en utilisant Node Eligibility Service.

Qui peut utiliser cette fonctionnalité ?

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

GitHub détermine l’éligibilité au clustering et doit activer la configuration de la licence de votre instance. Le clustering nécessite une planification minutieuse et une surcharge administrative supplémentaire. Pour plus d’informations, consultez « À propos du clustering ».

À propos de Node Eligibility Service

Dans un cluster GitHub Enterprise Server, un nœud individuel peut devenir inaccessible par d’autres nœuds à cause d’une défaillance matérielle ou logicielle. Après, même si vous restaurez l’intégrité du nœud, la synchronisation ultérieure des données peut avoir un impact négatif sur les performances de votre instance.

Vous pouvez atténuer de manière proactive l’impact d’une disponibilité réduite des nœuds à l’aide de Node Eligibility Service. Ce service surveille l’état des nœuds de votre cluster et émet un avertissement si un nœud est hors connexion depuis trop longtemps. Vous pouvez également empêcher un nœud hors connexion de rejoindre le cluster. Si vous le souhaitez, vous pouvez autoriser Node Eligibility Service à mettre des nœuds inéligibles hors connexion.

Par défaut, Node Eligibility Service est désactivé. Si vous activez Node Eligibility Service, votre instance vous avertit des nœuds non sains en affichant une bannière dans l’interface utilisateur web d’administration de GitHub Enterprise Server et dans la sortie CLI de certains utilitaires liés aux clusters comme ghe-config-apply et ghe-cluster-diagnostics.

Node Eligibility Service vous permet de surveiller l’intégrité de nœuds individuels. Vous pouvez également surveiller l’intégrité globale de votre cluster. Pour plus d’informations, consultez « Surveillance de l’intégrité de votre cluster ».

À propos de l’intégrité et de l’éligibilité des nœuds de cluster

Pour déterminer s’il faut émettre un avertissement ou ajuster automatiquement la configuration de votre cluster, Node Eligibility Service surveille en continu l’intégrité de chaque nœud. Chaque nœud signale régulièrement un état d’intégrité horodaté, que Node Eligibility Service compare à une durée TTL.

Chaque nœud a un état d’intégrité et un état d’éligibilité.

  • L’intégrité fait référence à l’accessibilité du nœud au sein du cluster et a trois états possibles : healthy, warning ou critical.
  • L’éligibilité fait référence à la capacité du nœud à travailler dans le cluster et a deux états possibles : eligible ou ineligible.

Node Eligibility Service fournit un paramètre TTL configurable pour deux états, warn et fail.

  • warn : Le nœud est hors connexion pendant une courte période. Cela peut indiquer un problème avec le nœud que les administrateurs doivent investiguer. Le paramètre par défaut est de 15 minutes.
  • fail : Le nœud est hors connexion pendant une longue période, et sa réintroduction dans le cluster pourrait entraîner des problèmes de performances en raison de la resynchronisation. Le paramètre par défaut est de 60 minutes.

Pour chaque nœud, Node Eligibility Service détermine son intégrité et son éligibilité à participer au cluster des manières suivantes.

  • Si un nœud a été observé comme étant sain, l’état d’intégrité est healthy et l’état d’éligibilité est eligible.
  • Si un nœud n’a pas été observé comme étant sain pendant plus longtemps que la durée TTL warn, l’état d’intégrité est warning et l’état d’éligibilité est eligible.
  • Si un nœud n’a pas été observé comme étant sain pendant plus longtemps que la durée TTL fail, l’état d’intégrité est critical et son état d’éligibilité est ineligible.

Activation de Node Eligibility Service pour votre cluster

Par défaut, Node Eligibility Service est désactivé. Vous pouvez activer Node Eligibility Service en définissant la valeur pour app.nes.enabled avec ghe-config.

  1. Pour vous connecter à votre instance GitHub Enterprise Server, connectez-vous avec SSH à l’un des nœuds de votre cluster. À partir de votre station de travail, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Pour vérifier si Node Eligibility Service est actuellement activé, exécutez la commande suivante.

    Shell
    ghe-config app.nes.enabled
    
  3. Pour activer Node Eligibility Service, exécutez la commande suivante.

    Shell
    ghe-config app.nes.enabled true
    
  4. Pour appliquer la configuration, exécutez la commande suivante.

    Remarque : Durant une exécution de configuration, les services sur votre instance GitHub Enterprise Server peuvent redémarrer, ce qui peut entraîner un bref temps d’arrêt pour les utilisateurs.

    Shell
    ghe-config-apply
    
  5. Attendez la fin de l’exécution de la configuration.

  6. Pour vérifier si Node Eligibility Service est en cours d’exécution, exécutez la commande suivante à partir d’un nœud.

    Shell
    nomad status nes
    

Configuration des paramètres TTL pour Node Eligibility Service

Pour déterminer les conditions dans lesquelles Node Eligibility Service vous avertit, vous pouvez configurer les paramètres TTL pour les états fail et warn. La durée TTL de l’état fail doit être plus longue que la durée TLL de l’état warn.

  1. Pour vous connecter à votre instance GitHub Enterprise Server, connectez-vous avec SSH à l’un des nœuds de votre cluster. À partir de votre station de travail, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Pour vérifier les paramètres TTL actuels, exécutez la commande suivante.

    Shell
    nes get-node-ttl all
    
  3. Pour définir la durée TTL de l’état fail, exécutez la commande suivante. Remplacez MINUTES par le nombre de minutes à utiliser pour les échecs.

    Shell
    nes set-node-ttl fail MINUTES
    
  4. Pour définir la durée TTL de l’état warn, exécutez la commande suivante. Remplacez MINUTES par le nombre de minutes à utiliser pour les avertissements.

    Shell
    nes set-node-ttl warn MINUTES
    

Gestion de la possibilité pour Node Eligibility Service de mettre un nœud hors connexion

Par défaut, Node Eligibility Service fournit des alertes pour vous avertir des changements dans l’intégrité des nœuds de cluster. Si vous le souhaitez, si le service détermine qu’un nœud non sain n’est pas éligible pour rejoindre le cluster, vous pouvez autoriser le service à mettre le nœud hors connexion.

Lorsqu’un nœud est mis hors connexion, l’instance supprime les allocations de travaux du nœud. Si le nœud exécute des services de stockage de données, Node Eligibility Service met à jour la configuration pour refléter l’inéligibilité du nœud à rejoindre le cluster.

Pour déterminer si Node Eligibility Service peut mettre un nœud et ses services hors connexion, vous pouvez configurer des états adminaction pour le nœud. Si un nœud est dans l’état approved, Node Eligibility Service peut le mettre hors connexion. Si un nœud est dans l’état none, Node Eligibility Service ne peut pas le mettre hors connexion.

  1. Pour vous connecter à votre instance GitHub Enterprise Server, connectez-vous avec SSH à l’un des nœuds de votre cluster. À partir de votre station de travail, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Pour configurer si Node Eligibility Service peut mettre un nœud hors connexion, exécutez l’une des commandes suivantes.

    • Pour permettre au service d’effectuer automatiquement une action administrative lorsqu’un nœud passe hors connexion, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud.

      Shell
      nes set-node-adminaction approved HOSTNAME
      
    • Pour révoquer la capacité de Node Eligibility Service à mettre un nœud hors connexion, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud.

      Shell
      nes set-node-adminaction none HOSTNAME
      

Affichage d’une vue d’ensemble de l’intégrité des nœuds

Pour afficher une vue d’ensemble de l’intégrité de vos nœuds à l’aide de Node Eligibility Service, utilisez l’une des méthodes suivantes.

  • Établissez une connexion SSH à n’importe quel nœud du cluster, puis exécutez nes get-cluster-health.
  • Accédez à la page « État » de la Management Console. Pour plus d’informations, consultez « Accès à la console de gestion ».

Réactivation d’un nœud inéligible pour rejoindre le cluster

Une fois que Node Eligibility Service a détecté qu’un nœud a dépassé la durée TTL de l’état fail et qu’il a marqué le nœud comme ineligible, il ne met plus à jour l’état d’intégrité pour le nœud. Pour réactiver un nœud pour lui permettre de rejoindre le cluster, vous pouvez supprimer l’état ineligible du nœud.

  1. Pour vous connecter à votre instance GitHub Enterprise Server, connectez-vous avec SSH à l’un des nœuds de votre cluster. À partir de votre station de travail, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Pour vérifier l’état adminaction actuel du nœud, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud inéligible.

    Shell
    nes get-node-adminaction HOSTNAME
    
  3. Si l’état adminaction est actuellement défini sur approved, remplacez par l’état none en exécutant la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud inéligible.

    Shell
    nes set-node-adminaction none HOSTNAME
    
  4. Pour vous assurer que le nœud est dans un état sain, exécutez la commande suivante et vérifiez que l’état du nœud est ready.

    Shell
    nomad node status
    
    • Si l’état du nœud est ineligible, rendez le nœud éligible en vous connectant au nœud via SSH et en exécutant la commande suivante.

      Shell
      nomad node eligibility -enable -self
      
  5. Pour mettre à jour l’éligibilité du nœud dans Node Eligibility Service, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud.

    Shell
    nes set-node-eligibility eligible HOSTNAME
    
  6. Attendez 30 secondes, puis vérifiez l’intégrité du cluster pour confirmer que le nœud cible est éligible en exécutant la commande suivante.

    Shell
    nes get-cluster-health
    

Consultation des journaux de Node Eligibility Service

Vous pouvez consulter les journaux de Node Eligibility Service à partir de n’importe quel nœud du cluster ou du nœud qui exécute le service. Si vous générez un bundle de support, les journaux sont inclus. Pour plus d’informations, consultez « Fournir des données au support GitHub ».

  1. Pour vous connecter à votre instance GitHub Enterprise Server, connectez-vous avec SSH à l’un des nœuds de votre cluster. À partir de votre station de travail, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Pour consulter les journaux de Node Eligibility Service à partir de n’importe quel nœud du cluster, exécutez la commande suivante.

    Shell
    nomad alloc logs -job nes
    
  3. Vous pouvez également consulter les journaux de Node Eligibility Service sur le nœud qui exécute le service. Le service écrit les journaux dans le journal systemd.

    • Pour déterminer le nœud qui exécute Node Eligibility Service, exécutez la commande suivante.

      Shell
      nomad job status "nes" | grep running | grep "${nomad_node_id}" | awk 'NR==2{ print $1 }' | xargs nomad alloc status | grep "Node Name"
      
    • Pour consulter les journaux sur le nœud, connectez-vous au nœud via SSH, puis exécutez la commande suivante.

      Shell
      journalctl -t nes
      

Pour aller plus loin