Hoe een Linux-server naar nieuwe hardware te migreren?

0
179
Shutterstock/asharkyu

Of je nu upgradet naar krachtigere servers, naar nieuwe regio's verhuist of nieuwe instances toevoegt, het migreren van een Linux-server kan gemakkelijker worden gemaakt door de juiste strategieën te implementeren en de juiste commando's te kennen. We zullen bespreken hoe u uw server met minimale moeite naar een nieuwe machine kunt verplaatsen.

Migratiestrategieën

De eenvoudigste en meest effectieve strategie is een blauwgroene implementatie: de nieuwe server in gebruik nemen, en wanneer deze klaar is voor productie, het verkeer ernaar overschakelen en de oude server verwijderen zodra u hebt geverifieerd dat er geen problemen. Met load balancing kan dit proces stapsgewijs plaatsvinden, waardoor de kans op beschikbaarheidsproblemen verder wordt verkleind.

Een blauwgroene implementatie houdt in dat alle bestanden, pakketten en code op de oude server naar de nieuwe worden gekopieerd. Dit kan zo simpel zijn als het handmatig installeren van de benodigde pakketten, zoals een NGINX-webserver, en het vervolgens overnemen van de configuratie vanaf de bestaande server. U kunt ook een volledige schijfback-up maken en van daaruit een nieuwe server maken.

Dit is natuurlijk een perfect moment om te overwegen of u containers of automatisch schalen kunt gebruiken. Docker-containers kunnen eenvoudig worden gestopt, gestart en gemigreerd door de onderliggende gegevensvolumes te kopiëren (of door een gedeeld gegevensarchief zoals EFS te gebruiken). Automatisch schalen verschilt per provider, maar als u een nieuw exemplaar van uw server toevoegt om aan de groeiende vraag te voldoen, kan dit geschikt zijn voor uw bedrijf. U kunt automatisch schalen ook gebruiken met Docker-containers op veel platforms, zoals AWS ECS.

Advertentie

De configuratie voor zowel containers als automatisch schalen vereist dat u veel van hetzelfde werk doet dat u moet doen om de server handmatig over te zetten, zoals het automatiseren van het installeren van pakketten en uw eigen code, dus als u van plan bent opnieuw te migreren in in de toekomst, moet u nu overwegen of u beter af bent met het overschakelen naar containers of het instellen van automatisch schalen.

Als u geïnteresseerd bent in containers, kunt u onze gids voor aan de slag met Docker voor meer informatie, of lees onze handleiding voor het gebruik van automatisch schalen op AWS of Google Cloud Platform.

GERELATEERD: Hoe u de infrastructuur van uw app kunt verpakken met Docker

Pakketten installeren

Als je niet helemaal zeker weet wat je op de oude server hebt geïnstalleerd, kun je het beste controleren een lijst met alle geïnstalleerde services. Dit toont de meeste belangrijke dingen die u moet installeren:

service –status-all

De reden om de voorkeur te geven aan lijstdiensten is omdat de lijst met geïnstalleerde pakketten erg lang kan zijn, waarbij elke kleine afhankelijkheid ook wordt geïnstalleerd. Op mijn Ubuntu-testserver waren meer dan 72000 pakketten geïnstalleerd, dus de lijst ervan is niet erg handig, aangezien ze toch allemaal worden geïnstalleerd bij het installeren van de belangrijkste services die de nieuwe server nodig heeft.

Als je wilt, je kunt ze allemaal weergeven met het volgende commando:

sudo apt list –installed

De zoekactie in de pakketlijst naar een specifiek pakket, je kunt gebruiken:

sudo apt -qq list programmanaam — geïnstalleerd

Hoe dan ook, u wilt een lijst maken van de pakketten die u moet installeren en deze op de nieuwe server installeren.

De overdracht van de Serverschijf met rsync

Je zou de schijf kunnen archiveren met tar, maar tar is over het algemeen bedoeld om afzonderlijke bestanden of mappen te archiveren, niet een hele schijf. Als je veel gegevens verplaatst, heb je misschien niet genoeg ruimte om lokaal een back-up te maken (misschien is dat zelfs de reden voor de upgrade!).

Advertentie

In dit geval wilt u de opdracht rsync gebruiken om de gegevens rechtstreeks naar de doelserver te uploaden. rsync maakt verbinding via SSH en synchroniseert de twee mappen; in dit geval willen we de lokale map naar de externe server pushen, zoals:

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

Dat is het hele commando. Je zou een voortgangsbalk moeten zien terwijl het wordt overgedragen (met behulp van compressie met de vlag -z), en als het klaar is, zie je de bestanden in het doel map op de nieuwe server. Mogelijk moet u dit meerdere keren uitvoeren om elke map te kopiëren; je kunt deze online rsync-opdrachtgenerator gebruiken om de opdracht voor elke run te genereren.

Als je wilt, kun je proberen het volledige rootbestandssysteem naar de nieuwe server te kopiëren, met uitzondering van enkele systeembestanden:

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

Als u alleen een back-up van een paar mappen wilt maken, kunt u in plaats daarvan een eenvoudige tar-opdracht gebruiken om een ​​enkel bestandsarchief te genereren:

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

Hiermee wordt één bestand uitgevoerd dat u met scp of via FTP naar de doelserver kunt overbrengen. Pak het bestand vervolgens uit in de doelmap:

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

Een database overzetten

Als u een database moet overdragen, moet u een back-up maken van de brondatabase en deze dumpen. Voor MySQL zou dat zijn:

mysqldump -uUser -pPass -hHost –database voor één transactie > backup.bak

Voor MongoDB zou dat zijn:

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

Dan moet u de database herstellen op de doelserver. Voor MySQL zou dat zijn:

mysql -u [user] -p [database_name] < [bestandsnaam].sql

en voor MongoDB zou dat zijn:

mongorestore <options> <verbindingsreeks> <map of bestand om te herstellen>

Voor andere databases zou u de relevante commando's online moeten kunnen vinden.

IP's overschakelen naar het nieuwe systeem

Natuurlijk, je wilt controleren of alles werkt zoals bedoeld voordat je verder gaat, maar als dat eenmaal het geval is, wil je het verkeer overzetten naar de nieuwe server.

De eenvoudigste manier om dit te doen is om uw DNS-records te wijzigen. Na de update worden clients en services naar de nieuwe server verzonden. Dit gebeurt echter allemaal tegelijk, dus als je een load balancer hebt, is het beter om het verkeer langzaam over te zetten naar de nieuwe instantie.

Als je AWS gebruikt, of een vergelijkbare provider met Elastic IP-adressen, u kunt het adres omwisselen om naar de nieuwe server te verwijzen, waarvoor geen DNS-update nodig is. Op het tabblad Elastic IP's in de EC2-console, Action > Koppel elastisch IP-adres.

Advertentie

Dit zal kunt u de koppeling wijzigen, waardoor het verkeer onmiddellijk naar de nieuwe instantie wordt gewisseld.