Remarque : Il y a un maximum de 8 réplicas haute disponibilité (à la fois passifs et actifs/géoréplicas) autorisés pour GitHub Enterprise Server.
Création d’un réplica à haute disponibilité
-
Configurez une nouvelle appliance GitHub Enterprise Server sur la plateforme de votre choix. L’appliance réplica doit reprendre les paramètres de processeur, de RAM et de stockage de l’appliance principale. Nous vous recommandons d’installer l’appliance réplica dans un environnement indépendant. Les composants matériels, logiciels et réseau sous-jacents doivent être isolés de ceux de l’appliance principale. Si vous avez recours à un fournisseur de cloud, utilisez une région ou une zone distincte. Pour plus d’informations, consultez « Configuration d’une instance GitHub Enterprise Server ».
-
Vérifiez que la nouvelle appliance peut communiquer avec toutes les autres appliances de cet environnement haute disponibilité sur les ports 122/TCP et 1194/UDP. Pour plus d’informations, consultez « Ports réseau ».
-
Dans un navigateur, accédez à l’adresse IP de la nouvelle appliance réplica et chargez votre licence GitHub Enterprise.
-
Définissez un mot de passe administrateur qui correspond au mot de passe de l’appliance principale et continuez.
-
Cliquez sur Configurer comme réplica.
-
Sous « Ajouter une nouvelle clé SSH », tapez votre clé SSH.
-
Cliquez sur Ajouter une clé.
-
Connectez-vous à l’adresse IP de l’appliance réplica avec SSH.
ssh -p 122 admin@REPLICA_IP
-
Pour générer une paire de clés pour la réplication, utilisez la commande
ghe-repl-setup
avec l’adresse IP de l’appliance primaire et copiez la clé publique qu’elle renvoie.ghe-repl-setup PRIMARY_IP
-
Pour ajouter la clé publique à la liste des clés autorisées sur l’appliance principale, recherchez
https://PRIMARY-HOSTNAME/setup/settings
et ajoutez à la liste la clé que vous avez copiée à partir du réplica. -
Pour vérifier la connexion à l’appliance principale et activer le mode réplica pour le nouveau réplica, réexécutez
ghe-repl-setup
.ghe-repl-setup PRIMARY_IP
-
Pour démarrer la réplication des magasins de données, utilisez la commande
ghe-repl-start
.ghe-repl-start
Avertissement :
ghe-repl-start
provoque une brève interruption sur le serveur principal, pendant laquelle les utilisateurs peuvent voir des erreurs de serveur interne. Pour fournir un message plus convivial, exécutezghe-maintenance -s
sur le nœud principal avant d’exécuterghe-repl-start
sur le nœud de réplica pour mettre l’appliance en mode maintenance. Une fois la réplication démarrée, désactivez le mode maintenance avecghe-maintenance -u
. La réplication Git ne progresse pas tant que le nœud principal est en mode maintenance. -
Pour vérifier l’état du canal de réplication de chaque magasin de données, utilisez la commande
ghe-repl-status
.ghe-repl-status
Création de réplicas de géoréplication
Cet exemple de configuration utilise une appliance principale et deux réplicas, qui sont situés dans trois régions géographiques différentes. Même si les trois nœuds peuvent se trouver sur des réseaux différents, tous les nœuds doivent être mutuellement accessibles. Au minimum, les ports d’administration nécessaires doivent être ouverts à tous les autres nœuds. Pour plus d’informations sur les ports nécessaires, consultez « Ports réseau ».
La latence entre les nœuds principaux et réplicas doit être inférieure à 70 millisecondes. Il n'est pas recommandé de configurer un pare-feu entre les réseaux des nœuds. Si la latence est supérieure à 70 millisecondes, nous vous recommandons plutôt de mettre en cache les nœuds de réplica. Pour plus d’informations, consultez « Configuration d’un cache de référentiel ».
-
Créez le premier réplica comme vous le feriez pour une configuration standard à deux nœuds en exécutant
ghe-repl-setup
sur le premier réplica.(replica1)$ ghe-repl-setup PRIMARY_IP (replica1)$ ghe-repl-start
-
Créez un deuxième réplica et utilisez la commande
ghe-repl-setup --add
. L’indicateur--add
l’empêche de remplacer la configuration de réplication existante et ajoute le nouveau réplica à la configuration.(replica2)$ ghe-repl-setup --add PRIMARY_IP (replica2)$ ghe-repl-start
-
Par défaut, les réplicas sont configurés sur le même centre de données et tenteront désormais d’amorcer à partir d’un nœud existant du même centre de données. Configurez les réplicas pour différents centres de données en définissant une valeur différente pour l’option de centre de données. Vous pouvez indiquer n’importe quelles valeurs du moment qu’elles sont différentes les unes des autres. Exécutez la commande
ghe-repl-node
sur chaque nœud et spécifiez le centre de données.Sur l’appliance principale :
(primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME]
Sur le premier réplica :
(replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME]
Sur le deuxième réplica :
(replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME]
Conseil : Vous pouvez définir les options
--datacenter
et--active
options en même temps. -
Un nœud réplica actif stocke des copies des données de l’appliance et traite les demandes des utilisateurs finaux. Un nœud inactif stocke des copies des données de l’appliance, mais ne peut pas traiter les demandes des utilisateurs finaux. Activez le mode actif à l’aide de l’indicateur
--active
ou le mode inactif à l’aide de l’indicateur--inactive
.Sur le premier réplica :
(replica1)$ ghe-repl-node --active
Sur le deuxième réplica :
(replica2)$ ghe-repl-node --active
-
Pour appliquer la configuration, utilisez la commande
ghe-config-apply
sur l’appliance principale.(primary)$ ghe-config-apply
Configuration de DNS pour la géoréplication
Configurez le service GeoDNS en utilisant les adresses IP du nœud principal et des nœuds réplicas. Vous pouvez aussi créer un enregistrement CNAME DNS pour le nœud principal (par exemple, primary.github.example.com
) pour accéder au nœud principal via SSH ou pour le sauvegarder via backup-utils
.
En guise de test, vous pouvez ajouter des entrées au fichier hosts
de la station de travail locale (par exemple, /etc/hosts
). Ces exemples d’entrées résolvent les demandes de HOSTNAME
en replica2
. Vous pouvez cibler des hôtes spécifiques en commentant différentes lignes.
# <primary IP> HOSTNAME
# <replica1 IP> HOSTNAME
<replica2 IP> HOSTNAME