Дата последнего изменения: 14.11.2024
Рассмотрим несложную конфигурацию, где:
Между нодами настроена синхронизация файлов в обе стороны, используется lsyncd.
Для этого на каждой ноде поднят дополнительный сервис lsyncd-<имя_сервера>, где имя сервера - это идентификатор хоста в пуле Виртуальной машины с которым выполняется синхронизация. В нашем примере на сервере srv1, можно найти сервис lsyncd-srv2, который будет синхронизировать файлы с сервера srv1 на srv2. Синхронизация файлов выполняется по протоколу SSH+Rsync с авторизацией по ключу пользователем bitrix Виртуальной машины BitrixVM.
Логи сервиса можно найти в каталоге /var/log/lsyncd
. Например, daemon-srv2.log - будет содержать лог синхронизации с серверов srv2, а daemon-srv2.status - текущий статус синхронизации. При этом основной сервер синхронизирует следующие каталоги:
/etc/httpd/bx/conf/ /etc/nginx/bx/ <каталог(и) сайта(ов)>
На дополнительных серверах, синхронизируются только каталоги для сайтов.
Из синхронизации на основном и дополнительных серверах исключены - подкаталоги содержащие кеш для сайтов, на дополнительных еще исключаются конфигурационные файлы:
"bitrix/cache/", "bitrix/managed_cache/", "bitrix/stack_cache/", "upload/resize_cache/", "*.log", "bitrix/.settings.php", "php_interface/*.php",
Какие есть возможности у такой конфигурации:
Теперь рассмотрим, что будет если одна из нод выйдет из строя.
Простой вариант - выходит из строя дополнительный web-сервер.
Есть большая вероятность, что вы этого можете просто не заметить этой поломки потому, что NGINX сервер помечает свои бэкенд-сервера как нерабочие только после нескольких ошибок. NGINX продолжает использовать те сервера, которые отвечают в обычном режиме. Чтобы не пропустить такой выход из строя - настройте внутренний мониторинг Виртуальной машины или любой другой мониторинг.
Если дополнительный сервер рабочий, но необходимо вывести его из эксплуатации, то используйте предусмотренный пункт в меню Виртуальной машины. Если такой возможности нет, то можно отключить вручную, убрав его из upstream серверов NGINX и выключив синхронизацию lsyncd конфигов.
По шагам на нашем примере:
/etc/nginx/bx/site_enabled/upstream.conf
:
upstream bx_cluster { .. server srv2:8080; }
systemctl restart nginx
systemctl stop lsyncd-srv2 systemctl disable lsyncd-srv2
systemctl stop lsyncd-srv1 systemctl disable lsyncd-srv1
Сложный вариант - выход из строя основного web-сервера. Его вы не пропустите скорее всего, но мониторинг тоже лучше настроить.
Ситуация тяжёлая, но не паникуйте: у вас есть все необходимые конфигурационные файлы на дополнительной ноде (не все включены в использование, но это легко поправить).
ln -sf /etc/nginx/bx/site_avaliable/http* /etc/nginx/bx/site_enabled/ ln -sf /etc/nginx/bx/site_avaliable/upstream.conf /etc/nginx/bx/site_enabled/
/etc/nginx/bx/site_enabled/upstream.conf
):
upstream bx_cluster { ip_hash; server srv1:8080; ... keepalive 10; }
nginx -t systemctl restart nginx