À 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 ».
Warning
- 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.
Service | Données |
---|---|
git-server | Référentiels |
pages-server | Builds de site pour GitHub Pages |
storage-server |
|
-
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) ».
-
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
-
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)
-
-
-
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
:-
Mettez le service du nœud hors connexion en exécutant la commande suivante.
ghe-storage offline storage-server-UUID
-
Évacuez le nœud en exécutant la commande suivante.
ghe-storage evacuate storage-server-UUID
-
-
-
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.
Warning
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
-
-
Une fois l’évacuation terminée pour le service, arrêtez le nœud.