Перемещение хозяев звучит страшно и в основном синхронно, DNS и терпеливо. Хитрость состоит в двух проходах: медленный, в то время как старый сервер все еще работает, и быстрый, который занимает несколько секунд.
Приказ Buran VPSZУстановите ту же версию ОС, что и старый сервер, и выполните следующие действия: Ключи SSH и брандмауэрУстановите те же службы (nginx, PostgreSQL, Docker) в тех же версиях, но пока не запускайте их.
С нового сервера вытащите данные. Этот пропуск может занять столько времени, сколько он хочет; никто его не замечает.
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
Каталоги данных базы данных специально исключаются — нарушается живой PostgreSQL или MySQL dir, скопированный файл за файлом. Базы данных движутся как свалки.
На старом сервере:
pg_dumpall -U postgres > /root/all-databases.sql
# or per database, compressed:
pg_dump -Fc -U postgres appdb > /root/appdb.dump
Вытащите свалки на новый сервер и импортируйте их:
rsync -avz root@OLD_SERVER_IP:/root/all-databases.sql /root/
sudo -u postgres psql < /root/all-databases.sql
Поместите приложение в режим обслуживания, запустите окончательную синхронизацию и запустите сервисы:
# 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
Сначала тестируйте локально, прежде чем прикасаться к DNS:
curl -H "Host: example.com" http://127.0.0.1
Измените запись A на новый IP и опустите TTL до 300 секунд за день до этого — старое значение быстро истекает. В течение нескольких минут большинство посетителей находятся на новом сервере; отставшие прибывают в течение следующих часов.
Сертификаты: Run certbot --nginx на новом сервере после разрешения DNS. Если вы используете прокси-сервер Cloudflare, переверните запись и переиздайте как обычно — команды находятся в режиме реального времени. Руководство по Nginx.
Проверьте из нескольких мест: веб-сайт, API, почта, крон-работы, резервные копии. Смотрите журналы старого сервера в течение часа — любой трафик, оставленный там, означает, что что-то все еще указывает на старый IP.
tail -f /var/log/nginx/access.log
crontab -l
systemctl list-timers
Держите старый сервер в течение недели после переключения. Тогда отмени его — никакой драмы, и легкий откат, если что-то пропустил.
С помощью двухступенчатого метода синхронизации время простоя - это только окончательная синхронизация плюс распространение DNS - обычно от 2 до 10 минут. Страница обслуживания на старом сервере делает его невидимым.
Любой старый IP-адрес с жесткой кодировкой должен измениться: nginx upstreams, конфигурации приложений, брандмауэры. Поиск конфигураций с помощью grep для старого IP перед финальной синхронизацией.
Обеспечение полностью автоматическое, а панель дает вам доступ к консоли и переустановке; миграция - это стандартная рутинная работа, которую вы можете выполнить самостоятельно за полчаса. Если что-то не подходит, [email protected] отвечает в течение 30 минут.