Sommaire / Guides / Migration VPS

Déplacer votre serveur dans environ 30 minutes

Déplacement des hôtes sonne effrayant et est principalement rsync, DNS et la patience. L'astuce est deux passes : une lente pendant que l'ancien serveur fonctionne encore, et une finale rapide qui prend des secondes.

1. Préparer le nouveau serveur

Commandez Buran VPS, installer la même version OS que l'ancien serveur, et faire les bases: Clés et pare-feu SSH. Installez les mêmes services (nginx, PostgreSQL, Docker) aux mêmes versions — mais ne les commencez pas encore.

2. Première passe rsync — pendant que tout tourne

Depuis le nouveau serveur, tirez les données. Ce passage peut prendre aussi longtemps qu'il le veut ; personne ne le remarque.

rsync -avz --delete \
  --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp \
  --exclude=/var/lib/postgresql \
  root@OLD_SERVER_IP:/etc /etc
rsync -avz --delete root@OLD_SERVER_IP:/var/www /var/www
rsync -avz --delete root@OLD_SERVER_IP:/root /root

Les répertoires de données de base de données sont exclus à dessein — un fichier PostgreSQL ou MySQL copié par fichier est cassé. Les bases de données se déplacent comme des décharges.

3. Domptez les bases de données

Sur l'ancien serveur :

pg_dumpall -U postgres > /root/all-databases.sql
# or per database, compressed:
pg_dump -Fc -U postgres appdb > /root/appdb.dump

Tirer les dumps sur le nouveau serveur et les importer :

rsync -avz root@OLD_SERVER_IP:/root/all-databases.sql /root/
sudo -u postgres psql < /root/all-databases.sql

4. L'interrupteur — une fenêtre de deux minutes

Mettez l'application en mode maintenance, exécutez les services de synchronisation finale et démarrez :

# on the old server
pg_dumpall -U postgres > /root/final.sql
# on the new server
rsync -avz --delete root@OLD_SERVER_IP:/var/www /var/www
rsync -avz root@OLD_SERVER_IP:/root/final.sql /root/
sudo -u postgres psql < /root/final.sql
systemctl enable --now nginx postgresql myapp

Tester localement d'abord — avant de toucher DNS:

curl -H "Host: example.com" http://127.0.0.1

5. Interrupteur DNS

Changez l'enregistrement A pour la nouvelle IP et réduisez le TTL à 300 secondes par jour avant — l'ancienne valeur expire rapidement. En quelques minutes, la plupart des visiteurs sont sur le nouveau serveur ; les tragglers arrivent au cours des prochaines heures.

Certificats : exécuter certbot --nginx sur le nouveau serveur après que DNS y ait résolu. Si vous utilisez le proxy Cloudflare, retournez l'enregistrement et rééditez comme d'habitude — les commandes sont dans le Guide Nginx.

6. Vérifier, puis déclasser

Vérifiez à partir de plusieurs endroits: site web, API, courrier, cron jobs, sauvegardes. Regardez les journaux de l'ancien serveur pendant une heure — tout trafic laissé là signifie quelque chose encore à l'ancienne IP.

tail -f /var/log/nginx/access.log
crontab -l
systemctl list-timers

Gardez l'ancien serveur pendant une semaine après l'interrupteur. Alors annulez - le — pas de drame, et un retour en arrière facile si vous avez manqué quelque chose.

Réponses rapides

La migration nécessite-t-elle des temps d'arrêt?

Avec la méthode rsync à deux passages, le temps d'arrêt n'est que la synchronisation finale plus la propagation DNS – généralement de 2 à 10 minutes. Une page de maintenance sur l'ancien serveur la rend invisible.

Les adresses IP dans les configs vont-elles se casser ?

Toute ancienne IP codée en dur doit changer : nginx en amont, configs app, licenselists pare-feu. Recherchez les configurations avec grep pour l'ancienne IP avant la synchronisation finale.

Buran peut-il déplacer le serveur pour moi ?

La fourniture est entièrement automatique, et le panneau vous donne la console et de réinstaller l'accès; la migration est un travail rsync standard que vous pouvez exécuter vous-même dans une demi-heure. Si quelque chose ne va pas, [email protected] répond dans les 30 minutes.

Autres