Alle Systeme betriebsbereit 8 akzeptierte Kryptowährungen · Monero willkommen KYC-freie Richtlinie
KernelVPS

Migration

Einen VPS ohne Downtime zu einem neuen Host migrieren

Ein Server-Umzug ist keine Kopie. Es handelt sich um eine kontrollierte Übergabe zwischen zwei Maschinen, die eine Weile lang beide gleichzeitig laufen, und genau in dieser Überlappung steckt die ganze Schwierigkeit. Hier ist die Abfolge, mit der jeder Request beantwortet wird — vom ersten TTL-Wechsel bis zu dem Moment, in dem Sie die alte Festplatte endgültig löschen.

Infrastruktur16 Min. Lesezeit LesezeitKernelVPS-Team

Einen VPS ohne Downtime zu einem neuen Host migrieren

Die meisten Migrationen scheitern nicht während der Kopie. Sie scheitern in den zwanzig Minuten nach der DNS-Änderung, wenn die eine Hälfte des Internets noch mit dem alten Server spricht und die andere Hälfte bereits umgezogen ist — und beide Maschinen Schreibvorgänge annehmen. Die Dateien sind vollständig angekommen, die Seite lädt, und trotzdem landen Bestellungen in zwei Datenbanken, die sich nie wieder zusammenführen lassen. Das zu vermeiden hat fast nichts mit der Übertragungsgeschwindigkeit zu tun und fast alles mit der Reihenfolge: was Sie zuerst ändern, was Sie einfrieren, und was Sie laufen lassen, bis Sie sich sicher sind.

Was keine Downtime wirklich bedeutet

Es lohnt sich, hier präzise zu sein, denn die Formulierung deckt zwei sehr unterschiedliche Versprechen ab, die sehr unterschiedlich viel Aufwand kosten. Zu entscheiden, welches davon Sie eigentlich wollen, ist die erste echte Entscheidung der Migration.

Keine DowntimeJeder Request wird durchgehend beantwortet, vom einen oder anderen Server. Erreichbar für alles, was überwiegend liest oder zustandslos ist, und erreichbar für die meisten datenbankgestützten Websites, wenn Sie ein kurzes Zeitfenster akzeptieren, in dem Schreibvorgänge abgelehnt werden, Lesevorgänge aber weiterhin funktionieren.
Kein DatenverlustNichts, was auf dem alten Server geschrieben wurde, fehlt auf dem neuen. Das ist die schwierigere Garantie, und es ist die, die wirklich zählt. Eine zweiminütige Fehlerseite ist ein Ärgernis; eine verlorene Bestellung ist ein Support-Ticket, das nie geschlossen wird.
In der Praxis keins von beidemDas Standardergebnis, wenn niemand die Überlappung plant: Die Seite geht nie offline, und Schreibvorgänge verteilen sich still und leise eine Stunde lang auf zwei Maschinen. Es sieht aus wie eine perfekte Migration — bis jemand nach einem Datensatz sucht, der nur auf einem Server existiert, den Sie bereits gekündigt haben.

Wenn Sie eines von beiden opfern müssen, opfern Sie die Verfügbarkeit. Eine Wartungsseite für vier Minuten lässt sich erklären. Auseinanderlaufende Daten lassen sich nicht reparieren, weil es keine Instanz mehr gibt, die sagen kann, welche Kopie richtig war.

Schreiben Sie auf, bevor Sie anfangen, wie lange die längste Schreibsperre sein darf, die Sie tolerieren können. Vier Minuten, dreißig Sekunden, null. Diese eine Zahl entscheidet über alles Weitere — ob ein Dump mit Wiederherstellung reicht, ob Sie Replikation brauchen, oder ob Sie einen Proxy vor das Ganze schalten müssen. Erst das Werkzeug zu wählen und dann die Zahl ist der Grund, warum Migrationen ihre Überraschungen bekommen.

Machen Sie die Inventur, bevor Sie die Kopie machen

Ein Server sammelt im Lauf der Zeit Dinge an, die niemand dokumentiert hat: einen Cronjob, der während eines Vorfalls hinzugefügt wurde, eine Firewall-Regel für die Adresse eines Partners, einen API-Schlüssel, der in eine Service-Datei eingefügt wurde. Die Kopie nimmt das alles nicht mit, und Sie werden es in den folgenden zwei Wochen Stück für Stück entdecken. Eine halbe Stunde Inventur jetzt erspart Ihnen fast das Ganze.

Was lauscht

Führen Sie ss -tulpn aus und erfassen Sie jeden lauschenden Socket. Jeder davon ist ein Dienst, der auf der neuen Maschine existieren muss, und jeder unerklärte Port lohnt sich zu verstehen, bevor Sie ihn replizieren — eine Migration ist ein guter Moment, um zu bemerken, was schon seit 2023 läuft.

Was auf einem Timer läuft

crontab -l für jeden Benutzer einschließlich root, systemctl list-timers, und jeder Scheduler innerhalb der Anwendung selbst. Timer sind mit Abstand das Häufigste, das eine Migration verdoppelt übersteht — und Duplikate sind schlimmer als Fehlendes.

Was nicht auf der Festplatte liegt

DNS-Einträge, das Reverse-DNS Ihrer Adresse, Firewall-Regeln, API-Schlüssel, die bei Dritten hinterlegt sind, Webhook-Ziele, und jede Allowlist irgendwo sonst, die Ihre aktuelle IP nennt. Nichts davon liegt in dem Dateisystem, das Sie gleich kopieren.

Was die Anwendung voraussetzt

Fest codierte absolute Pfade, ein Hostname in einer Config-Datei, der Ort eines Datenbank-Sockets, eine Adresse in einer Bind-Direktive. Das sind die Dinge, die still und leise kaputtgehen — der Dienst startet, und funktioniert dann einfach nicht.

Schreiben Sie es in eine Datei, die Sie in der Versionsverwaltung pflegen, nicht in den Terminal-Verlauf. Sie werden es während der Umschaltung dreimal lesen — einmal in einem Moment, in dem Sie nicht klar denken.

Wählen Sie das Ziel nach den Dingen, die Sie später nicht mehr ändern können

Specs lassen sich anpassen; ein paar Eigenschaften nicht, und die sind es wert, bewusst entschieden zu werden, solange Sie noch die freie Wahl haben. Da Sie ohnehin umziehen, ist dies der günstigste Moment, den Sie je bekommen werden, um eine Einschränkung zu beheben, mit der Sie bislang nur umgegangen sind.

  • Standort, weil sowohl die Latenz zu Ihren Nutzern als auch das anwendbare Recht dadurch festgelegt werden. /locations listet die Regionen und ihre Round-Trip-Eigenschaften auf; wählen Sie eine, die unabhängig von der ausfällt, die Sie verlassen.
  • Rechtliche Grundlage, falls der Grund für den Umzug ist, dass Ihr aktueller Anbieter Beschwerden schneller weiterleitet als Pakete. /offshore-hosting legt dar, was die Jurisdiktion wirklich kontrolliert und was nicht.
  • Abrechnungsidentität, denn ein Host, der Dokumente verlangt, bevor er eine Zahlung akzeptiert, hat allein dadurch eine Akte über Sie. /no-kyc-vps und /pay-with beschreiben die Alternative — ein mit Krypto aufgeladenes Guthaben, keine Karte, kein Name, der mit der Maschine verknüpft ist.
  • Reserven, denn zweimal migrieren zu müssen ist das Ergebnis, mit dem niemand plant. /vps listet die Stufen auf, und /guides enthält die Methode zur Dimensionierung, falls die aktuelle Maschine noch nie wirklich vermessen wurde.
  • IPv6 und eine saubere IPv4, denn eine recycelte Adresse kann mit dem Ruf eines anderen im Gepäck ankommen — prüfen Sie das, bevor es zu einem Mail-Problem wird.

Senken Sie zuerst die DNS-TTL, Tage vorher

Das ist der eine Vorbereitungsschritt, den Sie am Ende nicht hastig nachholen können, weil seine Wirkung von einer Uhr abhängt, die Sie nicht kontrollieren. Die TTL Ihrer Einträge sagt Resolvern, wie lange sie eine Antwort cachen sollen. Steht sie auf einen Tag, schickt ein Resolver, der vor einer Stunde gefragt hat, Nutzer die nächsten dreiundzwanzig Stunden weiter zum alten Server — ganz gleich, was Sie inzwischen veröffentlichen.

  1. 1

    Aktuelle TTL auslesen

    dig +noall +answer yourdomain.com zeigt die verbleibende Cache-Zeit; fragen Sie Ihren autoritativen Nameserver direkt mit dig @ns1.example.net yourdomain.com ab, um den konfigurierten Wert zu sehen. Notieren Sie ihn — er bestimmt die Länge Ihrer Wartezeit.

  2. 2

    Auf 300 Sekunden senken

    Senken Sie die TTL bei jedem Eintrag, der sich ändern wird: A, AAAA und jeder MX- oder CNAME-Eintrag, der auf den Host zeigt. Fünf Minuten sind kurz genug, um die Umschaltung angenehm zu machen, und lang genug, um Ihre Nameserver nicht zu überlasten.

  3. 3

    Die alte TTL aussitzen, dann noch einmal warten

    Die neue, kurze TTL erreicht einen Resolver erst, nachdem die alte, lange abgelaufen ist. Warten Sie mindestens eine volle alte TTL-Periode — einen Tag, wenn es ein Tag war —, bevor Sie die niedrige TTL als gültig betrachten. Früh damit anzufangen kostet nichts und verschafft der ganzen Umschaltung ihren Puffer.

Manche Resolver ignorieren Ihre TTL und cachen trotzdem für ihr eigenes Minimum, und ein Teil der Clients cacht für die gesamte Lebensdauer des Prozesses. Rechnen Sie damit, dass auch nach einem lehrbuchhaft perfekten Wechsel noch stundenlang ein langer Schwanz an Traffic die alte Adresse erreicht. Das ist kein Grund, die TTL-Arbeit auszulassen — es ist der Grund, warum der alte Server danach am Leben bleiben muss.

Bauen Sie den neuen Server neu auf, klonen Sie nicht den alten

Der Instinkt sagt: die aktuelle Festplatte imagen und anderswo wiederherstellen. Das ist der falsche Schritt, aus demselben Grund, aus dem er bei einer Wiederherstellung falsch ist: Ein Klon auf Blockebene reproduziert originalgetreu die Config-Drift, die verwaisten Pakete, den halb konfigurierten Dienst, den jemand aufgegeben hat, und jede Persistenz, die ein früherer Eindringling hinterlassen hat. Außerdem bindet er Sie an das alte Distributions-Release.

Bauen Sie die neue Maschine aus einem aktuellen Basis-Image auf, installieren Sie die Dienste aus einem Skript, und kopieren Sie nur die Daten. Das Skript ist das eigentliche Ergebnis — es macht aus der nächsten Migration einen Nachmittag statt zwei Wochen, und es lässt Sie nach einem Vorfall neu aufbauen, ohne Archäologie betreiben zu müssen.

  • Provisionieren, aktualisieren und härten, bevor irgendetwas anderes sie berührt: SSH nur mit Schlüsseln, eine Firewall mit Default-Deny, unbeaufsichtigte Sicherheitsupdates. /guides hat die einstündige Version dieser Checkliste.
  • Installieren Sie dieselben Major-Versionen von Runtime und Datenbank wie in der Produktion. Eine Migration ist ein schlechter Zeitpunkt, um nebenbei auch noch PostgreSQL 14 auf 17 hochzuziehen — ändern Sie eine Sache nach der anderen, damit ein Fehlschlag genau eine Erklärung hat.
  • Legen Sie Benutzer und Gruppen mit denselben numerischen IDs neu an, bevor Sie Dateien kopieren, oder korrigieren Sie die Besitzrechte hinterher von Hand. Die Übertragung mit --numeric-ids hält die Nummern intakt; sie den richtigen Namen wieder zuzuordnen ist Ihre Aufgabe.
  • Tragen Sie die neue Adresse in jede Allowlist ein, die aktuell die alte nennt — Partner-APIs, verwaltete Datenbank-Firewalls, Zahlungs-Gateways, Ihr eigenes Monitoring — solange beide noch gültig sind.

Installieren Sie die Dienste, dann stoppen und deaktivieren Sie sie. Ein Webserver, der beim Boot startet und auf der neuen Adresse antwortet, wird von Scannern gefunden, unter dem falschen Hostnamen indexiert und — schlimmer noch — liefert bereitwillig eine halb befüllte Kopie Ihrer Seite an jeden, der früh auflöst. Nichts auf der neuen Maschine sollte öffentlich antworten, bevor Sie das entscheiden.

Kopieren Sie die Dateien in zwei Durchgängen

Eine einzelne Übertragung eines laufenden Dateisystems ist eine Momentaufnahme eines bewegten Ziels. Zwei Durchgänge lösen das sauber: Der erste ist lang und läuft gegen ein laufendes System, der zweite ist kurz und läuft während der Schreibsperre, und nur der zweite muss schnell sein.

Führen Sie den ersten Durchgang aus, wann immer Sie wollen — Tage vorher ist völlig in Ordnung. Er trägt den Großteil: das Uploads-Verzeichnis, den Mail-Spool, die Container-Volumes, die über Jahre angesammelten Medien. Er wird bis zur Umschaltung veraltet sein, und genau dafür ist der zweite Durchgang da.

  • Verwenden Sie rsync -aAXH --numeric-ids --info=progress2 über SSH: -a für die üblichen Attribute, -A für ACLs, -X für erweiterte Attribute, -H für Hardlinks, die wichtig sind, falls irgendetwas auf der Maschine dedupliziert.
  • Schließen Sie aus, was nicht mitreisen sollte: /proc, /sys, /dev, /run, die temporären Verzeichnisse, den Paket-Cache und Logs, die Sie nicht brauchen. Kernel-Schnittstellen zu kopieren verschwendet bestenfalls Zeit und lässt die Übertragung schlimmstenfalls hängen bleiben.
  • Fügen Sie --delete nur beim zweiten Durchgang hinzu. Beim ersten ist es harmlos; beim zweiten entfernt es Dateien, die seitdem an der Quelle gelöscht wurden — genau die Drift, die Sie beseitigen wollen.
  • Kopieren Sie die Systemkonfiguration gezielt statt pauschal. Sie wollen Ihre Webserver-vhosts, Ihre Service-Units und Ihre Anwendungskonfiguration — nicht die Dateisystemtabelle, die Netzwerkkonfiguration oder die Maschinen-ID der alten Maschine.
  • Erzeugen Sie für die Übertragung einen Wegwerf-SSH-Schlüssel, autorisieren Sie ihn auf dem Ziel, und entfernen Sie ihn, wenn die Migration abgeschlossen ist. Ein Migrationsschlüssel, der zwei Jahre lang liegen bleibt, ist eine Zugangsberechtigung, an deren Vergabe sich niemand mehr erinnert.

Prüfen Sie zwischen den Durchgängen nach, statt es anzunehmen. Der zweite Durchgang mit --dry-run gibt genau aus, was er ändern würde: Eine Liste von ein paar hundert aktuellen Dateien ist gesund, eine Liste von vierzigtausend bedeutet, dass ein Ausschluss falsch ist oder irgendetwas ohne Grund Zeitstempel neu schreibt.

Die Datenbank umziehen, ohne Schreibvorgänge zu verlieren

Hier wird das Budget der Schreibsperre verbraucht, und die richtige Technik ergibt sich vollständig aus der Zahl, die Sie zu Beginn notiert haben. Alle drei Optionen unten sind richtig — für unterschiedliche Zahlen.

Dump und Wiederherstellung — Schreibsperre im MinutenbereichSchreibvorgänge stoppen, mit pg_dump oder mit mysqldump --single-transaction dumpen, übertragen, wiederherstellen, die Anwendung auf den neuen Host zeigen lassen. Einfach, portabel über Engine-Versionen hinweg, und für bis zu ein paar Gigabyte völlig ausreichend. Die Schreibsperre dauert so lange wie Dump plus Übertragung plus Wiederherstellung — stoppen Sie das also zuerst an einer Kopie, statt die Zahl live zu entdecken.
Replikation — Schreibsperre im SekundenbereichRichten Sie den neuen Server Tage im Voraus als Replikat des alten ein und lassen Sie ihn aktuell bleiben. Bei der Umschaltung stoppen Sie die Schreibvorgänge, warten, bis das Replikat aufgeholt hat, befördern es, und lassen die Anwendung darauf zeigen. Bei MySQL und MariaDB zeichnet mysqldump --single-transaction --source-data=2 die Binlog-Position auf, ab der das Replikat starten soll (--master-data=2 bei älteren Versionen). Bei PostgreSQL pg_basebackup plus Streaming-Replikation, oder logische Replikation, wenn sich die Major-Versionen unterscheiden.
Dual-Write — keine SchreibsperreDie Anwendung schreibt während der Überlappung in beide Datenbanken. Das erreicht wirklich eine Schreibsperre von null — und es ist die einzige Option hier, die beide Kopien beschädigen kann, wenn die Abgleichslogik fehlerhaft ist. Lohnt sich, wo dreißig Sekunden abgelehnter Schreibvorgänge ein vertragliches Problem sind; für alles andere übertrieben.

Für welche Option Sie sich auch entscheiden: Die alte Datenbank muss aufhören, Schreibvorgänge anzunehmen, bevor die neue damit beginnt. Nicht kurz danach — davor. Die Überlappung, in der beide beschreibbar sind, ist das Split-Brain-Fenster, und es ist der einzige Fehlschlag in dieser gesamten Anleitung ohne sauberen Weg zurück: zwei auseinandergelaufene Datenstände und keine Möglichkeit, sie zusammenzuführen, ohne Zeilen von Hand zu lesen.

Dumpen Sie Schema und Daten getrennt, wenn der Datenbestand groß ist. Das Schema zuerst wiederherzustellen lässt Sie Struktur, Indizes und Berechtigungen auf dem neuen Host frühzeitig prüfen, wodurch das Laden der Daten zu einer einzigen langen Operation wird, die Sie während der Schreibsperre schon im Vertrauen starten können, dass sie ankommt.

Stellen Sie das TLS-Zertifikat vor dem Wechsel aus, nicht danach

Das Zertifikat auf dem neuen Server muss in dem Moment gültig sein, in dem der erste Nutzer eintrifft. Andernfalls trifft jeder Besucher auf eine Browser-Warnseite, und wenn Sie HSTS-Header senden — was Sie tun sollten —, können sie sich nicht durchklicken. Es gibt zwei Wege, ein funktionierendes Zertifikat zu besitzen, bevor DNS irgendwohin Neues zeigt.

  • Kopieren Sie das vorhandene. Das gesamte ACME-State-Verzeichnis, oder nur Zertifikat und Schlüssel von dort, wo Ihr Client sie aufbewahrt. Es ist sofort gültig, weil Gültigkeit nichts damit zu tun hat, welcher Server die Datei besitzt, und die Erneuerung läuft normal weiter, sobald DNS umgezogen ist.
  • Stellen Sie ein neues mit einer DNS-01-Challenge aus, die die Kontrolle über die Domain über einen TXT-Eintrag statt über einen HTTP-Request an die aktuelle Adresse nachweist. Das funktioniert vor der Migration, vor der Umschaltung, und für Wildcards, was HTTP-01 überhaupt nicht kann.
  • Versuchen Sie vor dem Wechsel keine HTTP-01-Validierung auf dem neuen Server. Die Challenge wird über Port 80 unter dem Domainnamen abgerufen, die Domain löst noch immer zur alten Maschine auf, und die Validierung schlägt jedes Mal fehl.

Prüfen Sie es, ohne DNS anzufassen, indem Sie den Hostnamen für einen einzelnen Befehl auf die neue Adresse auflösen: curl -sI --resolve yourdomain.com:443:198.51.100.10 https://yourdomain.com/ — mit der echten Adresse anstelle der Platzhalter. Diese eine Zeile ist die wertvollste Prüfung der gesamten Migration. Sie durchläuft den echten vhost, das echte Zertifikat und den echten Anwendungsstack auf der neuen Maschine, und so finden Sie die Fehlkonfiguration, während das Finden noch nichts kostet.

Wenn der Server Mails versendet, fangen Sie früher an

Mail ist der Teil einer Migration, der erst Tage später ausfällt, leise, und auf etwas anderes geschoben wird. Eine neue Adresse hat keine eigene Versandreputation und hat möglicherweise die eines anderen geerbt, und jeder Authentifizierungseintrag, den Sie veröffentlichen, ist an die Adresse gebunden, die Sie verlassen.

  • Prüfen Sie die neue Adresse gegen die wichtigsten Blocklists, bevor Sie sich auf sie festlegen. Eine recycelte IP mit Vorgeschichte lohnt es sich zu tauschen, solange der Tausch noch nichts kostet.
  • Setzen Sie den Reverse-DNS-Eintrag der neuen Adresse auf Ihren Mail-Hostnamen. Empfangende Server prüfen, ob Forward- und Reverse-Auflösung übereinstimmen, und ein fehlender PTR allein reicht schon, um als Spam einsortiert zu werden.
  • Fügen Sie die neue Adresse vor der Umschaltung zu SPF hinzu und entfernen Sie die alte danach — beide während der Überlappung gelistet, sodass Mail unabhängig davon authentifiziert, welcher Server sie tatsächlich versendet hat.
  • Kopieren Sie die privaten DKIM-Schlüssel, statt neue zu erzeugen, damit der bereits in DNS veröffentlichte Selector weiter gültig bleibt. Neu erzeugen bedeutet neu veröffentlichen, und neu veröffentlichen hat seine eigene Propagationsverzögerung.
  • Wärmen Sie die neue Adresse schrittweise auf, wenn Sie in nennenswertem Volumen versenden. Ein Server, der seine gesamte Existenz lang nichts verschickt hat und dann zehntausend Nachrichten ausstößt, ist für einen Empfänger nicht von einem kompromittierten Host zu unterscheiden.

Die Umschaltung

Alles oben war Vorbereitung dafür, dass dieser Teil kurz, geordnet und umkehrbar ist. Erledigen Sie ihn dann, wenn Ihr Traffic tatsächlich am niedrigsten ist, nicht aus Aberglauben um 3 Uhr nachts — prüfen Sie Ihre eigenen Analytics. Schreiben Sie den Rollback auf, bevor Sie anfangen, denn im Moment, in dem Sie ihn brauchen, werden Sie am wenigsten Lust haben, ihn erst zu verfassen.

  1. 1

    Schreibvorgänge auf dem alten Server einfrieren

    Wartungsmodus, ein schreibgeschützter Datenbankbenutzer, oder ein Fehler auf Schreibpfaden am Reverse Proxy. Lesevorgänge werden die ganze Zeit weiter von der alten Maschine bedient — das hält die Seite oben, während die Daten umziehen.

  2. 2

    Jeden Timer auf dem alten Server deaktivieren

    Kommentieren Sie die Crontabs aus, stoppen Sie die Timer, stoppen Sie die Queue-Worker. Ab diesem Punkt darf die alte Maschine nichts mehr verarbeiten, sonst laufen Jobs doppelt: zwei Rechnungen, zwei E-Mails, zwei Webhook-Zustellungen.

  3. 3

    Das finale Delta ausführen

    Der zweite Datei-Durchgang mit --delete, dann der finale Datenbank-Dump oder das Aufholen des Replikats. Das ist der kurze — höchstens Minuten —, weil der erste Durchgang bereits das Volumen bewegt hat.

  4. 4

    Den neuen Server gegen seinen echten Hostnamen prüfen

    Nutzen Sie den --resolve-Trick von oben, um eine Seite zu testen, die aus der Datenbank liest, einen Login und einen Schreibpfad. Bestätigen Sie, dass die Zeilenzahlen mit der Quelle übereinstimmen. Tun Sie das alles, bevor DNS sich ändert, solange ein Rollback noch überhaupt nichts kostet.

  5. 5

    DNS umschalten und die Dienste starten

    Aktualisieren Sie A und AAAA auf die neue Adresse, dann aktivieren und starten Sie die Anwendung und ihre Timer auf dem neuen Server. Traffic beginnt innerhalb einer TTL einzutreffen und verlagert sich über die folgende Stunde weiter.

  6. 6

    Den alten Server weiter Lesevorgänge bedienen lassen

    Lassen Sie ihn mindestens vierundzwanzig Stunden lang laufen, schreibgeschützt. Clients mit veralteten Caches landen weiterhin dort, und ein schreibgeschützter alter Server liefert leicht veraltete Seiten statt einer verweigerten Verbindung — der Unterschied zwischen einer unsichtbaren Migration und einer sichtbaren.

In der Überlappung steckt auch der sauberste Trick. Statt eines harten DNS-Wechsels konfigurieren Sie den alten Server am Ende von Schritt fünf als Reverse Proxy zum neuen um. Jeder Nachzügler, der noch zur alten Adresse auflöst, wird transparent weitergeleitet, die Umschaltung hängt überhaupt nicht mehr von der DNS-Propagation ab, und Sie bauen den Proxy ab, sobald der Traffic zu ihm auf null sinkt. Geben Sie X-Forwarded-For weiter, damit Ihre Logs und Rate Limits weiterhin die echten Client-Adressen sehen.

Die ersten 48 Stunden

Die Migration ist nicht fertig, wenn die Seite lädt. Sie ist fertig, wenn nichts mehr von der alten Maschine abhängt — und diese Abhängigkeiten zu finden ist eine aktive Übung, kein Abwarten.

  • Beobachten Sie das Access-Log des alten Servers. Jeder Request, der dort noch ankommt, ist eine nicht migrierte Abhängigkeit — eine fest codierte Adresse in einer Partner-Integration, ein mobiler Client mit veraltetem Cache, eine Monitoring-Probe, die niemandem mehr gehört. Das Log ist die To-do-Liste.
  • Bestätigen Sie, dass die Timer auf dem neuen Host tatsächlich gelaufen sind. Nicht, dass sie aktiviert sind — dass sie gelaufen sind, zur erwarteten Zeit, mit der erwarteten Ausgabe. Ein Cronjob, der still und leise nichts tut, sieht genauso aus wie ein Cronjob, der funktioniert.
  • Testen Sie die Zertifikatserneuerung wirklich mit einem Dry Run, statt in sechzig Tagen zu entdecken, dass Ihr ACME-Client gegen einen Server erneuert hat, der die Challenge nicht mehr empfängt.
  • Prüfen Sie den Mailfluss Ende zu Ende in beide Richtungen, einschließlich allem, was die Anwendung automatisch versendet. Passwort-Resets sind der klassische Ausfall, weil niemand sie testet, bis ein Nutzer einen braucht.
  • Erstellen Sie ein Backup des neuen Servers und stellen Sie es irgendwo wieder her. Eine frische Maschine ohne geprüftes Backup ist eine schlechtere Position als die, die Sie verlassen haben; /guides hat die ausführliche Version dieses Arguments.
  • Setzen Sie die DNS-TTL auf ihren normalen Wert zurück, sobald Sie sich sicher sind. Sie für immer bei 300 Sekunden zu belassen ist ein kleiner dauerhafter Preis in Form von Queries und Latenz, dem kein verbleibender Nutzen mehr gegenübersteht.

Den alten Server außer Dienst stellen

Der letzte Schritt ist der, der übersprungen wird, und es ist der einzige mit einer Konsequenz für die Privatsphäre. Die alte Festplatte enthält Ihre Schlüssel, Ihre Datenbank, Ihre Kundendaten und Ihre Logs, und den Dienst zu kündigen löscht nichts davon — es gibt das Volume zurück in einen Pool, aus dem der nächste Mieter bekommt, was auch immer die Löschrichtlinie des Anbieters übrig gelassen hat.

  • Warten Sie, bis das alte Access-Log still wird, bevor Sie irgendetwas anfassen. Zu kündigen, während ein Zahlungsanbieter noch Webhooks an die alte Adresse sendet, ist der Weg, auf dem aus einer Migration eine Woche später ein Vorfall wird.
  • Rotieren Sie, statt nur zu löschen: alle Zugangsdaten, die der alte Server hielt — API-Schlüssel, Datenbank-Passwörter, Deploy-Keys, den temporären Migrationsschlüssel. Gehen Sie davon aus, dass alles, was auf einer Maschine lag, die Sie nicht mehr kontrollieren, kompromittiert ist — irgendwann ist es das nämlich.
  • Überschreiben Sie die Daten, bevor Sie das Volume freigeben. Schreddern Sie die sensiblen Verzeichnisse, oder füllen Sie den freien Speicherplatz mit einer großen Zufallsdatei und löschen Sie sie. Auf einer virtualisierten Festplatte unvollkommen, aber weitaus besser als nichts.
  • Erstellen Sie ein letztes Archiv von allem, was Sie vielleicht noch zum Nachschlagen brauchen — Logs, Konfiguration, die Shell-History, die dokumentiert, was tatsächlich getan wurde — und bewahren Sie es verschlüsselt an einem Ort auf, der keiner der beiden Server ist.
  • Kündigen Sie den Dienst erst, nachdem der neue einen vollen Abrechnungszyklus und einen vollständigen Backup-und-Restore-Test überstanden hat. Dieser Überlappungsmonat ist die billigste Versicherung im gesamten Prozess.

Ein Zeitplan zum Nachmachen

Nichts davon ist für sich genommen schwierig. Migrationen gehen schief, weil die Schritte auf einen einzigen Abend zusammengepresst werden, an dem die TTL noch nicht abgelaufen ist, das Zertifikat nicht getestet wurde und der Rollback nicht aufgeschrieben ist. Über eine Woche verteilt sind es pro Tag zwanzig Minuten Arbeit.

T-7 TageInventarisieren Sie den alten Server. Provisionieren und härten Sie den neuen. Installieren und konfigurieren Sie die Dienste, dann stoppen und deaktivieren Sie sie. Tragen Sie die neue Adresse in die Allowlists Dritter ein.
T-3 TageSenken Sie die DNS-TTL auf 300 Sekunden. Starten Sie den ersten Datei-Durchgang. Richten Sie Replikation ein, falls das Budget der Schreibsperre es verlangt. Setzen Sie den Reverse-DNS-Eintrag und fügen Sie die neue Adresse zu SPF hinzu.
T-1 TagKopieren oder stellen Sie das TLS-Zertifikat aus. Prüfen Sie den neuen Server Ende zu Ende mit dem --resolve-Trick. Stoppen Sie einen vollständigen Dump und eine Wiederherstellung an einer Kopie, damit die Dauer der Schreibsperre gemessen statt geschätzt ist. Schreiben Sie den Rollback auf.
T-0Frieren Sie Schreibvorgänge ein. Deaktivieren Sie die alten Timer. Finaler Datei-Durchgang und finale Datenbank-Synchronisation. Prüfen. DNS umschalten. Dienste auf dem neuen Host starten. Den alten weiter Lesevorgänge bedienen lassen.
T+1 TagDurchsuchen Sie das alte Access-Log nach Nachzüglern. Bestätigen Sie, dass die Timer gelaufen sind. Testen Sie Mail in beide Richtungen. Erstellen Sie ein Backup des neuen Servers und stellen Sie es wieder her.
T+30 TageRotieren Sie alle Zugangsdaten, die der alte Server hielt. Löschen Sie seine Daten sicher. Kündigen Sie ihn. Setzen Sie die DNS-TTL zurück auf normal.

Wie Migrationen wirklich schiefgehen

Nicht durch die Kopie. Durch die Dinge, die nie auf der Festplatte waren, und die Dinge, die doppelt liefen.

  • Beide Server schreiben gleichzeitig — das Split-Brain-Fenster, und der einzige Fehlschlag hier ohne saubere Lösung. Verhindert wird das durch Reihenfolge, nicht durch Werkzeuge: erst den alten stoppen, dann den neuen starten.
  • Timer, die auf beiden Maschinen laufen — so bekommen Kunden von allem zweimal etwas. Deaktivieren Sie die alten vor der finalen Synchronisation, nicht danach.
  • Eine TTL, die nie gesenkt wurde, macht aus einer Fünf-Minuten-Umschaltung einen tagelangen Schwanz, für den niemand Personal eingeplant hat.
  • Dateibesitz, der falsch ankommt, weil die numerischen IDs zwischen den Maschinen abweichen — die Anwendung startet und kann dann nicht in ihr eigenes Upload-Verzeichnis schreiben.
  • Ein Zertifikat, das nach dem Wechsel erledigt werden sollte, trifft auf einen HSTS-Header, der Besuchern keine Möglichkeit lässt fortzufahren.
  • Eine Adresse, die irgendwo fest codiert ist, das Sie nicht kontrollieren — eine Partner-Integration, eine Firewall-Regel, ein DNS-Eintrag für eine Subdomain, von der Sie vergessen hatten, dass es sie gibt.
  • Den alten Server am Tag des Umzugs zu kündigen — das nimmt den Rollback-Weg genau in dem Moment, in dem die Statistik sagt, dass Sie ihn am wahrscheinlichsten brauchen werden.
Wie lange dauert eine VPS-Migration?

Die Arbeit sind typischerweise ein paar Stunden, verteilt über eine Woche, und der für Nutzer sichtbare Teil sind Minuten. Die Hauptübertragung und die TTL-Reduzierung finden Tage im Voraus statt, während alles live bleibt; die Umschaltung selbst ist eine finale Delta-Synchronisation, eine DNS-Änderung und ein Prüfdurchgang. Eine Seite mit ein paar Gigabyte an Daten und einer bescheidenen Datenbank ist bequem in einer Dreißig-Minuten-Umschaltung machbar, mit einer Schreibsperre im einstelligen Minutenbereich.

Kann ich komplett ohne Downtime migrieren?

Ja, für Lesevorgänge — der alte Server antwortet weiter, bis DNS umzieht, und ihn danach in einen Reverse Proxy zu verwandeln beseitigt sogar den Propagations-Schwanz. Schreibvorgänge sind der schwierigere Fall: Eine kurze Schreibsperre ist mit Abstand der einfachste Weg, um zu garantieren, dass nichts verloren geht, und Replikation verkürzt diese Schreibsperre auf Sekunden. Eine echte Schreibsperre von null erfordert, dass die Anwendung während der Überlappung in beide Datenbanken schreibt, was machbar ist, aber einen Fehlermodus hinzufügt, den die meisten Seiten nicht brauchen.

Sollte ich die Festplatte klonen oder den Server neu aufbauen?

Neu aufbauen. Ein Klon trägt die Config-Drift, die verwaisten Pakete und jede Persistenz mit, die eine frühere Kompromittierung hinterlassen hat, und er bindet Sie an das alte Distributions-Release. Aus einem Skript zu installieren und nur die Daten zu kopieren gibt Ihnen eine saubere Maschine plus ein wiederholbares Rezept — und genau das macht auch den nächsten Neuaufbau schnell.

Was passiert mit meiner IP-Adresse und meinem Suchranking?

Die Adresse ändert sich; die Domain nicht, und Links, Rankings und Historie folgen der Domain. Halten Sie die URLs identisch, lassen Sie den alten Server während der Überlappung weiter antworten, sodass kein Crawler je einen Verbindungsfehler sieht, und die Änderung ist für Suchmaschinen praktisch unsichtbar. Ein Umzug zwischen Ländern kann latenzsensible Kennzahlen etwas verschieben — wählen Sie deshalb unter /locations eine Region nahe an Ihrem tatsächlichen Publikum.

Wie migriere ich eine Datenbank, ohne Daten zu verlieren?

Stoppen Sie Schreibvorgänge an der Quelle, bevor Sie sie am Ziel beginnen — diese Reihenfolge ist die ganze Garantie. Bei kleinen Datenbeständen: einfrieren, mit pg_dump oder mysqldump --single-transaction dumpen, wiederherstellen und umschalten. Bei größeren: im Voraus replizieren und das Replikat bei der Umschaltung befördern, sodass das Aufholen nur Sekunden dauert. Prüfen Sie durch den Vergleich der Zeilenzahlen der wichtigen Tabellen, bevor Sie überhaupt Traffic schicken.

Kann ich zu einem Offshore-Host umziehen, ohne meine Identität preiszugeben?

Ja. Ein Host, der von einem Krypto-Guthaben abrechnet, hat weder eine Karte noch eine Rechnungsadresse, die sich mit der Maschine verknüpfen lässt, sodass das Konto hinter dem Server nichts über Sie enthält. Die Migration selbst ist technisch identisch — dieselben Datei-Durchgänge, derselbe Dump, derselbe DNS-Wechsel. /offshore-vps erklärt, wie das Modell funktioniert, und /pay-with behandelt die Zahlungsseite.

Wann ist es sicher, den alten Server zu kündigen?

Nachdem sein Access-Log mindestens einen Tag lang still war, alle Zugangsdaten rotiert wurden, die er hielt, und Sie ein Backup des neuen Servers erstellt und irgendwo erfolgreich wiederhergestellt haben. Ein zusätzlicher Monat eines kleinen VPS ist die billigste Versicherung in diesem Prozess — es ist der Unterschied zwischen einem Rollback und einem Vorfall.

Setzen Sie es in die Praxis um.

Einen Offshore-Server ab $3.49/Monat bereitstellen · 8 Kryptowährungen · Kein KYC.