Настройка веб-кластера 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка веб-кластера 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка веб-кластера 1С-Битрикс

Настройка веб-кластера 1С-Битрикс

Модуль «Веб-кластер» в Битрикс — это не автоматическое горизонтальное масштабирование кнопкой. Это набор механизмов синхронизации, которые позволяют нескольким серверам работать как единое целое: общий кэш, репликация файлов, единые сессии. Без правильной настройки каждого компонента кластер работает непредсказуемо — один узел инвалидирует кэш, другой отдаёт старые данные.

Что входит в модуль веб-кластера

Модуль cluster (BitrixVM Enterprise или отдельная лицензия) включает:

  • Управление узлами — регистрация серверов, мониторинг доступности
  • Балансировка нагрузки — перенаправление запросов между узлами
  • Синхронизация кэша — инвалидация по всем нодам через общий Memcached
  • Репликация файлов — синхронизация upload/ между серверами
  • Репликация БД — настройка read/write split для MySQL

Активация и настройка узлов

Модуль устанавливается на каждой ноде, но управляется через одну административную панель.

Добавление ноды через API:

\Bitrix\Main\Loader::includeModule('cluster');

$result = \Bitrix\Cluster\Node::add([
    'NAME'      => 'web-02',
    'HOST'      => '10.0.0.12',
    'PORT'      => 443,
    'HTTPS'     => 'Y',
    'STATUS'    => 'ACTIVE',
    'SORT'      => 100,
]);

if ($result->isSuccess()) {
    echo 'Нода добавлена: ' . $result->getId();
}

Проверка связности нод:

# С каждой ноды должен быть доступен API других нод
curl -k https://10.0.0.12/bitrix/admin/cluster_check.php

Read/Write Split для базы данных

Самая ценная часть кластера для highload — направление SELECT-запросов на реплики, а INSERT/UPDATE/DELETE на мастер. Снижает нагрузку на мастер на 60–80% при типичном соотношении чтение/запись 10:1.

В .settings.php:

'connections' => [
    'value' => [
        'default' => [
            'className' => '\Bitrix\Main\DB\MysqlConnection',
            'host'      => 'db-master:3306',
            'database'  => 'bitrix',
            'login'     => 'bitrix',
            'password'  => 'secret',
        ],
        'slave'  => [
            'className' => '\Bitrix\Main\DB\MysqlConnection',
            'host'      => 'db-replica:3306',
            'database'  => 'bitrix',
            'login'     => 'bitrix_ro',
            'password'  => 'secret_ro',
        ],
    ],
],

Настройка в модуле кластера указывает, какие запросы идут на какое соединение. Транзакционные запросы принудительно маршрутизируются на мастер вне зависимости от типа операции.

Синхронизация файлов через модуль

Модуль умеет синхронизировать файлы между нодами через HTTP-запросы к агентам на каждом сервере. При загрузке файла через административный интерфейс на нода-1 модуль автоматически копирует его на нода-2 и нода-3.

Настройка агента синхронизации на каждой ноде:

# nginx: закрываем агент синхронизации от публичного доступа
location /bitrix/admin/cluster_file_sync.php {
    allow 10.0.0.0/24;  # только внутренняя сеть
    deny all;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

Альтернатива встроенной синхронизации — inotify + rsync через lsyncd. Работает независимо от PHP и надёжнее для больших объёмов файлов:

-- /etc/lsyncd/lsyncd.conf.lua
sync {
    default.rsync,
    source = "/var/www/bitrix/upload",
    target = "web-02:/var/www/bitrix/upload",
    delay = 1,
    rsync = {
        compress = false,
        owner = true,
        perms = true,
    }
}

Управление сессиями в кластере

Сессии в файловой системе в кластере неработоспособны — запросы от одного пользователя могут попадать на разные ноды. Переводим на Memcached или Redis:

; php.ini на всех нодах (одинаковый)
session.save_handler = memcached
session.save_path = "10.0.0.30:11211,10.0.0.31:11211"

Sticky sessions на балансировщике — временное решение, не рекомендуется: при выходе ноды из строя все её пользователи теряют сессию.

Проверка работы кластера

# Статус всех нод
curl http://admin:[email protected]/bitrix/admin/cluster_nodes.php?ajax=Y

# Тест инвалидации кэша через API
php -r "
\Bitrix\Main\Loader::includeModule('cluster');
\Bitrix\Cluster\Cache::clearAll();
echo 'Cache cleared on all nodes';
"