Netzwerkkonfiguration
GitHub Enterprise Server Clustering basiert auf der richtigen DNS-Namensauflösung, dem Lastausgleich und der Kommunikation zwischen den Knoten, um ordnungsgemäß zu funktionieren.
Grundlegendes zu Netzwerken
Das einfachste Netzwerkdesign für Clustering besteht darin, die Knoten in einem einzelnen LAN zu platzieren. Wenn ein redundanter Cluster mehrere Subnetze abdecken muss, sollten zwischen den Subnetzen entsprechende Routen verfügbar sein. Zudem sollte die Latenz kleiner als 1 ms sein.
Anwendungsports für Endbenutzer
Mit Anwendungsports können Endbenutzer auf Webanwendungen und Git zugreifen.
Port | Beschreibung | Verschlüsselt |
---|---|---|
22/TCP | Git über SSH | Ja |
25/TCP | SMTP | Erfordert STARTTLS |
80/TCP | HTTP | Nein
(Wenn SSL aktiviert ist, leitet dieser Port Elemente an HTTPS weiter) |
443/TCP | HTTPS | Ja |
9418/TCP | Einfacher Git-Protokollport
(Im privaten Modus deaktiviert) |
Nein |
Verwaltungsports
Verwaltungsports sind für die einfache Verwendung von Anwendungen durch Endbenutzer nicht erforderlich.
Port | Beschreibung | Verschlüsselt |
---|---|---|
ICMP | ICMP Ping | Nein |
122/TCP | Verwaltungs-SSH | Ja |
161/UDP | SNMP | Nein |
8080/TCP | HTTP für Managementkonsole | Nein
(Wenn SSL aktiviert ist, leitet dieser Port Elemente an HTTPS weiter) |
8443/TCP | HTTPS für Managementkonsole | Ja |
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.
Port | Beschreibung |
---|---|
1336/TCP | Interne API |
3033/TCP | Interner SVN-Zugriff |
3037/TCP | Interner SVN-Zugriff |
3306/TCP | MySQL |
4486/TCP | Governor-Zugriff |
5115/TCP | Storage-Back-End |
5208/TCP | Interner SVN-Zugriff |
6379/TCP | Redis |
8001/TCP | Grafana |
8090/TCP | Interner GPG-Zugriff |
8149/TCP | GitRPC-Dateiserverzugriff |
9000/TCP | Git-Daemon |
9102/TCP | Pages-Dateiserver |
9105/TCP | LFS-Server |
9200/TCP | ElasticSearch |
9203/TCP | Dienst für semantischen Code |
9300/TCP | ElasticSearch |
11211/TCP | Memcache |
161/UDP | SNMP |
8125/UDP | Statsd |
25827/UDP | Collectd |
Load-Balancer konfigurieren
Sie sollten einen externen TCP-basierten Load-Balancer verwenden, der das PROXY-Protokoll unterstützt, um den Traffic auf die Knoten zu verteilen. Beachten Sie 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: When terminating HTTPS connections on a load balancer, the requests from the load balancer to GitHub Enterprise Server also need to use HTTPS. Downgrading the connection to HTTP is not supported.
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.
If your load balancer can support it, we strongly recommend implementing the PROXY protocol. When no PROXY support is available, it is also possible to load balance the HTTP and HTTPS ports using the X-Forwarded-For
header.
Security Warning: When either PROXY support or HTTP forwarding is enabled, it is critical that no external traffic can directly reach the GitHub Enterprise Server appliances. If external traffic is not properly blocked, the source IP addresses can be forged.
PROXY-Unterstützung auf GitHub Enterprise Server aktivieren
Es wird dringend empfohlen, die PROXY-Unterstützung für Ihre Instanz und für den Load-Balancer zu aktivieren.
-
Führen Sie für Ihre Instanz den folgenden Befehl aus:
$ ghe-config 'loadbalancer.proxy-protocol' 'true' && ghe-cluster-config-apply
- Verwenden Sie für den Load-Balancer die von Ihrem Anbieter bereitgestellten Anweisungen.
PROXY protocol TCP port mappings
Source port | Destination port | Service description |
---|---|---|
22 | 23 | Git über SSH |
80 | 81 | HTTP |
443 | 444 | HTTPS |
8080 | 8081 | HTTP für Managementkonsole |
8443 | 8444 | HTTPS für Managementkonsole |
9418 | 9419 | Git |
X-Forwarded-For-Unterstützung für GitHub Enterprise Server aktivieren
Use the X-Forwarded-For protocol only when the PROXY protocol is unavailable. The X-Forwarded-For
header only works with HTTP and HTTPS. The IP address reported for Git connections over SSH will show the load balancer IP.
Führen Sie zum Aktivieren des Headers X-Fowarded-For
den folgenden Befehl aus:
$ ghe-config 'loadbalancer.http-forward' 'true' && ghe-cluster-config-apply
Protocol TCP port mappings for use without PROXY support
Source port | Destination port | Service description |
---|---|---|
22 | 22 | Git über SSH |
25 | 25 | SMTP |
80 | 80 | HTTP |
443 | 443 | HTTPS |
8080 | 8080 | HTTP für Managementkonsole |
8443 | 8443 | HTTPS 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.
Configure the load balancer to check one of these URLs:
https://HOSTNAME/status
if HTTPS is enabled (default)http://HOSTNAME/status
if HTTPS is disabled
The check will return status code 200
(OK) if the node is healthy and available to service end-user requests.
Note: When the appliance is in maintenance mode, the https://HOSTNAME/status
URL will return status code 503
(Service Unavailable). For more information, see "Enabling and scheduling maintenance mode."
DNS-Anforderungen
DNS lookups for the GitHub Enterprise Server hostname should resolve to the load balancer. We recommend that you enable subdomain isolation. If subdomain isolation is enabled, an additional wildcard record (*.HOSTNAME
) should also resolve to the load balancer. Weitere Informationen finden Sie unter „Subdomain-Isolation aktivieren“.