Skip to main content

Rééquilibrage des charges de travail de cluster

Vous pouvez forcer votre cluster GitHub Enterprise Server à répartir uniformément les allocations de travaux pour les charges de travail sur les nœuds du cluster.

Qui peut utiliser cette fonctionnalité ?

People with administrative SSH access to a GitHub Enterprise Server instance can rebalance cluster workloads on the instance.

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

  1. 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
    
  2. 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
    

    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.

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

    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.

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

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.

  1. Pour configurer l’équilibrage automatique et horaire des travaux, exécutez la commande suivante.

    Shell
    ghe-config app.cluster-rebalance.enabled true
    
  2. Si vous le souhaitez, vous pouvez remplacer la planification par défaut en définissant une expression cron. Par exemple, exécutez la commande suivante pour équilibrer les travaux toutes les trois heures.

    Shell
    ghe-config app.cluster-rebalance.schedule '0 */3 * * *'
    
  3. 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
    
  4. Attendez la fin de l’exécution de la configuration.

Pour aller plus loin