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.
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.
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.
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
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
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.
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.
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.
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.
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.