L'armoire d'arcade 'NBA Jam' prouve qu'Arcade1Up est (presque) en feu – Review Geek
31 octobre 2020
The Damage Done – Guérison du sexe et des relations
31 octobre 2020

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 verrons comment 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). La mise à l'échelle automatique diffère selon les fournisseurs, mais si vous ajoutez une nouvelle copie de votre serveur pour répondre à une demande croissante, elle 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 de mise en route avec Docker pour en savoir plus, ou lire notre guide sur l'utilisation du scaling automatique sur AWS ou Google Cloud Platform.

EN RELATION: Comment empaqueter l'infrastructure de votre application avec Docker

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 - état-tout

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 - installé

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

sudo apt -qq list nom_programme --installé

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

Transfert du disque du serveur avec rsync

Vous pouvez archiver le disque avec le goudron, mais le goudron 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’avez peut-être pas assez d’espace pour effectuer une sauvegarde localement (c’est peut-être même la raison de la mise à niveau!).

Dans ce cas, vous souhaiterez 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 nom d'utilisateur @ hôte_distant: / etc / nginx

C’est toute la commande: vous devriez voir une barre de progression lors du transfert (en utilisant la compression avec le -z flag), et lorsque cela 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 souhaitez simplement faire une sauvegarde de quelques répertoires, vous pouvez utiliser un simple le goudron à 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 devez 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 - base de données à transaction unique> 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 (utilisateur) -p (nom_base_de_données) <(nom_fichier) .sql

et pour MongoDB, ce serait:

Mongorestore   

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 souhaiterez vérifier que tout fonctionne comme prévu avant de continuer, mais une fois que ce sera le cas, vous souhaiterez 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 utilisez AWS ou un fournisseur similaire avec des adresses IP Elastic, vous pouvez permuter l'adresse pour pointer vers le nouveau serveur, ce 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.

//]]>