Skip to main content

Clusternetzwerk-Konfiguration

GitHub Enterprise Server Clustering basiert auf der richtigen DNS-Namensauflösung, dem Lastausgleich und der Kommunikation zwischen den Knoten, um ordnungsgemäß zu funktionieren.

Ü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 dem Netzwerk mit den aktiven Knoten und dem Netzwerk mit den passiven Knoten muss kleiner als 70 Millisekunden sein, um Hochverfügbarkeit zu gewährleisten. Es wird nicht empfohlen, eine Firewall zwischen den beiden Netzwerken zu konfigurieren.

Anwendungsports für Endbenutzer

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

PortBESCHREIBUNGVerschlüsselt
22/TCPGit über SSHJa
25/TCPSMTPErfordert STARTTLS
80/TCPHTTPNein
(Wenn SSL aktiviert ist, leitet dieser Port Elemente an HTTPS weiter.)
443/TCPHTTPSJa
9418/TCPEinfacher Git-Protokollport
(Im privaten Modus deaktiviert)
Nein

Verwaltungsports

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

PortBESCHREIBUNGVerschlüsselt
ICMPICMP-PingNein
122/TCPVerwaltungs-SSHJa
161/UDPSNMPNein
8080/TCPHTTP für ManagementkonsoleNein
(Wenn SSL aktiviert ist, leitet dieser Port Elemente an HTTPS weiter.)
8443/TCPHTTPS für ManagementkonsoleJa

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.

Warnung: 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.

Hinweis: 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 funktioniert nur mit HTTP und HTTPS. Die für Git-Verbindungen über SSH gemeldete IP-Adresse zeigt die Load-Balancer-IP.

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 Load-Balancer, um eine der folgenden URLs zu überprüfen:

  • https://HOSTNAME/status wenn HTTPS aktiviert ist (Standard)
  • http://HOSTNAME/status wenn HTTPS deaktiviert ist

Bei der Überprüfung wird der Statuscode 200 (OK) zurückgegeben, wenn der Knoten fehlerfrei ist und zum Beantworten von Endbenutzeranforderungen verfügbar ist.

Hinweis: Wenn sich die Appliance im Wartungsmodus befindet, gibt die URL https://HOSTNAME/status den Statuscode 503 (Dienst nicht verfügbar) zurück. Weitere Informationen findest du unter Aktivieren und Planen des Wartungsmodus.

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 Aktivieren der Subdomain-Isolation.