À 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
oucritical
. - L’éligibilité fait référence à la capacité du nœud à travailler dans le cluster et a deux états possibles :
eligible
ouineligible
.
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é esteligible
. - 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é estwarning
et l’état d’éligibilité esteligible
. - 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é estcritical
et son état d’éligibilité estineligible
.
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
.
-
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
ssh -p 122 admin@HOSTNAME
-
Pour vérifier si Node Eligibility Service est actuellement activé, exécutez la commande suivante.
Shell ghe-config app.nes.enabled
ghe-config app.nes.enabled
-
Pour activer Node Eligibility Service, exécutez la commande suivante.
Shell ghe-config app.nes.enabled true
ghe-config app.nes.enabled true
-
Pour appliquer la configuration, exécutez la commande suivante.
Note
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
ghe-config-apply
-
Attendez la fin de l’exécution de la configuration.
-
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
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
.
-
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
ssh -p 122 admin@HOSTNAME
-
Pour vérifier les paramètres TTL actuels, exécutez la commande suivante.
Shell nes get-node-ttl all
nes get-node-ttl all
-
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
nes set-node-ttl fail MINUTES
-
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
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.
-
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
ssh -p 122 admin@HOSTNAME
-
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
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
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.
-
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
ssh -p 122 admin@HOSTNAME
-
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
nes get-node-adminaction HOSTNAME
-
Si l’état
adminaction
est actuellement défini surapproved
, remplacez par l’étatnone
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
nes set-node-adminaction none HOSTNAME
-
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
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
nomad node eligibility -enable -self
-
-
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
nes set-node-eligibility eligible HOSTNAME
-
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
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 ».
-
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
ssh -p 122 admin@HOSTNAME
-
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
nomad alloc logs -job nes
-
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"
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
journalctl -t nes
-