Agence web » Actualités du digital » Comment migrer un serveur Linux vers un nouveau matériel –

Comment migrer un serveur Linux vers un nouveau matériel –

Shutterstock / asharkyu

Que vous effectuiez une mise à niveau vers des serveurs plus puissants, que vous vous déplaciez vers de nouvelles régions ou que vous ajoutiez de nouvelles instances, la migration d’un serveur Linux peut être facilitée en mettant en œuvre les stratégies appropriées et en connaissant les bonnes commandes. Nous discuterons de la façon de déplacer votre serveur vers une nouvelle machine avec un minimum de tracas.

Stratégies de migration

La stratégie la plus simple et la plus efficace est un déploiement bleu-vert: mettez le nouveau serveur en marche, puis, lorsqu’il est prêt pour la production, basculez le trafic vers celui-ci et supprimez l’ancien serveur une fois que vous avez vérifié qu’il n’y a pas de problème. Avec l’équilibrage de charge, ce processus peut se produire de manière incrémentielle, ce qui réduit davantage les risques de problèmes de disponibilité.

Un déploiement bleu-vert implique la copie de tous les fichiers, packages et code de l’ancien serveur vers le nouveau. Cela peut être aussi simple que d’installer manuellement les packages nécessaires, comme un serveur Web NGINX, puis de copier la configuration à partir du serveur existant. Vous pouvez également effectuer une sauvegarde complète du disque et créer un nouveau serveur à partir de là.

Bien sûr, le moment est idéal pour déterminer si vous pouvez utiliser des conteneurs ou une mise à l’échelle automatique. Les conteneurs Docker peuvent être facilement arrêtés, démarrés et migrés en copiant les volumes de données sous-jacents (ou en utilisant un magasin de données partagé comme EFS). Auto Scaling diffère selon les fournisseurs, mais si vous ajoutez une nouvelle copie de votre serveur pour répondre à une demande croissante, cela peut convenir à votre entreprise. Vous pouvez également utiliser la mise à l’échelle automatique avec les conteneurs Docker sur de nombreuses plates-formes comme AWS ECS.

La configuration des conteneurs et de la mise à l’échelle automatique vous oblige à faire une grande partie du même travail que vous devrez faire pour transférer le serveur manuellement, comme l’automatisation de l’installation des packages et de votre propre code, donc si vous prévoyez de migrer à nouveau à l’avenir , vous devriez envisager maintenant si vous feriez mieux de passer aux conteneurs ou de configurer la mise à l’échelle automatique.

Si vous êtes intéressé par les conteneurs, vous pouvez lire notre guide pour démarrer avec Docker pour en savoir plus, ou lire notre guide sur l’utilisation du scaling automatique sur AWS ou Google Cloud Platform.

Installer des packages

Si vous n’êtes pas sûr de ce que vous avez installé sur l’ancien serveur, la meilleure méthode pour vérifier est d’obtenir une liste de tous les services installés. Cela montrera la plupart des principaux éléments que vous devrez installer:

service --status-all

La raison de préférer les services de liste est que la liste des packages installés peut être très long, avec toutes les dépendances mineures également installées. Mon serveur de test Ubuntu avait plus de 72000 packages installés, donc la liste d’entre eux n’est pas très utile étant donné qu’ils seront tous installés de toute façon lors de l’installation des principaux services dont le nouveau serveur a besoin.

Si vous le souhaitez, vous pouvez tous les lister avec la commande suivante:

sudo apt list --installed

La recherche dans la liste des packages pour un package spécifique, vous pouvez utiliser:

sudo apt -qq list program_name --installed

Dans tous les cas, vous voudrez créer une liste des packages que vous devez installer et les installer sur le nouveau serveur.

Transfert du disque du serveur avec rsync

Vous pouvez archiver le disque avec tar, mais tar est généralement destiné à archiver des fichiers ou des répertoires uniques, pas un disque entier. Si vous déplacez beaucoup de données, vous n’aurez peut-être pas assez d’espace pour faire une sauvegarde localement (c’est peut-être même la raison de la mise à niveau!).

Dans ce cas, vous voudrez utiliser le rsync commande pour télécharger les données directement sur le serveur cible. rsync se connectera via SSH et synchronisera les deux répertoires; dans ce cas, nous voulons pousser le répertoire local vers le serveur distant, comme ceci:

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

C’est toute la commande – vous devriez voir une barre de progression pendant le transfert (en utilisant la compression avec le -z flag), et quand c’est fait, vous verrez les fichiers dans le répertoire cible sur le nouveau serveur. Vous devrez peut-être l’exécuter plusieurs fois pour copier chaque répertoire; vous pouvez utiliser ceci en ligne rsync générateur de commandes pour générer la commande pour chaque exécution.

Si vous le souhaitez, vous pouvez essayer de copier l’intégralité du système de fichiers racine sur le nouveau serveur, en excluant certains fichiers système:

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

Si vous cherchez simplement à faire une sauvegarde de quelques répertoires, vous pouvez utiliser un simple tar à la place pour générer une seule archive de fichier:

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

Cela génère un fichier que vous pouvez transférer vers le serveur cible avec scp ou via FTP. Ensuite, extrayez le fichier dans le répertoire cible:

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

Transférer une base de données

Si vous avez besoin de transférer une base de données, vous souhaiterez sauvegarder et vider la base de données source. Pour MySQL, ce serait:

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

Pour MongoDB, ce serait:

mongodump --host=mongodb.example.net --port=27017

Ensuite, vous devrez restaurer la base de données sur le serveur cible. Pour MySQL, ce serait:

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

et pour MongoDB, ce serait:

mongorestore <options> <connection-string> <directory or file to restore>

Pour les autres bases de données, vous devriez pouvoir trouver les commandes pertinentes en ligne.

Basculer les adresses IP vers le nouveau système

Bien sûr, vous voudrez vérifier que tout fonctionne comme prévu avant de continuer, mais une fois que c’est le cas, vous voudrez transférer le trafic vers le nouveau serveur.

Le moyen le plus simple de le faire est de modifier vos enregistrements DNS. Une fois mis à jour, les clients et services seront envoyés vers le nouveau serveur. Cependant, cela se produit d’un seul coup, donc si vous avez un équilibreur de charge, il serait préférable de transférer lentement le trafic vers la nouvelle instance.

Si vous êtes sur AWS, ou un fournisseur similaire avec des adresses IP Elastic, vous pouvez permuter l’adresse pour pointer vers le nouveau serveur, qui ne nécessitera pas de mise à jour DNS. Dans l’onglet Elastic IPs de la console EC2, Action> Associer une adresse IP Elastic.

Modifier l'association sur l'adresse IP élastique

Cela vous permettra de modifier l’association, qui permutera instantanément le trafic vers la nouvelle instance.

★★★★★