Skip to main content

Utilisation de GitHub Enterprise Server avec un équilibreur de charge

Utilisez un équilibreur de charge devant une seule instance de GitHub Enterprise Server ou une paire d’instances dans une configuration à haute disponibilité.

À propos des équilibreurs de charge

Une conception d’équilibreur de charge utilise un appareil réseau pour diriger le trafic Git et HTTP vers des appliances GitHub Enterprise Server individuelles. Vous pouvez utiliser un équilibreur de charge pour restreindre le trafic direct vers l’appliance à des fins de sécurité, ou pour rediriger le trafic si nécessaire sans modifications de l’enregistrement DNS. Nous vous recommandons vivement d’utiliser un équilibreur de charge basé sur TCP qui prend en charge le protocole PROXY.

Les recherches DNS pour le nom d’hôte GitHub Enterprise Server doivent être résolues sur l’équilibreur de charge. Nous vous recommandons d’activer l’isolation des sous-domaines. Si l’isolation des sous-domaines est activée, un enregistrement générique supplémentaire (*.HOSTNAME) doit également être résolu sur l’équilibreur de charge. Pour plus d’informations, consultez « Activation de l’isolation de sous-domaine ».

Gestion des informations sur les connexions clientes

Sachant que les connexions clientes à GitHub Enterprise Server proviennent de l’équilibreur de charge, l’adresse IP cliente peut être perdue.

Si votre équilibreur de charge peut le prendre en charge, nous vous recommandons vivement d’implémenter le protocole PROXY. Lorsqu’aucune prise en charge PROXY n’est disponible, il est également possible d’équilibrer la charge des ports HTTP et HTTPS en utilisant l’en-tête X-Forwarded-For.

Avertissement de sécurité : Quand la prise en charge du proxy ou le transfert HTTP sont activés, aucun trafic externe ne doit pouvoir accéder directement aux appliances GitHub Enterprise Server . Si le trafic externe n’est pas correctement bloqué, les adresses IP sources peuvent être falsifiées.

Avertissement : Quand des connexions HTTPS se terminent sur un équilibreur de charge, les demandes de l’équilibreur de charge vers GitHub Enterprise Server doivent également utiliser HTTPS. Le passage de la connexion HTTPS à HTTP n’est pas pris en charge.

Activation de la prise en charge du protocole PROXY sur votre instance GitHub Enterprise Server

Nous vous recommandons vivement d’activer la prise en charge du protocole PROXY pour votre instance et l’équilibreur de charge. Conformez-vous aux instructions fournies par votre fournisseur pour activer le protocole PROXY sur votre équilibreur de charge. Pour plus d'informations, consultez la documentation du protocole PROXY.

Remarque : GitHub Enterprise Server prend en charge le protocole PROXY V1, qui n’est pas compatible avec les équilibreurs de charge réseau AWS. Si vous utilisez des équilibreurs de charge réseau AWS avec GitHub Enterprise Server, n’activez pas la prise en charge de PROXY.

  1. À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.

  2. Si vous ne figurez pas déjà sur la page « Administrateur du site », dans le coin supérieur gauche, cliquez sur Administrateur du site.

  3. Dans la barre latérale «  Administrateur de site », cliquez sur Management Console .

  4. Dans la barre latérale « Paramètres », cliquez sur Confidentialité et décochez Mode Confidentialité.

  5. Sous « Équilibreurs de charge externes », sélectionnez Activer la prise en charge du protocole PROXY.

  6. Sous la barre latérale « Paramètres », cliquez sur Enregistrer les paramètres.

    Remarque : l’enregistrement des paramètres dans la Management Console redémarre les services système, ce qui peut entraîner un temps d’arrêt visible pour l’utilisateur.

  7. Attendez la fin de l’exécution de la configuration.

Mappages de ports TCP du protocole PROXY

Port sourcePort de destinationDescription du service
2223Git via SSH
8081HTTP
443444HTTPS
80808081HTTP Management Console
84438444HTTPS Management Console
94189419Git

Activation de la prise en charge de X-Forwarded-For sur votre instance GitHub Enterprise Server

Utilisez le protocole X-Forwarded-For uniquement lorsque le protocole PROXY n’est pas disponible. L’en-tête X-Forwarded-For est uniquement compatible avec HTTP et HTTPS. Pour les connexions Git via SSH, l’adresse IP indiquée sera celle de l’équilibreur de charge. Dans certains environnements, les adresses IP clientes dans le journal d’audit de l’instance peuvent s’afficher de manière incorrecte en tant que 127.0.0.1.

Avertissement : Si vous configurez la prise en charge de X-Forwarded-For sur votre instance GitHub Enterprise Server et l’équilibreur de charge, vous risquez de ne pas pouvoir vous connecter à la Management Console. Pour plus d’informations, consultez « Utilisation de GitHub Enterprise Server avec un équilibreur de charge ».

  1. À partir d’un compte d’administration sur GitHub Enterprise Server, cliquez sur en haut à droite de n’importe quelle page.

  2. Si vous ne figurez pas déjà sur la page « Administrateur du site », dans le coin supérieur gauche, cliquez sur Administrateur du site.

  3. Dans la barre latérale «  Administrateur de site », cliquez sur Management Console .

  4. Dans la barre latérale « Paramètres », cliquez sur Confidentialité et décochez Mode Confidentialité.

  5. Sous Équilibreurs de charge externes, sélectionnez Autoriser l’en-tête HTTP X-Forwarded-For.

  6. Sous la barre latérale « Paramètres », cliquez sur Enregistrer les paramètres.

    Remarque : l’enregistrement des paramètres dans la Management Console redémarre les services système, ce qui peut entraîner un temps d’arrêt visible pour l’utilisateur.

  7. Attendez la fin de l’exécution de la configuration.

Mappages de ports TCP de protocole à utiliser sans prise en charge de PROXY

Port sourcePort de destinationDescription du service
2222Git via SSH
2525SMTP
8080HTTP
443443HTTPS
80808080HTTP Management Console
84438443HTTPS Management Console

Configuration des contrôles d’intégrité

Les contrôles d’intégrité permettent à un équilibreur de charge d’arrêter l’envoi de trafic à un nœud qui ne répond pas si une vérification préconfigurée échoue sur ce nœud. Si l’instance est hors connexion pour des raisons de maintenance ou à la suite d’une défaillance inattendue, l’équilibreur de charge peut afficher une page d’état. Dans une configuration à haute disponibilité (HA), un équilibreur de charge peut être utilisé dans le cadre d’une stratégie de basculement. Cependant, le basculement automatique des paires HA n’est pas pris en charge. Vous devez promouvoir manuellement l’instance de réplica pour qu’elle commence à traiter les requêtes. Pour plus d’informations, consultez « Configuration de la haute disponibilité ».

Configurez l’équilibreur de charge pour vérifier l’URL suivante.

http(s)://HOSTNAME/status

Le point de terminaison retourne le code d’état 200 (OK) si le nœud est sain et disponible pour les requêtes de l’utilisateur final. Pour plus d’informations, consultez « Surveillance d’une configuration de haute disponibilité ».

Remarque : lorsque l’appliance est en mode maintenance, l’URL https://HOSTNAME/status retourne le code de statut 503 (Service indisponible). Pour plus d’informations, consultez « Activation et planification du mode de maintenance ».

Résolution des problèmes de connectivité via un équilibreur de charge

Si vous ne pouvez pas vous connecter aux services de votre instance GitHub Enterprise Server via un équilibreur de charge, vous pouvez passer en revue les informations suivantes pour résoudre le problème.

Remarque : Testez toujours les changements apportés à votre infrastructure réseau et à la configuration de l’instance dans un environnement de préproduction. Pour plus d’informations, consultez « Configuration d’une instance de préproduction ».

Erreur : « Votre session a expiré » pour les connexion à la Management Console

Si vous activez la prise en charge de l’en-tête X-Forwarded-For sur l’instance et l’équilibreur de charge, vous ne pourrez peut-être pas accéder à la Management Console de votre instance. Pour plus d’informations sur la Management Console et les ports nécessaires aux connexions, consultez « Géstion de votre instance à partir de l’IU WEB. » et « Ports réseau ».

Si votre instance GitHub Enterprise Server indique que votre session a expiré quand vous vous connectez à la Management Console via un équilibreur de charge, essayez l’une des configurations suivantes sur votre équilibreur de charge.

Pour plus d’informations, consultez la documentation de votre équilibreur de charge.

Les mises à jour automatiques des problèmes et des exécutions de vérifications ne fonctionnent pas

Quand votre instance GitHub Enterprise Server est accessible via un équilibreur de charge ou un proxy inverse, les mises à jour automatiques attendues, par exemple les nouveaux commentaires sur les problèmes ainsi que les changements apportés aux badges de notification ou à la sortie des exécutions de vérifications, ne s’affichent pas toujours tant que la page n’est pas actualisée. Cela est très courant quand le proxy inverse ou l’équilibreur de charge s’exécute en mode Couche 7, ou qu’il ne prend pas en charge le protocole websocket nécessaire.

Pour activer les mises à jour automatiques, vous devrez peut-être reconfigurer l’équilibreur de charge ou le proxy. Pour plus d’informations, consultez la documentation de votre équilibreur de charge.