Домой / Путеводители / Миграция VPS

Переместите свой сервер Примерно через 30 минут

Перемещение хозяев звучит страшно и в основном синхронно, DNS и терпеливо. Хитрость состоит в двух проходах: медленный, в то время как старый сервер все еще работает, и быстрый, который занимает несколько секунд.

1.Подготовить новый сервер

Приказ Buran VPSZУстановите ту же версию ОС, что и старый сервер, и выполните следующие действия: Ключи SSH и брандмауэрУстановите те же службы (nginx, PostgreSQL, Docker) в тех же версиях, но пока не запускайте их.

2.Первый синхронный проход — пока все работает

С нового сервера вытащите данные. Этот пропуск может занять столько времени, сколько он хочет; никто его не замечает.

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, скопированный файл за файлом. Базы данных движутся как свалки.

3. Сбросить базы данных

На старом сервере:

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

4.Переключатель — двухминутное окно

Поместите приложение в режим обслуживания, запустите окончательную синхронизацию и запустите сервисы:

# 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

5. Переключатель DNS

Измените запись A на новый IP и опустите TTL до 300 секунд за день до этого — старое значение быстро истекает. В течение нескольких минут большинство посетителей находятся на новом сервере; отставшие прибывают в течение следующих часов.

Сертификаты: Run certbot --nginx на новом сервере после разрешения DNS. Если вы используете прокси-сервер Cloudflare, переверните запись и переиздайте как обычно — команды находятся в режиме реального времени. Руководство по Nginx.

6. Проверка, затем вывод из эксплуатации

Проверьте из нескольких мест: веб-сайт, API, почта, крон-работы, резервные копии. Смотрите журналы старого сервера в течение часа — любой трафик, оставленный там, означает, что что-то все еще указывает на старый IP.

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

Держите старый сервер в течение недели после переключения. Тогда отмени его — никакой драмы, и легкий откат, если что-то пропустил.

Быстрые ответы

Требует ли миграция простоев?

С помощью двухступенчатого метода синхронизации время простоя - это только окончательная синхронизация плюс распространение DNS - обычно от 2 до 10 минут. Страница обслуживания на старом сервере делает его невидимым.

Сломаются ли IP-адреса в конфигурациях?

Любой старый IP-адрес с жесткой кодировкой должен измениться: nginx upstreams, конфигурации приложений, брандмауэры. Поиск конфигураций с помощью grep для старого IP перед финальной синхронизацией.

Может ли Buran переместить сервер?

Обеспечение полностью автоматическое, а панель дает вам доступ к консоли и переустановке; миграция - это стандартная рутинная работа, которую вы можете выполнить самостоятельно за полчаса. Если что-то не подходит, [email protected] отвечает в течение 30 минут.

связанный