Как развернуть снапшот VPS на новом сервере с другим ip-адресом (пример с Vesta и Digitalocean)

В облаке Digitalocean есть возможность делать снапшоты VPS и потом из этих образов создавать новые сервера. При этом возникают проблемы, связанные с изменением ip-адреса. Нужно найти все конфигурационные файлы, где упоминается старый ip, и заменить его на новый. DNS-записей в рамках этой статьи касаться не будем.

Итак, у нас есть VPS на Debian с установленной панелью Vesta и несколькими сайтами. Снапшот развернули на новом сервере, но по ip-адресу в браузере ничего не открывается.

Есть несколько мест, где указан старый ip-адрес:

  • /home/admin/conf/web, там конфиги apache и nginx (ip нужно поменять для всех хостов, иначе будут ошибки)
  • /etc/apache2/conf.d
  • /etc/nginx/conf.d
  • /usr/local/vesta/data/ips
  • /etc/iptables.rules
  • возможно /etc/apache2/mods-enabled/rpaf.conf и где-то еще

Внести изменения можно

  • через веб-интерфейс панели
  • bash-скриптом
  • вручную

Замена ip-адреса через панель

  1. Наберите в браузере https://<новый ip>:8083 . Должна открыться панель. Дальше нужно залогиниться.
  2. В разделе ip добавьте новый адрес.
  3. В разделе Web / domains привяжите все домены к новому адресу.
  4. В разделе ip удалите старые адреса.
  5. Отредактируйте в разделе Firewall какое-нибудь правило. Потом можно вернуть как было. Файл с правилами в результате этого маневра похоже полностью перестраивается, и из него исчезают остатки старой конфигурации.

Если не починить файрвол, то при попытке зайти на сайт будут ошибки 500 или 504, а в error-логе будут появляться сообщения 2021/06/08 13:55:15 [error] 14791#0: *1 upstream timed out (110: Connection timed out) while connecting to upstream, client: 95.107.22$

Bash-скрипт

На форуме Весты есть скрипт для замены адресов, но он не меняет правила iptables.

Внесение изменений вручную

Может так получиться, что старый ip указан где-то еще, apache или nginx не будут запускаться, и придется поискать вручную. Искать по содержимому файлов можно через mc, вносить правки с помощью nano (можно автозаменой).

С помощью команд systemctl status apache2.service -l и systemctl status nginx.service -l можно посмотреть статус веб-серверов.

Ошибка apache2[4640]: (99)Cannot assign requested address: AH00072: make_sock: could not bind to address <старый ip>:8080 в данном случае говорит о том, что где-то в конфигах остались старые адреса.

С помощью команды ss -4tlnp можно узнать, кто слушает на 80 и 8080 портах, то есть запустились ли веб-серверы.

Когда ip будут везде обновлены, серверы надо перезапустить: service apache2 restart и service apache2 restart

В целом технология клонирования снапшотов очень интересная, позволяет экспериментировать (например, обновлять ОС до новой мажорной версии, не боясь всё сломать). Только нужно освоиться с обновлением ip-адреса.

Смотрите также

Комментарии

Отправить комментарий

Если вы укажете номера тикетов или имя пользователя, отзыв будет выглядеть убедительнее, а провайдеру будет проще разобраться с вашей проблемой

Подробнее о форматировании

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
5 + 7 17 + 8 плюс 3 1