Перенос сервера
Жесть, как мне нравится ускорять сервер. Для этого нужно купить новый сервер и перенести все системы бесшовно со старого на новый. Чтобы пользователи ничего и не заметили. Ну вот я и научился. Последний сервер переносил весь февраль. Долгие подготовительные работы, с затем всего лишь 10 минутное переключение. И как же это сделать?
Самый простой способ из панели в панель. Например из ISPManager туда же можно просто импортом перетащить, файлы, базы и прочие настройки. Но не всегда это работает, например из разных версий панелей, или разных ОС. Вот и в этот раз данный способ не сработал. Пришлось перетаскивать все вручную.
Хочу поделится командами которые мне пригодились. В первую очередь это команда rsync которая позволяет из под root реплицировать каталоги и приводить к единому виду. Работает очень быстро если канал 1 Гбит. 100 гигов перенёс за 10-20 минут. Затем последующие запуски лишь сканируют файлы на изменения и удаления, и просто синхронизируется.
rsync --exclude=/uploads/x --exclude=/cache -W -ah --stats -v --progress /var/www/www-root/data/www/ root@IP:/var/www/sait/data/www/ --delete
--delete значит удалит файлы на новом, если нет на старом
--exlude исключить папки
Новый сервер взял на Core i9 3.6 ГГц. 16 Гб оперативы и 500 Гб nvme. Поставил Ubuntu 20, и долго настраивал модули всякие типа nginx, phpfpm, memcached на сокетах и прочее. Раньше главная страница генерилась за 0.015 с. а теперь за 0.007 секунд! Вобщем стало все работать в 2 раза быстрее минимум. Обычный пользователь ничего не заметит, однако качество повысилось. Следующий сервер надо брать AMD Ryzen 9 5950X на 16 ядер. Сейчас это топовое железо.
Как переключить сервер, с одного IP на другой IP?
Раньше парился изменением ns серверов и долгим ожиданием до 72 часов, когда все переключится на новый. Часть пользователей видели старый сервер, часть новый. Данные херились.
Потом научился через поддержку, менять IP адреса между серверами, но это тоже длилось около 2 часов, меня не устраивало.
Сейчас научился делать проксирование запросов со старого сервера на новый через nginx proxy_pass. На старом ставишь
proxy_pass https://IP.NEW.SERVER;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
На новом принимаешь запросы. В это время меняем NS сервера на домене, или просто меняем DNS домена, если NS не изменились. Чтобы IP пользователей на новом сервере были не от старого сервера, а реальные, то на новом сервере ставим
set_real_ip_from IP.OLD.SERVER;
Через 72 часа, старый сервер можно вырубать. Все будет работать.
Бекап MYSQL
Раньше использовал sypexdumper теперь работаю на automysqlbackup. Поставил и забыл, работает быстрее. Подвешиваем на cron, например раз в час.
sudo apt-get install automysqlbackup sudo nano /etc/default/automysqlbackup