Wir müssen einen Linux-Dienst im laufenden Betrieb klonen, nicht nur, weil wir ihn nicht neu starten können oder so. Es liegt nur an unserem speziellen Szenario (ja, ich habe diese Antwort bereits gelesen, aber es unterscheidet sich ein wenig von meinem Clone, einem funktionierenden Linux-Server ).
Wir haben einen Berechnungsknoten, Sie können sagen, einen NLP-Berechnungsknoten, auf dem einige Modelle ausgeführt werden. Wenn wir den Knoten starten (natürlich mit einem Service), wird die Berechnung schrecklich langsam sein, bis wir ihn mehrmals füttern. Wir haben es Aufwärmen genannt.
Leider dauert es lange, bis der Aufwärmvorgang abgeschlossen ist (möglicherweise ist die Berechnung abgeschlossen, bevor sich der Knoten aufgewärmt hat).
Das Problem ist also, ob es eine stabile Möglichkeit gibt, einen Linux-Server im laufenden Betrieb zu klonen, um die bestmögliche Leistung des Knotens zu erzielen, damit wir ihn in kürzerer Zeit klonen und online stellen können.
Antworten:
Möglicherweise können Sie nicht einen ganzen Server im laufenden Betrieb "klonen" (Sie können es, aber nur, wenn es sich um eine virtuelle Maschine handelt), aber Sie können einen einzelnen Prozess mit criu , Checkpoint / Restore in Userspace einfrieren und wiederherstellen .
Auf diese Weise können Sie den internen Status des Programms auf der Festplatte speichern und das Programm stoppen und später das Programm aus den gespeicherten Dateien in diesem Status wiederherstellen.
Um den gewünschten Vorgang zu unterstützen, können Sie die Dateien, die das gespeicherte Programm darstellen, auf einen anderen Server kopieren und dort wiederherstellen.
criu benötigt einen aktuellen Kernel mit verschiedenen Funktionen, so dass ältere Linux-Distributionen möglicherweise nicht funktionieren. Sie können
criu check
auf einem bestimmten Computer ausführen , um festzustellen, ob die Voraussetzungen für criu vorliegen.quelle
Möglicherweise liegt es außerhalb Ihres aktuellen Umfelds, aber die branchenübliche Vorgehensweise besteht darin, Ihren Server zu virtualisieren. Viele Virtualisierungshosts (VMware, VirtualBox usw.) ermöglichen "Snapshots", die den Status eines Servers speichern und dann in neue Instanzen geklont werden können. Diese neuen Instanzen haben genau den gleichen Status wie die ursprünglichen, bis auf laufende Prozesse. Natürlich möchten Sie sicherstellen, dass die Software, die Sie ausführen, in einer virtuellen Umgebung immer noch ordnungsgemäß funktioniert (die Berechnung von CUDA / GPU ist denkbar).
quelle
Die Frage, die Sie erwähnen, bezieht sich auf einen Link, http://www.linuxfocus.org/English/March2005/article370.shtml , der alle Möglichkeiten beschreibt, die ich mir vorgestellt hatte, um Ihre Anforderungen zu erfüllen.
Dass die Optionen vorhanden sind, bedeutet nicht viel für die Ausführung auf dem Server. Sie müssen berücksichtigen, dass alle Dateien, die sich beim Klonen ändern können, inkonsistente Dateien auf dem Zielcomputer sein können. In diesem Beitrag, den Sie angeben, wird über Datenbanken gesprochen, und das Klonen auf diese Weise bietet keine Garantie für die Datenintegrität.
Es ist nicht ganz klar, was Sie damit gemeint haben, "bis wir es mehrmals füttern" .
Aber wenn ich richtig verstanden habe, was Sie verlangen, müssen Sie berücksichtigen, dass zum Klonen eines Systems Zeit zum Kopieren und Berechnen von Ressourcen erforderlich ist.
Um eine "ON / OF" - oder besser "Active / Backup" -Umgebung durchzuführen, muss der Server im Cluster ordnungsgemäß konfiguriert sein.
Es tut mir leid, wenn dies nicht die Antwort ist, die Sie erwarten, aber Sie haben die folgenden Optionen.
quelle
Es gibt viele potenzielle Probleme mit dem, was Sie versuchen, und natürlich ist es, wie Sie wissen, am besten, den Server offline zu schalten und zu klonen, während keine Daten dynamisch gespeichert werden.
Was Sie jedoch tun möchten, ist durchaus plausibel, so wie ich es zuvor getan habe. Wenn Sie verwenden
dd
, können Sie den vollständigen Server auf Blockebene auf ein anderes Laufwerk oder einen anderen Server klonen. Auf dem neuen Server ist jedoch eine zusätzliche Einrichtung erforderlich, und Sie können den anderen Server wahrscheinlich nicht einfach aus- und den neuen Server einschalten. Um dies zu verstehen, müssen wir einige Dinge über Ihre Serverhardware und -software wissen.Erstens wäre es hilfreich zu wissen, was regelmäßig aktualisiert wird, um die beste Datenstrategie zu bestimmen. Haben Sie einen SQL Server, der dynamisch aktualisiert wird, aber statischen Inhalt hat? Haben Sie alternativ ein Entwicklerteam, das über ein Subversion-System wie git verfügt und ständig Datenaktualisierungen an Ihre Inhalte sendet? Je nachdem, was aktualisiert wird, wird die beste Vorgehensweise ermittelt.
Wenn beispielsweise nur SQL regelmäßig aktualisiert wird, können Sie auf folgende Weise auf einen neuen Server migrieren, während dieser Server aktiv ist:
dd
um alle daten auf den neuen server zu klonen.Möglicherweise müssen Sie Ihren ursprünglichen Server vorübergehend offline schalten, um sicherzustellen, dass Sie keine Daten verpassen. Um keine Ausfallzeit zu haben, können Sie alternativ die zweite live schalten, den DNS auf den neuen Server verweisen und dann alle DNS-Einträge auf dem neuen Server manuell aktualisieren, sodass praktisch keine Ausfallzeit entsteht. Dies ist zwar umständlicher als ein paar Minuten Ausfallzeit, um die SQL zu sichern und auf dem neuen Server wiederherzustellen, kann jedoch für eine Ausfallzeit von null erforderlich sein .
Dies ist natürlich nur ein Anwendungsfallbeispiel. Abhängig von Ihrer Konfiguration und mehreren Variablen müssen Sie möglicherweise eine eigene Strategie für die Migration erstellen, die auf Ihrem speziellen Fall basiert.
Das andere Problem betrifft die Serverhardwarekonfiguration. Ist der neue Server in der Hardware 100% identisch mit dem alten Server? Wenn ja, ist die Einrichtung einfacher. Wenn es sich jedoch um eine völlig andere Hardwarekonfiguration handelt, müssen Sie möglicherweise eine andere Strategie implementieren: Richten Sie einfach den zweiten Server im Voraus ein und sichern Sie dann alle Ihre Daten und SQL-Datenbanken auf den ersten Server und migrieren Sie sie manuell über und ändern Sie die Konfiguration nach Bedarf.
Die Servermigration ist keineswegs trivial. Um einen erfolgreichen Umzug durchführen zu können, müssen Sie über fundierte Kenntnisse der Server oder der Mitarbeiter verfügen, die über die gleichen Kenntnisse verfügen. In jedem Fall wird dringend empfohlen, sofort ein vollständiges Backup zu erstellen und es auf einer dritten Quelle zu speichern, auch auf Ihrem lokalen Computer, damit Sie im schlimmsten Fall (wenn beide Server abstürzen und irreparabel ausfallen) immer noch eine andere haben Kopie Ihrer Daten zum Wiederaufbau Ihrer Server mit.
Hoffe das hilft und viel Glück beim Serverumzug!
quelle