So migrieren Sie einen Linux-Server auf neue Hardware

0
47
Shutterstock/asharkyu

Ob Sie ein Upgrade auf leistungsstärkere Server durchführen, in neue Regionen wechseln oder neue Instanzen hinzufügen, die Migration eines Linux-Servers kann durch die Implementierung der richtigen Strategien und die Kenntnis der richtigen Befehle vereinfacht werden. Wir besprechen, wie Sie Ihren Server mit minimalem Aufwand auf einen neuen Computer verschieben können.

Migrationsstrategien

Die einfachsten und Die effektivste Strategie ist eine blau-grüne Bereitstellung —den neuen Server zum Laufen zu bringen und dann, wenn er produktionsbereit ist, den Verkehr darauf umzustellen und den alten Server zu entfernen, sobald Sie dies überprüft haben keine Probleme. Beim Load-Balancing kann dieser Prozess inkrementell erfolgen, wodurch die Wahrscheinlichkeit von Verfügbarkeitsproblemen weiter verringert wird.

Bei einer blau-grünen Bereitstellung werden alle Dateien, Pakete und Code vom alten Server auf den neuen kopiert. Dies kann so einfach sein wie die manuelle Installation der erforderlichen Pakete, z. B. eines NGINX-Webservers, und das anschließende Kopieren der Konfiguration vom vorhandenen Server. Sie können auch ein vollständiges Festplatten-Backup erstellen und daraus einen neuen Server erstellen.

Natürlich ist jetzt der perfekte Zeitpunkt, um zu überlegen, ob Sie Container oder die automatische Skalierung verwenden können. Docker-Container können einfach gestoppt, gestartet und migriert werden, indem die zugrunde liegenden Datenvolumes kopiert werden (oder ein gemeinsam genutzter Datenspeicher wie EFS verwendet wird). Auto Scaling unterscheidet sich je nach Anbieter, aber wenn Sie eine neue Kopie Ihres Servers hinzufügen, um der wachsenden Nachfrage gerecht zu werden, ist es möglicherweise das Richtige für Ihr Unternehmen. Sie können die automatische Skalierung auch mit Docker-Containern auf vielen Plattformen wie AWS ECS verwenden.

Werbung

Die Einrichtung sowohl für Container als auch für die automatische Skalierung erfordert einen Großteil der gleichen Arbeit wie für die manuelle Übertragung des Servers, z. B. das Automatisieren der Installation von Paketen und Ihrem eigenen Code die Zukunft sollten Sie jetzt überlegen, ob Sie besser zu Containern wechseln oder die automatische Skalierung einrichten.

Wenn Sie sich für Container interessieren, können Sie unseren Leitfaden zu . lesen Erste Schritte mit Docker, um mehr zu erfahren, oder lesen Sie unseren Leitfaden zur Verwendung der automatischen Skalierung auf AWS oder Google Cloud Platform.

VERWANDTE: So verpacken Sie die Infrastruktur Ihrer Anwendung mit Docker

Pakete installieren

Wenn Sie nicht genau wissen, was Sie auf dem alten Server installiert haben, überprüfen Sie am besten eine Liste aller installierten Dienste. Hier werden die meisten wichtigen Dinge angezeigt, die Sie installieren müssen:

service –status-all

Der Grund für die Bevorzugung von Auflistungsdiensten liegt darin, dass die Liste der installierten Pakete sehr lang sein kann, wobei auch jede kleinere Abhängigkeit installiert wird. Auf meinem Ubuntu-Testserver waren über 72000 Pakete installiert, daher ist die Liste nicht sehr nützlich, wenn man bedenkt, dass sie alle sowieso installiert werden, wenn die wichtigsten Dienste installiert werden, die der neue Server benötigt.

Wenn Sie möchten, Sie können alle mit dem folgenden Befehl auflisten:

sudo apt list –installed

Um die Paketliste nach einem bestimmten Paket zu durchsuchen, können Sie Folgendes verwenden:

sudo apt -qq list program_name — installiert

In jedem Fall sollten Sie eine Liste der Pakete erstellen, die Sie installieren müssen, und diese auf dem neuen Server installieren.

Übertragen der Festplatte des Servers mit rsync

Sie könnten die Festplatte mit tar archivieren, aber tar ist im Allgemeinen dazu gedacht, einzelne Dateien oder Verzeichnisse zu archivieren, nicht eine ganze Festplatte. Wenn Sie viele Daten verschieben, haben Sie möglicherweise nicht genügend Speicherplatz, um lokal ein Backup zu erstellen (vielleicht ist das sogar der Grund für das Upgrade!).

Werbung

In diesem Fall sollten Sie den rsync-Befehl verwenden, um die Daten direkt auf den Zielserver hochzuladen. rsync stellt eine Verbindung über SSH her und synchronisiert die beiden Verzeichnisse. In diesem Fall möchten wir das lokale Verzeichnis wie folgt auf den Remote-Server übertragen:

rsync -azAP /etc/nginx username@remote_host:/etc/nginx

Das ist der ganze Befehl—Sie sollten während der Übertragung einen Fortschrittsbalken sehen (mit Komprimierung mit dem Flag -z), und wenn er fertig ist, sehen Sie die Dateien im Ziel Verzeichnis auf dem neuen Server. Möglicherweise müssen Sie dies mehrmals ausführen, um jedes Verzeichnis zu kopieren. Sie können diesen Online-rsync Befehlsgenerator verwenden, um den Befehl für jede Ausführung zu generieren.

Wenn Sie möchten, können Sie versuchen, das gesamte Root-Dateisystem mit Ausnahme einiger Systemdateien auf den neuen Server zu kopieren:

sudo rsync -azAP/–exclude={“/dev/*”,”/proc/*”,”/sys/*”,”/tmp/*”,”/run/*”,”/mnt/*” ,”/media/*”,”/lost+found”} username@remote_host:/

Wenn Sie nur ein Backup einiger Verzeichnisse erstellen möchten, können Sie stattdessen einen einfachen tar-Befehl verwenden, um ein einzelnes Dateiarchiv zu erstellen:

tar -czvf nginxconfig.tar.gz /etc/nginx

Dadurch wird eine Datei ausgegeben, die Sie mit scp oder über FTP auf den Zielserver übertragen können. Entpacken Sie dann die Datei in das Zielverzeichnis:

tar -xzvf nginxconfig.tar.gz -C /etc/nginx

Übertragen einer Datenbank

Wenn Sie eine Datenbank übertragen müssen, sollten Sie die Quelldatenbank sichern und sichern. Für MySQL wäre das:

mysqldump -uUser -pPass -hHost –single-transaction database > backup.bak

Für MongoDB wäre das:

mongodump –host=mongodb.example.net –port=27017 Werbung

Dann müssen Sie die Datenbank wiederherstellen auf dem Zielserver. Für MySQL wäre das:

mysql -u [Benutzer] -p [Datenbankname] < [filename].sql

und für MongoDB wäre das:

mongorestore <options> <Verbindungszeichenfolge> <Verzeichnis oder Datei zum Wiederherstellen>

Für andere Datenbanken sollten Sie die entsprechenden Befehle online finden können.

IPs auf das neue System umstellen

Natürlich Sie sollten überprüfen, ob alles wie beabsichtigt funktioniert, bevor Sie fortfahren, aber sobald dies der Fall ist, sollten Sie den Datenverkehr auf den neuen Server umleiten.

Der einfachste Weg, dies zu tun, ist um Ihre DNS-Einträge zu ändern. Nach der Aktualisierung werden Clients und Dienste an den neuen Server gesendet. Dies geschieht jedoch auf einmal. Wenn Sie also über einen Load Balancer verfügen, ist es besser, den Datenverkehr langsam auf die neue Instanz umzuleiten.

Wenn Sie AWS oder einen ähnlichen Anbieter mit Elastic verwenden IP-Adressen können Sie die Adresse austauschen, um auf den neuen Server zu verweisen, für den kein DNS-Update erforderlich ist. Auf der Registerkarte Elastic IPs in der EC2-Konsole, Action > Elastic IP-Adresse zuordnen.

Werbung

Dies wird ermöglichen es Ihnen, die Zuordnung zu ändern, wodurch der Datenverkehr sofort auf die neue Instanz umgeleitet wird.