- PVSM.RU - https://www.pvsm.ru -
Решились на переезд? Тогда не забудьте убедиться, что сложили все вещи по списку :-) В первой части [1] нашей дилогии про миграцию [2] мы рассмотрели причины и предпосылки для любого переезда; обсудили подготовку нового окружения, разворачивание проекта в новой инфраструктуре, а также базовые этапы тестирования работы вашего проекта на новой площадке. А здесь, в заключительной статье, предлагаем ознакомиться с пошаговым планом переключения трафика вашего проекта на новую инфраструктуру.
Итак, делимся стандартным «протоколом»: в каком порядке производить определенные действия и почему, на какие критические моменты обращать внимание, какие операции и проверки нужно произвести уже ПОСЛЕ переключения. А на десерт — примеры конфигурационных файлов для инструментов, используемых в процессе переключения.
Дисклеймер: в предыдущей статье [1], для конкретики, мы рассматривали процедуру подготовки новой площадки на примере типичного интернет-магазина, работающего на LEMP-стеке ((Linux, Nginx, MySQL, PHP). И сейчас продолжим рассматривать процедуру переключения, оставаясь на этом же стеке.
Прежде чем начинать процедуру переключения трафика проекта на новую площадку, мы рекомендуем пройтись по следующему чек-листу и финально убедиться, что «всё готово».
В предыдущей части мы развернули файловый бэкап и настроили lsync для синхронизации файлов вашего проекта (кодовая база, загружаемый пользовательский контент, файлы конфигураций). Чтобы убедиться в корректности работы синхронизации рекомендуем создать тестовые файлы в различных директориях проекта и проверить, что они «долетели» до нового сервера.
Также необходимо убедиться, что все конфигурационные файлы системного ПО (база данных, web-сервер, application-сервер) синхронизируются без ошибок.
#коечтополезное
пример конфигурации lsync:
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
nodaemon = false, insist = true
}
sync {
default.rsync,
source="/path/to/source/",
target="root@host:/path/to/target/",
delete=false,
rsync = {
archive = true,
sparse = true,
update = true,
protect_args = true,
temp_dir = '/var/www/lsyncd',
},
delay=5
}
Аналогично предыдущему пункту для проверки того, что репликация работает корректно (естественно, при отсутствии алертов ошибок репликации), необходимо:
du -sch /var/lib/mysql); Финально, перед началом самого переключения, необходимо еще раз убедиться, что на директории для временных файлов и сессий установлены корректные права (иначе ваши пользователи не смогут пройти процедуры аутентификации/авторизации или загрузить какой либо контент на сайт).
Кроме того, проверьте, что все необходимые крон-задания перенесены и закомментированы (смотрим в /etc/cron/*, /var/spool/cron/*).
Итак, мы убедились, что новая инфраструктура готова принимать пользовательский трафик, актуализировали кодовую базу, файлы, конфигурации. Как говорится — «поехали!»
mysql> SET GLOBAL read_only = 0.Пример конфигурации nginx для проксирования:
server {
listen 80 default_server;
server_name _;
location / {
access_log off;
proxy_pass http://new_ip;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl;
server_name _;
location / {
access_log off;
ssl_certificate /path/to/cert/fullchain.crt;
ssl_certificate_key /path/to/cert/cert.key;
proxy_pass https://new_ip;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Если в результате проверок вы убедились, что сайт работает корректно, все необходимые данные перенесены и вы не получаете негативный фидбек от пользователей вашего продукта, можно переходить к финальной стадии переезда…
mysql> STOP SLAVE
mysql> RESET SLAVE [ALL]Вот мы с вами, уважаемые читатели, и закончили миграцию [2] нашего проекта на новую инфраструктуру. Естественно, в процессе переключения не исключен так называемый «человеческий фактор». И уже после переключения, проверок работоспособности вашего сайта, мы настоятельно рекомендуем провести «финальную ревизию» перед отключением старой инфраструктуры. А именно:
Хоть мы и рассмотрели процедуру миграции на одном из примитивных кейсов (LEMP стек с минимальным уровнем абстракции), общие принципы для миграции более сложных инфраструктур будут максимально похожи с рассмотренным нами кейсом.
А ещё мы своим заказчикам рекомендуем после миграции проверить всё не только руками, но и иными инструментами — проведя нагрузочное тестирование. О том, как мы это делаем и с какими сюрпризами доводилось сталкиваться в последнее время, расскажем в ближайших публикациях.
Автор: Сережа
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/migratsiya/375916
Ссылки в тексте:
[1] первой части: https://habr.com/ru/post/663386/
[2] миграцию: https://www.itsumma.ru/migration
[3] Источник: https://habr.com/ru/post/670008/?utm_source=habrahabr&utm_medium=rss&utm_campaign=670008
Нажмите здесь для печати.