Come migrare un server Linux su nuovo hardware

0
170
Shutterstock/asharkyu

Che tu stia effettuando l'aggiornamento a server più potenti, spostandoti in nuove regioni o aggiungendo nuove istanze, la migrazione di un server Linux può essere semplificata implementando le strategie appropriate e conoscendo i comandi giusti. Discuteremo come spostare il tuo server su una nuova macchina con il minimo sforzo.

Strategie di migrazione

Le più semplici e la strategia più efficace è una distribuzione blu-verde—far funzionare il nuovo server e poi, quando è pronto per la produzione, trasferire il traffico su di esso e rimuovere il vecchio server dopo aver verificato che ci sono senza problemi. Con il bilanciamento del carico questo processo può avvenire in modo incrementale, riducendo ulteriormente le possibilità di problemi di disponibilità.

Una distribuzione blu-verde comporta la copia di tutti i file, i pacchetti e il codice sul vecchio server su quello nuovo. Questo può essere semplice come installare manualmente i pacchetti necessari, come un server Web NGINX, e quindi copiare la configurazione dal server esistente. Puoi anche eseguire un backup completo del disco e creare un nuovo server da quello.

Naturalmente, ora è il momento perfetto per valutare se è possibile utilizzare i contenitori o il ridimensionamento automatico. I contenitori Docker possono essere facilmente arrestati, avviati e migrati copiando i volumi di dati sottostanti (o utilizzando un archivio dati condiviso come EFS). Auto Scaling varia a seconda dei provider, ma se stai aggiungendo una nuova copia del tuo server per soddisfare la crescente domanda, potrebbe essere adatto alla tua attività. Puoi anche utilizzare la scalabilità automatica con i container Docker su molte piattaforme come AWS ECS.

Pubblicità

La configurazione sia per i contenitori che per il ridimensionamento automatico richiede che tu faccia gran parte dello stesso lavoro che dovrai fare per trasferire manualmente il server, come l'automazione dell'installazione dei pacchetti e il tuo codice, quindi se prevedi di migrare di nuovo in futuro, dovresti considerare ora se faresti meglio a passare ai contenitori o impostare la scalabilità automatica.

Se sei interessato ai contenitori, puoi leggere la nostra guida a iniziare a utilizzare Docker per saperne di più, oppure leggi la nostra guida all'utilizzo della scalabilità automatica su AWS o Google Cloud Platform.

CORRELATO: Come impacchettare l'infrastruttura della tua applicazione con Docker

Installazione di pacchetti

Se non sei sicuro di cosa hai installato sul vecchio server, il metodo migliore per verificare è ottenere un elenco di tutti i servizi installati. Questo mostrerà la maggior parte delle cose principali che dovrai installare:

service –status-all

Il motivo per cui si preferiscono i servizi di elenco è perché l'elenco dei pacchetti installati può essere molto lungo, con anche l'installazione di ogni dipendenza minore. Il mio server di prova Ubuntu aveva oltre 72000 pacchetti installati, quindi l'elenco di questi non è molto utile considerando che verranno comunque installati tutti durante l'installazione dei principali servizi necessari al nuovo server.

Se lo desideri, puoi elencarli tutti con il seguente comando:

sudo apt list –installed

La ricerca nell'elenco dei pacchetti per un pacchetto specifico, puoi usare:

sudo apt -qq list nome_programma — installato

In ogni caso, vorrai creare un elenco dei pacchetti che devi installare e installarli sul nuovo server.

Trasferimento del Disco del server con rsync

Puoi archiviare il disco con tar, ma tar è generalmente pensato per archiviare singoli file o directory, non un intero disco. Se stai spostando molti dati, potresti non avere abbastanza spazio per eseguire un backup in locale (forse questo è anche il motivo dell'aggiornamento!).

Pubblicità

In questo caso, ti consigliamo di utilizzare il comando rsync per caricare i dati direttamente sul server di destinazione. rsync si collegherà su SSH e sincronizzerà le due directory; in questo caso, vogliamo inviare la directory locale al server remoto, in questo modo:

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

Questo è l'intero comando, dovresti vedere una barra di avanzamento durante il trasferimento (usando la compressione con il flag -z), e quando è fatto, vedrai i file nella destinazione directory sul nuovo server. Potrebbe essere necessario eseguirlo più volte per copiare ogni directory; puoi utilizzare questo generatore di comandi rsync online per generare il comando per ogni esecuzione.

Se lo desideri, puoi provare a copiare l'intero filesystem root sul nuovo server, escludendo alcuni file di sistema:

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

Se stai solo cercando di eseguire un backup di alcune directory, puoi utilizzare un semplice comando tar per generare un singolo archivio di file:

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

Questo genera un file che puoi trasferire al server di destinazione con scp o tramite FTP. Quindi, estrai il file nella directory di destinazione:

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

Trasferimento di un database

Se devi trasferire un database, ti consigliamo di eseguire il backup e il dump del database di origine. Per MySQL, sarebbe:

mysqldump -uUser -pPass -hHost –database a transazione singola > backup.bak

Per MongoDB, sarebbe:

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

Quindi dovrai ripristinare il database sul server di destinazione. Per MySQL, sarebbe:

mysql -u [utente] -p [nome_database] < [filename].sql

e per MongoDB, sarebbe:

mongorestore <options> <stringa-connessione> <directory o file da ripristinare>

Per altri database, dovresti essere in grado di trovare i comandi pertinenti online.

Commutazione degli IP al nuovo sistema

Naturalmente, vorrai verificare che tutto funzioni come previsto prima di procedere, ma una volta fatto, vorrai trasferire il traffico al nuovo server.

Il modo più semplice per farlo è per modificare i record DNS. Una volta aggiornati, client e servizi verranno inviati al nuovo server. Tuttavia, questo accade tutto in una volta, quindi se disponi di un sistema di bilanciamento del carico, sarebbe meglio trasferire lentamente il traffico alla nuova istanza.

Se utilizzi AWS o un provider simile con Elastic Indirizzi IP, puoi scambiare l'indirizzo in modo che punti al nuovo server, che non richiederà un aggiornamento DNS. Dalla scheda IP elastici nella console EC2, Azione > Indirizzo IP elastico associato.

Annuncio

Questo ti permettono di modificare l'associazione, che scambierà istantaneamente il traffico con la nuova istanza.