206  /  282

Конфигурация и настройка web-кластера

Просмотров: 2571
Дата последнего изменения: 14.11.2024
Марина Павлова

Описание

Рассмотрим пул серверов из двух нод:

  • vm04 — основная нода ( на ней развернут пул )
  • vm03 — дополнительная нода ( на ней нет серверов )

Созданием веб-кластера, решаются следующие задачи:

  • Создание резервной копии.
  • Разделение веб-нагрузки на 2 ноды.

Через существующую реализацию кластера не решаются следующие задачи:

  • Горячая копия веб-сервера (вторая веб-нода) не будет полноценной заменой первой (без дополнительного вмешательства со стороны администратора сервера).
  • Возможность восстановления файлов, в случае их удаления. Синхронизация, в том числе и удаление, происходит достаточно быстро и удаление на любой ноде — приведет к удалению файла на всех.

В текущих настройках выделяются два типа веб-серверов:

  • Балансер: балансировщик, который проксирует запросы на все остальные ноды.
  • Веб: обработка php запросов.

Первый сервер в группе всегда — это роль балансера и веб. Все дополнительные сервера — это роль веб. В случае Виртуальной машины — роль балансера не может быть перенесена. Если ее нужно вынести на отдельный сервер, то читайте следующий урок.

Настройка web-ноды

Настройка web-ноды включает в себя следующие шаги:

  • Настройка синхрониазции файлов между нодами.
  • Конфигурация веб-служб для обработки запросов.

В BitrixVM представлено два сценария, которые настраивают веб-ноды:

  1. Настраивает web-ноду по шагам:
    • на первом шаге запускается сценарий по настройке синхронизации файлов,
    • на втором настраивает веб-сервисы.
    Шаги нужно разделить по времени если файлов много и перед запуском веб-сервисов хочется убедиться, что синхронизация выполнилась без ошибок.
  2. Настраивает все за "один" шаг. В один запуск сценария.

Синхронизация файлов/lsyncd

Синхронизация файлов делается через lsyncd.

Принцип работы:

  • intotify уведомляет приложение об изменениях в файловой системе;
  • lsyncd агрегирует изменения и запускает rsync/ssh для синхронизации;
  • синхронизация выполняется под пользователем bitrix.

Каталоги, которые синхронизируются (с сервера с ролью балансер на остальные сервера):

- /etc/nginx/bx/conf,
- /etc/nginx/bx/maps,
- /etc/nginx/bx/site_avaliable,
- /etc/nginx/bx/site_enabled,
- /etc/nginx/bx/site_cluster,
- /etc/nginx/bx/settings,
- /etc/httpd/bx/conf.

Между серверами с ролью веб — синхронизируются каталоги сайтов за исключением следующих подкаталогов:

- bitrix/cache
- bitrix/managed_cache
- bitrix/stack_cache
- upload/resize_cache.

Настройки lsyncd

Настройка включает в себя следующие шаги:

  1. Создание ssh ключей для пользователя bitrix. Это необходимо для работы rsync/ssh.
  2. Создание сервисов для синхронизации.

    Сервис именуется следующим образом: lsyncd-<HOSTNAME>, где HOSTNAME — это имя сервера Уникальный идентификатор сервера в пуле. , на который будут отправлены файлы в случае их изменения, создания или удаления.

    Например, если мы создаем web-ноду на сервере vm03, то на сервере vm04 будет создан сервис lsyncd-vm03. А если на сервере vm03 — lsyncd-vm04.

  3. Создание каталогов под временные файлы lsyncd.

    Это делается через сервис systemd-tmpfiles. Конфигурационный файл — /etc/tmpfiles.d/lsyncd.conf.

  4. Конфигурационные файлы lsyncd расположены по следующему пути /etc/lsyncd-<HOSTNAME>.conf.

    Основное различие между серверами: для сервера с ролью балансера (в нашем примере это vm04) файлы конфигурации будут содержать подкаталоги из /etc и каталоги сайтов. Для всех остальных дополнительных нод файлы конфигурации содержат только каталоги сайтов.

    Посмотрим на примере конфигурации указанной выше. На сервере vm04 файл /etc/lsyncd-vm03.conf будет содержать следующие каталоги:

    sync {
      default.rsyncssh,
      host        = "vm03",
      source      = "/etc/nginx/bx/",
      targetdir   = "/etc/nginx/bx/",
      exclude   = {
        "site_enabled/http_balancer*.conf",
        "site_enabled/https_balancer*.conf",
        "site_enabled/upstream.conf",
        "site_enabled/pool_manager.conf",
        "site_ext_enabled/",
        "server_monitor.conf",
        "pool_passwords",
        }
    ....
    }
    
    -- httpd
    sync {
      default.rsyncssh,
      host        = "vm03",
      source      = "/etc/httpd/bx/conf/",
      targetdir   = "/etc/httpd/bx/conf/",
    }
    
    sync {
      default.rsyncssh,
      host        = "vm03",
      source      = "/home/bitrix/www/",
      targetdir   = "/home/bitrix/www/",
      exclude   = {
        "bitrix/cache/",
        "bitrix/managed_cache/",
        "bitrix/stack_cache/",
        "upload/resize_cache/",
        "*.log", // учтите, что исключая "*.log", исключаются компоненты и модули, например bizproc.log
      },

    А конфигурационный файл на сервере vm03 /etc/lsyncd-vm04.conf будет содержать каталоги:

    sync {
      default.rsyncssh,
      host        = "vm04",
      source      = "/home/bitrix/www",
      targetdir   = "/home/bitrix/www",
      exclude   = {
        "bitrix/cache/",
        "bitrix/managed_cache/",
        "bitrix/stack_cache/",
        "upload/resize_cache/",
        "*.log", // учтите, что исключая "*.log", исключаются компоненты и модули, например bizproc.log
        "bitrix/.settings.php",
        "php_interface/*.php",
    ...
    }

    Примечание: Если на сервере больше чем один сайт, то все они будут синхронизированы.

  5. Запуск сервиса и отслеживание статуса синхронизации.

    В сценарий включена проверка завершения синхронизации выбранных каталогов. Делается это через файл статуса для каждого запущенного сервиса: /var/log/lsyncd/daemon-<HOSTNAME>.status

    Проверить статус сервиса lsyncd можно так:

    systemctl status %lsyncd-host%

    где %lsyncd-host% берется из названия файла конфигурации lsyncd для хоста.

    Чтобы найти все конфигурационные файлы для lsync используйте команду:

    // ищем на хосте vm04
    [root@vm04 ~]# ls -latr /etc | grep lsync
    // в ответ получаем список файлов:
    -rw-r--r-- 1 root root 286 Apr 12 2017 lsyncd.conf
    -rw-r--r-- 1 root root 2546 Jan 17 11:25 lsyncd-vm03.conf
    

    Видим, что наш текущий хост vm04 синхронизируется с хостом vm03 (файл lsyncd-vm03.conf). Статус lsyncd для этой синхронизации проверяем так:

    [root@vm04 ~]# systemctl status lsyncd-vm03
    // ответ
    ● lsyncd-vm03.service - Live Syncing (Mirror) Daemon for vm03
       Loaded: loaded (/etc/systemd/system/lsyncd-vm03.service; enabled; vendor preset: disable
       Active: active (running) since Wed 2024-01-17 12:22:33 MSK; 1s ago
    

Настройка и конфигурация web-служб

Выполните следующие шаги:

  1. Cоздайте логин для работы с базой. Работа с базой выполняется на удаленном сервере, поэтому требуется новый пользователь для работы с базой.
  2. Пропишите новые параметров в конфигурацию сайта. Меняются как настройки файлов, так и создаются записи в базу в модуль cluster.
  3. Создайте балансировщик на первой ноде пула (конфигурация NGINX сервиса). Балансирование нагрузки делается всегда на первой ноде в группе (в нашем примере vm04).

    Конфигурационные файлы: /etc/nginx/bx/site_enabled/http_balancer.conf и https_balancer_<SITENAME>.conf Настройки пула web-серверов содержаться в конфиге: /etc/nginx/bx/site_enabled/upstream.conf.

    Нагрузка распределяется по IP адресу клиента. В обычной ситуации клиент с одного и того же IPv4 адреса будет попадать на один и тот же web-сервер. Дополнительные конфиги для https_balancer* связаны с возможным существованием нескольких сайтов с разными сертификатами для одной конфигурации.
  4. Для Apache добавьте страницу статуса, которая позволяет из модуля cluster следить за статусом подключенного сервиса
  5. Выполните регистрацию нового веб-сервера в модуле Веб-кластер.

    Дополнительно на этом шаге в пуле за сервером закрепляется новая роль — web сервера.




0
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии