Skip to main content

Cette version de GitHub Enterprise Server n'est plus disponible depuis le 2024-09-25. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités, effectuez une mise à niveau vers la dernière version de GitHub Enterprise. Pour obtenir de l’aide sur la mise à niveau, contactez le support GitHub Enterprise.

Évacuation d’un nœud de cluster exécutant des services de données

Si un nœud de votre cluster GitHub Enterprise Server exécute des services qui stockent des données distribuées, vous pouvez assurer la redondance quand vous préparez le remplacement du nœud en évacuant ses données.

Qui peut utiliser cette fonctionnalité ?

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’évacuation de nœuds de cluster exécutant des services de données

Dans une configuration de cluster pour GitHub Enterprise Server, vous devrez peut-être mettre un nœud individuel hors connexion. Par exemple, vous devrez peut-être remplacer la machine virtuelle du nœud. Si le nœud à remplacer fonctionne dans le niveau de stockage, GitHub vous recommande d’évacuer d’abord les services de données du nœud. L’évacuation garantit que les nœuds restants contiennent le nombre minimum attendu de copies des données.

Pour plus d’informations sur les nœuds et les niveaux de service pour GitHub Enterprise Server, consultez « À propos des nœuds de cluster ».

Avertissements :

  • Pour éviter la perte de données lors du remplacement d’un nœud, GitHub recommande vivement l’évacuation des services de données applicables sur le nœud avant sa mise hors connexion.

  • Pour garantir la redondance d’un service de données sur votre cluster, des copies des données doivent exister sur au moins trois nœuds. Par exemple, si quatre nœuds ou plus stockent des données Git, lors de l’évacuation, les données de dépôt évacuées sont déplacées du nœud que vous évacuez vers les trois autres nœuds. Si vous n’avez que trois nœuds qui stockent des données pour un service, l’évacuation d’un nœud peut échouer et entraîner une sous-réplication des données.

Évacuation d’un nœud de cluster exécutant des services de données

Si vous envisagez de mettre un nœud hors connexion et que ce nœud exécute l’un des rôles suivants, évacuez chaque service applicable avant de mettre le nœud hors connexion.

ServiceDonnées
git-serverRéférentiels
pages-serverBuilds de site pour GitHub Pages
storage-server
  • Données stockées dans des dépôts avec Stockage Fichiers volumineux Git
  • Images d’avatars
  • Fichiers joints à des commentaires dans l’interface utilisateur web
  • Archives des versions
  1. SSH dans n’importe quel nœud de votre cluster. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

  2. Pour rechercher l’UUID du nœud à évacuer, exécutez la commande suivante. Remplacez HOSTNAME par le nom d’hôte du nœud. Vous allez utiliser l’UUID dans les commandes suivantes.

    ghe-config cluster.HOSTNAME.uuid
    
  3. Pour déterminer la quantité initiale de données pour chaque service applicable sur le nœud, exécutez les commandes suivantes. Pour chaque commande, remplacez UUID par l’UUID de l’étape précédente.

    • git-server:

      • Commande :

        ghe-spokesctl server status git-server-UUID
        
      • Sortie pertinente : NETWORKS``GISTS

    • pages-server:

      • Commande :

        echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
        
    • storage-server:

      • Commande :

        ghe-storage evacuation-status storage-server-UUID
        
      • Sortie pertinente : Remaining item(s)

  4. Pour évacuer un service applicable sur le nœud, exécutez les commandes suivantes. Pour chaque commande, remplacez UUID par l’UUID de l’étape précédente.

    • git-server:

      • Commande (remplacez REASON FOR EVACUATION par le motif de l’évacuation) :

        ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
        
    • pages-server:

      • Commande :

        ghe-dpages evacuate pages-server-UUID
        
    • storage-server:

      1. Mettez le service du nœud hors connexion en exécutant la commande suivante.

        ghe-storage offline storage-server-UUID
        
      2. Évacuez le nœud en exécutant la commande suivante.

        ghe-storage evacuate storage-server-UUID
        
  5. Pour monitorer l’évacuation d’un service pendant que GitHub Enterprise Server copie les données, exécutez les commandes suivantes. Pour chaque commande, remplacez UUID par l’UUID de l’étape précédente.

    Avertissement : N’arrêtez pas le nœud tant que l’évacuation n’est pas terminée. L’évacuation est terminée quand le nombre de données arrive à zéro, ce qui signifie que toutes les données sont stockées sur d’autres nœuds.

    • git-server:

      ghe-spokesctl server evac-status git-server-UUID
      
    • pages-server:

      echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
      
    • storage-server:

      ghe-storage evacuation-status storage-server-UUID
      
  6. Une fois l’évacuation terminée pour le service, arrêtez le nœud.