À propos de l’équilibre des charges de travail pour un cluster GitHub Enterprise Server
Une instance GitHub Enterprise Server dans une configuration de cluster affecte chaque tâche à un nœud en fonction du rôle du nœud. Cette affectation est appelée allocation.
Si un nœud de cluster est inaccessible aux autres nœuds en raison d’une défaillance matérielle ou logicielle, votre instance crée une allocation pour distribuer les travaux du nœud non sain dans un autre nœud capable de gérer la charge de travail. Dans certains cas, cette distribution ne se produit pas automatiquement et un seul nœud peut exécuter plus de travaux que prévu.
Vous pouvez gérer les allocations avec l’utilitaire ghe-cluster-balance
, qui peut afficher l’état des allocations existantes ou forcer votre instance à équilibrer les allocations. Par exemple, vous devez équilibrer les allocations après avoir ajouté un nouveau nœud au cluster. Si vous le souhaitez, vous pouvez planifier un équilibrage régulier.
Vous pouvez exécuter les commandes suivantes à partir de n’importe quel nœud de votre cluster en utilisant l’interpréteur de commandes d’administration. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».
Vérification de la distribution des travaux de cluster
Dans certains cas, comme une défaillance matérielle, le logiciel sous-jacent qui gère les allocations migre les tâches du nœud non sain vers un nœud sain. Si le nœud non sain reprend, la tâche peut rester affectée à celui-ci, ce qui peut entraîner une charge déséquilibré. Le risque que les travaux échouent peut augmenter si les allocations sont déséquilibrés et si d’autres nœuds échouent. Vous pouvez vérifier la distribution des allocations avec l’utilitaire ghe-cluster-balance status
.
-
Pour voir une liste d’allocations, exécutez la commande suivante. L’utilitaire affiche les allocations saines en vert. Si des travaux ne sont pas correctement distribués, l’utilitaire affiche le nombre d’allocations en rouge.
Shell ghe-cluster-balance status
ghe-cluster-balance status
-
Si un travail n’est pas correctement distribué, inspectez les allocations en exécutant la commande suivante. Remplacez JOB par un seul travail ou une liste de travaux délimités par des virgules.
Shell ghe-cluster-balance status -j JOB
ghe-cluster-balance status -j JOB
Par exemple, pour voir l’état des allocations pour le serveur HTTP et le service d’autorisation de votre instance, vous pouvez exécuter
ghe-cluster-balance status -j github-unicorn,authzd
.
Rééquilibrage des allocations
Une fois que vous avez déterminé quels travaux sont déséquilibrés parmi les nœuds de votre cluster, vous pouvez rééquilibrer les allocations avec l’utilitaire ghe-cluster-balance rebalance
. L’utilitaire vérifie la distribution des travaux existants. Si des travaux ne sont pas équilibrés, l’utilitaire affiche les travaux et vous demande de continuer. Si vous continuez, l’utilitaire crée de nouvelles allocations pour redistribuer les travaux.
-
Pour faire un test à blanc et voir le résultat du rééquilibrage sans apporter de changements, exécutez la commande suivante. Remplacez JOB par un seul travail ou une liste de travaux délimités par des virgules.
Shell ghe-cluster-balance rebalance --dry-run -j JOB
ghe-cluster-balance rebalance --dry-run -j JOB
Par exemple, pour faire un test à blanc de rééquilibrage de travaux pour le serveur HTTP et le service d’autorisation de votre instance, vous pouvez exécuter
ghe-cluster-balance rebalance --dry-run -j github-unicorn,authzd
. -
Pour rééquilibrer, exécutez la commande suivante. Remplacez JOB par un seul travail ou une liste de travaux délimités par des virgules.
Shell ghe-cluster-balance rebalance -j JOB
ghe-cluster-balance rebalance -j JOB
Planification du rééquilibrage des allocations
Vous pouvez planifier le rééquilibrage des travaux sur votre cluster en définissant et en appliquant des valeurs de configuration pour votre instance GitHub Enterprise Server.
Remarque : Actuellement, vous pouvez uniquement planifier la réallocation des travaux pour le serveur HTTP, github-unicorn
.
-
Pour configurer l’équilibrage automatique et horaire des travaux, exécutez la commande suivante.
Shell ghe-config app.cluster-rebalance.enabled true
ghe-config app.cluster-rebalance.enabled true
-
Si vous le souhaitez, vous pouvez remplacer la planification par défaut en définissant une Systemd.time expression. Par exemple, exécutez la commande suivante pour équilibrer les travaux tous les jours.
Shell ghe-config app.cluster-rebalance.schedule 'daily'
ghe-config app.cluster-rebalance.schedule 'daily'
-
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
ghe-config-apply
-
Attendez la fin de l’exécution de la configuration.