Skip to main content

Clusternetzwerk-Konfiguration

Ein GitHub Enterprise Server-Cluster erfordert die richtige DNS-Namensauflösung, den Lastausgleich und die Kommunikation zwischen den Knoten.

Wer kann dieses Feature verwenden?

GitHub bestimmt die Berechtigung zum Clustering und muss die Konfiguration für die Lizenz deiner Instanz aktivieren. Das Clustering erfordert eine sorgfältige Planung und zusätzlichen Verwaltungsaufwand. Weitere Informationen findest du unter Informationen zu Clustering.

Informationen zum Netzwerk für ein GitHub Enterprise Server-Cluster

Jeder Knoten in deinem GitHub Enterprise Server-Cluster muss über das Netzwerk mit allen anderen Knoten im Cluster kommunizieren können. Du kannst die erforderlichen Ports und Protokolle für Endbenutzer*innen, Verwaltung und Kommunikation zwischen den Knoten überprüfen. Um Datenverkehr auf Front-End-Knoten zu verteilen, empfiehlt GitHub die Konfiguration eines externen Lastenausgleichs.

Überlegungen zu Netzwerken

Das einfachste Netzwerkdesign für Clustering besteht darin, die Knoten in einem einzelnen LAN zu platzieren. Wenn ein Cluster mehrere Subnetzwerke abdecken muss, sollten zwischen den Netzwerken keine Firewallregeln konfiguriert werden. Zudem sollte die Latenz kleiner als 1 ms sein.

Die Latenz zwischen primären und Replikatknoten muss kleiner als 70 Millisekunden sein. Es wird nicht empfohlen, eine Firewall zwischen den Netzwerken der Knoten zu konfigurieren.

Anwendungsports für Endbenutzer

Mit Anwendungsports können Endbenutzer auf Webanwendungen und Git zugreifen.

PortBESCHREIBUNGVerschlüsselt
22/TCPGit über SSH
25/TCPSMTPErfordert STARTTLS
80/TCPHTTP

Wenn SSL aktiviert ist, leitet dieser Port Elemente an HTTPS weiter.
443/TCPHTTPS
9418/TCPEinfacher Git-Protokollport
(Im privaten Modus deaktiviert)

Verwaltungsports

Verwaltungsports sind für die einfache Verwendung von Anwendungen durch Endbenutzer nicht erforderlich.

PortBESCHREIBUNGVerschlüsselt
ICMPICMP-Ping
122/TCPVerwaltungs-SSH
161/UDPSNMP
8080/TCPHTTP für Managementkonsole

Wenn SSL aktiviert ist, leitet dieser Port Elemente an HTTPS weiter.
8443/TCPHTTPS für Managementkonsole

Clusterkommunikationsports

Wenn sich zwischen Knoten eine Firewall auf Netzwerkebene befindet, müssen diese Ports zugänglich sein. Die Kommunikation zwischen Knoten ist nicht verschlüsselt. Diese Ports sollten extern nicht zugänglich sein.

PortBESCHREIBUNG
1336/TCPInterne API
3033/TCPInterner SVN-Zugriff
3037/TCPInterner SVN-Zugriff
3306/TCPMySQL
4486/TCPGovernor-Zugriff
5115/TCPSpeicher-Back-End
5208/TCPInterner SVN-Zugriff
6379/TCPRedis
8001/TCPGrafana
8090/TCPInterner GPG-Zugriff
8149/TCPGitRPC-Dateiserverzugriff
8300/TCPConsul
8301/TCPConsul
8302/TCPConsul
9000/TCPGit-Daemon
9102/TCPPages-Dateiserver
9105/TCPLFS-Server
9200/TCPElasticsearch
9203/TCPDienst für semantischen Code
9300/TCPElasticsearch
11211/TCPMemcache
161/UDPSNMP
8125/UDPStatsd
8301/UDPConsul
8302/UDPConsul
25827/UDPCollectd

Load-Balancer konfigurieren

Du solltest einen externen TCP-basierten Load-Balancer verwenden, der das PROXY-Protokoll unterstützt, um den Traffic auf die Knoten zu verteilen. Beachte die folgenden Load-Balancer-Konfigurationen:

  • TCP-Ports (siehe unten) sollten an Knoten weitergeleitet werden, auf denen der Dienst web-server ausgeführt wird. Dies sind die einzigen Knoten, die externe Clientanfragen verarbeiten.
  • Sticky Sessions sollten nicht aktiviert werden.

Warning

Wenn HTTPS-Verbindungen in einem Lastenausgleich beendet werden, müssen die vom Lastenausgleich an GitHub Enterprise Server gesendeten Anforderungen ebenfalls HTTPS verwenden. Das Downgraden der Verbindung auf HTTP wird nicht unterstützt.

Clientverbindungsinformationen verarbeiten

Da Clientverbindungen zum Cluster vom Load-Balancer stammen, kann die Client-IP-Adresse verloren gehen. Zum entsprechenden Erfassen der Clientverbindungsinformationen sind zusätzliche Überlegungen nötig.

Wenn Dein Load-Balancer das PROXY-Protokoll unterstützen kann, wird dringend empfohlen, es zu implementieren. Wenn keine PROXY-Unterstützung verfügbar ist, kann auch mithilfe des X-Forwarded-For-Headers der Lastenausgleich auf den HTTP- und HTTPS-Ports vorgenommen werden.

Sicherheitswarnung: Wenn entweder die PROXY-Unterstützung oder die HTTP-Weiterleitung aktiviert ist, ist es von entscheidender Bedeutung, dass kein externer Datenverkehr die GitHub Enterprise Server-Appliances direkt erreichen kann. Wenn der externe Traffic nicht ordnungsgemäß blockiert wird, kann die IP-Quelladresse gefälscht werden.

PROXY-Unterstützung auf GitHub Enterprise Server

aktivieren

Es wird dringend empfohlen, die PROXY-Unterstützung für deine Instanz und für den Load-Balancer zu aktivieren.

Note

GitHub Enterprise Server unterstützt PROXY Protocol V1, welches nicht mit AWS Network Load Balancers kompatibel ist. Wenn du AWS Network Load Balancers mit GitHub Enterprise Server verwendest, aktiviere nicht die PROXY-Unterstützung.

  • Führe für deine Instanz den folgenden Befehl aus:

    ghe-config 'loadbalancer.proxy-protocol' 'true' && ghe-cluster-config-apply
    
  • Verwende für den Load-Balancer die von deinem Anbieter bereitgestellten Anweisungen.

PROXY-Protokoll – TCP-Portzuordnungen

QuellportZielportDienstbeschreibung
2223Git über SSH
8081HTTP
443444HTTPS
80808081HTTP für Managementkonsole
84438444HTTPS für Managementkonsole
94189419Git

X-Forwarded-For-Unterstützung für GitHub Enterprise Server

aktivieren

Verwende das X-Forwarded-For-Protokoll nur, wenn das PROXY-Protokoll nicht verfügbar ist. Der X-Forwarded-For-Header ist nur mit HTTP und HTTPS kompatibel. Bei Git-Verbindungen über SSH wird als IP-Adresse die des Load Balancers angegeben. In einigen Umgebungen werden Client-IP-Adressen im Überwachungsprotokoll der Instanz möglicherweise fälschlicherweise als 127.0.0.1angezeigt.

Führe zum Aktivieren des Headers X-Forwarded-For den folgenden Befehl aus:

ghe-config 'loadbalancer.http-forward' 'true' && ghe-cluster-config-apply

Protokoll – TCP-Portzuordnungen für die Verwendung ohne PROXY-Unterstützung

QuellportZielportDienstbeschreibung
2222Git über SSH
2525SMTP
8080HTTP
443443HTTPS
80808080HTTP für Managementkonsole
84438443HTTPS für Managementkonsole

Zustandsprüfungen konfigurieren

Zustandsprüfungen ermöglichen einem Load-Balancer, das Senden von Traffic an einen nicht antwortenden Knoten zu stoppen, wenn eine vorkonfigurierte Prüfung auf diesem Knoten fehlschlägt. Wenn ein Clusterknoten fehlschlägt, bieten die mit den redundanten Knoten gekoppelten Zustandsprüfungen Hochverfügbarkeit.

Konfiguriere den Lastenausgleich, um die folgende URL zu überprüfen.

http(s)://HOSTNAME/status

Der Endpunkt gibt den Statuscode 200 (OK) zurück, wenn der Knoten fehlerfrei ist und zum Beantworten von Endbenutzeranforderungen verfügbar ist. Weitere Informationen findest du unter Überwachen einer Hochverfügbarkeitskonfiguration.

Note

Wenn sich die Anwendung im Wartungsmodus befindet, gibt die URL https://HOSTNAME/status den Statuscode 503 (Service Unavailable) zurück. Weitere Informationen findest du unter Wartungsmodus aktivieren und planen.

DNS-Anforderungen

DNS-Nachschlagevorgänge für den GitHub Enterprise Server-Hostnamen sollten im Load-Balancer aufgelöst werden. Es wird empfohlen, dass Du die Subdomain-Isolation aktivierst. Bei aktivierter Subdomain-Isolation sollte ein zusätzlicher Platzhaltereintrag (*.HOSTNAME) ebenfalls im Lastenausgleich aufgelöst werden. Weitere Informationen findest du unter Subdomain-Isolation aktivieren.