Informationen zur Evakuierung von Clusterknoten, auf denen Datendienste ausgeführt werden
In einer Clusterkonfiguration für GitHub Enterprise Server kann es vorkommen, dass du einen einzelnen Knoten offline schalten musst. Beispielsweise musst du vielleicht den virtuellen Computer (VM) des Knotens ersetzen. Wenn der Knoten, den du ersetzen möchtest, auf der Speicherebene arbeitet, empfiehlt GitHub, zuerst die Datendienste des Knotens zu evakuieren. Durch die Evakuierung wird sichergestellt, dass die verbleibenden Knoten die mindestens erwarteten Kopien der Daten enthalten.
Weitere Informationen zu Knoten und Dienstebenen für GitHub Enterprise Server findest du unter Informationen zu Clusterknoten.
Warnungen:
-
Um Datenverluste während der Ersetzung eines Knotens zu vermeiden, empfiehlt GitHub dringend, vor dem Offlineschalten des Knotens die entsprechenden Datendienste auf dem Knoten zu evakuieren.
-
Um die Redundanz für jeden Datendienst in deinem Cluster sicherzustellen, sollten auf mindestens drei Knoten Kopien der Daten vorhanden sein. Wenn beispielsweise vier oder mehr Knoten Git-Daten speichern, werden evakuierte Repositorydaten von dem Knoten, den du evakuierst, während der Evakuierung auf die anderen drei Knoten verschoben. Wenn du nur drei Knoten hast, die Daten für einen Dienst speichern, kann die Evakuierung eines Knotens fehlschlagen und zu unterreplizierten Daten führen.
Evakuieren eines Clusterknotens, auf dem Datendienste ausgeführt werden
Wenn du einen Knoten offline schalten willst und der Knoten eine der folgenden Rollen ausführt, evakuiere jeden betroffenen Dienst, bevor du den Knoten offline nimmst.
Dienst | Daten |
---|---|
git-server | Repositorys |
pages-server | Sitebuilds für GitHub Pages |
storage-server |
|
-
SSH in einen beliebigen Knoten in deinem Cluster. Weitere Informationen findest du unter Auf die Verwaltungsshell (SSH) zugreifen.
-
Führe den folgenden Befehl aus, um die UUID des zu evakuierenden Knotens zu ermitteln. Ersetze HOSTNAME durch den Hostnamen des Knotens. Du verwendest die UUID (Universally Unique Identifier, universell eindeutiger Bezeichner) in nachfolgenden Befehlen.
ghe-config cluster.HOSTNAME.uuid
-
Führe für jeden betroffenen Dienst auf dem Knoten die folgenden Befehle aus, um die anfängliche Datenanzahl zu ermitteln. Ersetze die UUID in jedem Befehl durch die UUID aus dem vorherigen Schritt.
-
git-server
:-
Befehl:
ghe-spokesctl server status git-server-UUID
-
Relevante Ausgabe:
NETWORKS
,GISTS
-
-
pages-server
:-
Befehl:
echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
-
-
storage-server
:-
Befehl:
ghe-storage evacuation-status storage-server-UUID
-
Relevante Ausgabe:
Remaining item(s)
-
-
-
Führe die folgenden Befehle aus, um einen betroffenen Dienst auf dem Knoten zu evakuieren. Ersetze die UUID in jedem Befehl durch die UUID aus dem obigen Schritt.
-
git-server
:-
Befehl (ersetze REASON FOR EVACUATION durch den Grund für die Evakuierung):
ghe-spokesctl server set evacuating git-server-UUID 'REASON FOR EVACUATION'
-
-
pages-server
:-
Befehl:
ghe-dpages evacuate pages-server-UUID
-
-
storage-server
:-
Führe den folgenden Befehl aus, um den Dienst des Knotens offline zu schalten.
ghe-storage offline storage-server-UUID
-
Führe den folgenden Befehl aus, um den Knoten zu evakuieren.
ghe-storage evacuate storage-server-UUID
-
-
-
Führe die folgenden Befehle aus, um die Evakuierung eines Diensts zu überwachen, während GitHub Enterprise Server die Daten kopiert. Ersetze die UUID in jedem Befehl durch die UUID aus dem obigen Schritt.
Warnung: Fahre den Knoten erst herunter, wenn die Evakuierung abgeschlossen ist. Die Evakuierung ist abgeschlossen, wenn die Datenanzahl null ist (dies bedeutet, dass alle Daten sicher auf anderen Knoten gespeichert wurden).
-
git-server
:ghe-spokesctl server evac-status git-server-UUID
-
pages-server
:echo "select count(*) from pages_replicas where host = 'pages-server-UUID'" | ghe-dbconsole -y
-
storage-server
:ghe-storage evacuation-status storage-server-UUID
-
-
Fahre den Knoten herunter, nachdem die Evakuierung für den Dienst abgeschlossen ist.