Note
Für GitHub Enterprise Server sind maximal 8 Hochverfügbarkeitsreplikate (sowohl passive als auch aktive/geo-Replikate sowie Repository-Cache-Instanzen) zulässig.
Hochverfügbarkeitsreplikat erstellen
-
Richte eine neue GitHub Enterprise Server-Appliance auf deiner gewünschten Plattform ein. Die Replikat-Appliance sollte die CPU-, RAM- und Speichereinstellungen der primären Appliance spiegeln. Du solltest die Replikat-Appliance in einer unabhängigen Umgebung installieren. Die zugrunde liegenden Hardware-, Software und Netzwerkkomponenten sollten von denen der primären Appliance isoliert sein. Wenn du einen Cloud-Anbieter verwendest, solltest du eine separate Region oder Zone verwendest. Weitere Informationen findest du unter GitHub Enterprise Server-Instanz einrichten.
-
Stelle sicher, dass die neue Appliance mit allen übrigen Appliances in dieser Hochverfügbarkeitsumgebung über die Ports 122/TCP und 1194/UDP kommunizieren kann. Weitere Informationen findest du unter Netzwerkports.
-
Navigiere in einem Browser zur IP-Adresse der neuen Replikat-Appliance, und lade deine GitHub Enterprise-Lizenz hoch.
-
Lege ein Administratorpasswort fest, das dem Passwort auf der primären Appliance entspricht, und setze den Vorgang fort.
-
Klicken Sie auf Replikatknoten erstellen.
-
Gib unter „Add new SSH key“ (Neuen SSH-Schlüssel hinzufügen) deinen SSH-Schlüssel ein.
-
Klicke auf Schlüssel hinzufügen.
-
Stelle mittels SSH eine Verbindung zur IP-Adresse der Replikat-Appliance her.
ssh -p 122 admin@REPLICA_IP
-
Führe zum Generieren eines Schlüsselpaars zur Replikation den Befehl
ghe-repl-setup
mit der IP-Adresse der primären Appliance aus, und kopiere den zurückgegebenen öffentlichen Schlüssel.ghe-repl-setup PRIMARY_IP
-
Um den öffentlichen Schlüssel der Liste autorisierter Schlüssel auf der primären Appliance hinzuzufügen, navigiere zu
https://PRIMARY-HOSTNAME/setup/settings
, und füge der Liste den Schlüssel hinzu, den du vom Replikat kopiert hast. -
Führe erneut
ghe-repl-setup
aus, um die Verbindung mit dem primären Replikat zu überprüfen und den Replikatmodus für das neue Replikat zu aktivieren.ghe-repl-setup PRIMARY_IP
-
Um die Replikation der Datenspeicher zu starten, verwende den Befehl
ghe-repl-start
.ghe-repl-start
Warnung:
ghe-repl-start
verursacht einen kurzen Ausfall des primären Servers. Währenddessen wird Benutzern möglicherweise ein interner Serverfehler angezeigt. Um eine benutzerfreundlichere Meldung bereitzustellen, führeghe-maintenance -s
auf dem primären Knoten aus, bevor dughe-repl-start
auf dem Replikatknoten ausführest, um die Appliance in den Wartungsmodus zu versetzen. Nachdem die Replikation gestartet wurde, deaktiviere den Wartungsmodus mitghe-maintenance -u
. Die Git-Replikation wird nicht fortgesetzt, während sich der primäre Knoten im Wartungsmodus befindet. -
Führe den Befehl
ghe-repl-status
aus, um den Status des Replikationskanals jedes Datenspeichers zu überprüfen.ghe-repl-status
Replikate der Geo-Replikation erstellen
Diese Beispielkonfiguration verwendet eine primäre Instanz und zwei Replikate, die sich in drei unterschiedlichen geografischen Regionen befinden. Obwohl sich die drei Knoten in unterschiedlichen Netzwerken befinden können, müssen alle Knoten über alle anderen Knoten zugänglich sein. Die erforderlichen Verwaltungsports sollten mindestens für alle anderen Knoten geöffnet sein. Weitere Informationen zu diesen Portanforderungen findest du unter Netzwerkports.
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. Wenn die Latenz mehr als 70 Millisekunden beträgt, empfehlen wir stattdessen Cachereplikatknoten. Weitere Informationen findest du unter Konfigurieren eines Repository-Caches.
-
Erstelle das erste Replikat genauso wie bei einer Standardkonfiguration mit zwei Knoten, indem du
ghe-repl-setup
für das erste Replikat ausführst.(replica1)$ ghe-repl-setup PRIMARY_IP (replica1)$ ghe-repl-start
-
Erstelle ein zweites Replikat, und verwende den Befehl
ghe-repl-setup --add
. Das--add
Flag verhindert, dass die vorhandene Replikationskonfiguration überschrieben wird, und fügt der Konfiguration das neue Replikat hinzu.(replica2)$ ghe-repl-setup --add PRIMARY_IP (replica2)$ ghe-repl-start
-
Standardmäßig sind die Replikate für dasselbe Rechenzentrum konfiguriert und versuchen nun, ein Seeding von einem vorhandenen Knoten im selben Rechenzentrum durchzuführen. Konfiguriere die Replikate für unterschiedliche Rechenzentren, indem du für die Rechenzentrumsoption einen anderen Wert festlegst. Die entsprechenden Werte sind beliebig, sie müssen sich nur voneinander unterscheiden. Führe den Befehl
ghe-repl-node
für jeden Knoten aus, und gib das Rechenzentrum an.Auf der primären Instanz:
(primary)$ ghe-repl-node --datacenter [PRIMARY DC NAME]
Auf dem ersten Replikat:
(replica1)$ ghe-repl-node --datacenter [FIRST REPLICA DC NAME]
Auf dem zweiten Replikat:
(replica2)$ ghe-repl-node --datacenter [SECOND REPLICA DC NAME]
Tip
Du kannst die Optionen
--datacenter
und--active
gleichzeitig festlegen. -
Ein aktiver Replikatknoten speichert Kopien der Appliance-Daten und verarbeitet Anforderungen von Endbenutzern. Ein inaktiver Knoten speichert Kopien der Appliance-Daten, kann die Anforderungen von Endbenutzern jedoch nicht verarbeiten. Aktiviere mit dem Flag
--active
den aktiven Modus oder mit dem Flag--inactive
den inaktiven Modus.Auf dem ersten Replikat:
(replica1)$ ghe-repl-node --active
Auf dem zweiten Replikat:
(replica2)$ ghe-repl-node --active
-
Verwende zum Anwenden der Konfiguration den Befehl
ghe-config-apply
für das primäre Replikat.(primary)$ ghe-config-apply
DNS für Geo-Replikation konfigurieren
Konfiguriere Geo DNS mit den IP-Adressen auf der primären Instanz und auf den Replikatknoten. Du kannst auch einen DNS CNAME für den primären Knoten erstellen (z. B. primary.github.example.com
), um über SSH auf den primären Knoten zuzugreifen oder um ihn über backup-utils
zu sichern.
Zu Testzwecken kannst du der Datei hosts
der lokalen Arbeitsstation Einträge hinzufügen (zum Beispiel /etc/hosts
). Diese Beispieleinträge lösen Anforderungen für HOSTNAME
in replica2
auf. Du kannst auf spezifische Hosts abzielen, indem du unterschiedliche Zeilen auskommentierst.
# <primary IP> HOSTNAME
# <replica1 IP> HOSTNAME
<replica2 IP> HOSTNAME