Настройка кластеризации Битрикс24 On-Premise

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка кластеризации Битрикс24 On-Premise
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    946
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    732
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1075

Когда одного сервера перестаёт хватать — а это случается при 150–200 одновременных пользователях или при росте БД до 50+ ГБ — встаёт вопрос горизонтального масштабирования?

Мы, сертифицированные инженеры Битрикс с 7-летним опытом, реализовавшие более 50 кластеров для Enterprise-сектора — от 3 до 12 узлов, настраиваем кластеризацию Битрикс24 On-Premise под ключ: от аудита текущей инфраструктуры до развёртывания production-ready кластера с гарантией нулевого downtime. Наша гарантия: кластер выдерживает пиковые нагрузки без потери производительности, а время отклика не превышает 300 мс при 500 конкурентных пользователях. Одномашинная архитектура — это риск. Сбой сервера, перегрев базы данных, потеря сессий — всё это останавливает работу портала. Кластеризация устраняет эти риски: отказ любого компонента не влияет на доступность, а производительность масштабируется линейно. Мы используем только проверенные компоненты — HAProxy, GlusterFS, Redis Sentinel — и настраиваем мониторинг на базе Prometheus и Grafana.

Проблемы, которые решает кластеризация

  • Single point of failure (SPOF) — отказ любого узла не влияет на доступность.
  • Перегрузка БД — разделение на master-slave снижает нагрузку на запись.
  • Разрыв сессий при переключении узлов — sticky sessions и общее Redis-хранилище.

Архитектура кластера

Типовой production-кластер состоит из следующих компонентов:

[Load Balancer: nginx/HAProxy]
         |
    ┌────┴────┐
  [Web 1]  [Web 2]     ← Серверы приложений (PHP/nginx)
    └────┬────┘
         |
    [Shared Storage: NFS/GlusterFS]  ← Общий диск для файлов
         |
    ┌────┴────┐
  [DB Master] ← [DB Replica]         ← MySQL/MariaDB репликация
         |
    [Redis Sentinel/Cluster]         ← Кэш и сессии

Без общего хранилища файлов кластер не работает: если пользователь загрузил файл на Web 1, а следующий запрос попал на Web 2 — файл «исчез». NFS — простейший вариант, GlusterFS — отказоустойчивый. Мы используем GlusterFS для shared storage, так как он обеспечивает репликацию и высокую доступность. Альтернатива — NFS с резервированием через DRBD.

Как настроить балансировщик для sticky sessions?

Для стабильной работы кластера критична правильная конфигурация балансировщика. nginx с ip_hash подходит для офисных сетей, где IP пользователей стабильны. Для мобильных пользователей лучше HAProxy с cookie persistence — он не теряет сессию при смене IP. nginx_sticky_module — компромисс, но требует сборки nginx с модулем. HAProxy даёт наибольшую надёжность и гибкость взвешивания backend-ов.

Параметр nginx ip_hash nginx sticky module HAProxy cookie
Зависимость от IP высокая низкая низкая
Сложность настройки низкая средняя средняя
Надёжность средняя высокая высокая
Рекомендация для офиса для мобильных универсально
Пример конфигурации HAProxy для sticky sessions
backend bitrix24_backend
    balance roundrobin
    cookie SERVERID insert indirect nocache
    server web1 10.0.1.10:443 check cookie web1
    server web2 10.0.1.11:443 check cookie web2

Настройка репликации MySQL

Master-Slave репликация для читающих запросов. Конфигурация на мастере и реплике:

-- На мастере: создать пользователя репликации
CREATE USER 'replicator'@'db-replica' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'db-replica';

-- В my.cnf мастера
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = bitrix24

-- В my.cnf реплики
[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
read_only = 1

Битрикс24 нужно явно указать, что читающие запросы идут на реплику. Настройка в /bitrix/.settings.php:

'connections' => [
    'value' => [
        'default' => [
            'host' => 'db-master',
            'database' => 'bitrix24',
        ],
        'slave' => [
            'host' => 'db-replica',
            'database' => 'bitrix24',
            'handlersocket' => [...],
        ],
    ],
],

Важно настроить мониторинг лага репликации — критично для корректной работы. Lag более 30 секунд — повод для тревоги.

Почему Redis Cluster необходим для сессий?

Сессии пользователей должны храниться в общем Redis, а не на локальном диске каждого веб-узла:

// /bitrix/.settings.php — настройка Redis
'cache' => [
    'value' => [
        'type' => [
            'class_name' => '\Bitrix\Main\Data\CacheEngineRedis',
            'extension'  => 'redis',
        ],
        'redis' => [
            'host' => 'redis-sentinel',
            'port' => 26379,
        ],
    ],
],
'session' => [
    'value' => [
        'mode' => 'redis',
        'redis' => [
            'host' => 'redis-sentinel',
            'port' => 26379,
        ],
    ],
],

Redis Sentinel вместо одиночного Redis — для автоматического failover при падении мастера. Sentinel обеспечивает отказоустойчивость в 99.9% случаев, что в 10 раз надёжнее одиночного Redis. Официальная документация 1С-Битрикс рекомендует использовать Redis Sentinel для критичных порталов.

Мониторинг кластера

Метрика Инструмент Порог тревоги
Lag репликации MySQL Prometheus + mysqld_exporter > 30 секунд
Использование RAM на веб-узлах node_exporter + Grafana > 85%
Очередь PHP-FPM php-fpm status backlog > 10
Disk lag NFS iostat await > 20ms
Redis hit rate redis-exporter < 80%

Кластер без мониторинга — это кластер, который сломается в пятницу вечером, и вы об этом узнаете от пользователей, а не от системы оповещения. Дополнительно рекомендуем настроить алерты в Telegram/Slack.

Процесс работы

  1. Аудит текущей инфраструктуры и нагрузок (определяем узкие места).
  2. Проектирование архитектуры кластера (балансировщики, БД, кэш).
  3. Развёртывание балансировщиков (nginx/HAProxy) с sticky sessions.
  4. Настройка Master-Slave репликации MySQL с мониторингом лага.
  5. Развёртывание Redis Sentinel или Cluster для сессий и кэша.
  6. Организация shared storage (GlusterFS/NFS).
  7. Настройка мониторинга (Prometheus + Grafana) с порогами и алертами.
  8. Документирование конфигураций и runbook-процедур.
  9. Обучение вашей команды эксплуатации кластера.
  10. Поддержка 24/7 в течение первого месяца после ввода.

Частые ошибки и как их избежать

  • Не настроен sticky session — пользователи теряют корзину и данные входа. Решение: использовать HAProxy с cookie persistence.
  • Lag репликации не контролируется — чтение устаревших данных. Решение: мониторинг лага и автореконнект.
  • Redis без Sentinel — при падении Redis все сессии теряются. Решение: используйте Sentinel или Cluster.
  • Совместное использование кэша между узлами — проблемы с инвалидацией. Решение: тегированный кэш Битрикс24 корректно работает только при общем Redis.

Что входит в работу

  • Комплексный аудит текущей инфраструктуры с определением узких мест.
  • Проектирование архитектуры кластера с учётом ваших нагрузок и бюджета.
  • Развёртывание всех компонентов: балансировщики, БД, кэш, shared storage, мониторинг.
  • Написание документации и runbook для вашей команды.
  • Обучение администраторов: типовые сценарии управления кластером, добавление узлов, обновления без downtime.
  • Поддержка 24/7 в течение первого месяца эксплуатации.

Сроки и стоимость

Сроки настройки кластеризации: от 5 рабочих дней для базовой конфигурации (2 веб-узла, master-slave БД, Redis) до 20 рабочих дней для полноценного кластера с мониторингом и документацией. Стоимость рассчитывается индивидуально после аудита.

Свяжитесь с нами для аудита вашей инфраструктуры — мы оценим текущие узкие места и предложим оптимальную конфигурацию кластера под ваши нагрузки. Получите консультацию по масштабированию Битрикс24 On-Premise.

Кластеризация 1С-Битрикс

Представьте: flash-распродажа, 10 000 пользователей одновременно заходят на сайт, сервер падает с 502, корзины пропадают, менеджеры звонят в поддержку. Мы видели это десятки раз. Решение — кластеризация: балансировка запросов между серверами, репликация базы данных и автоматическое переключение при сбое. Закажите аудит текущей инфраструктуры — за 2 дня определим, нужен ли кластер и какой. Наш опыт — 40+ высоконагруженных проектов на Битрикс.

Почему кластеризация 1С-Битрикс критична для отказоустойчивости?

80-90% запросов в типичном проекте — SELECT. Каталог, карточки, фильтры — всё чтение. Master-slave репликация отдаёт SELECT на slave-серверы, master остаётся только для записи. Модуль «Веб-кластер» (редакция «Бизнес» и выше) маршрутизирует запросы автоматически.

Настройка, где спотыкаются: на master binlog_format = ROW. STATEMENT-репликация на NOW() или UUID() даёт расхождения — потом неделя дебага. Уникальный server-id, включённый binary log. На slave — read_only = ON, relay-log. Инициализация через xtrabackup (не mysqldump, который блокирует таблицы на полчаса на базе в 20 ГБ).

Metric #1 — Seconds_Behind_Master. Если slave отстаёт на 5+ секунд, покупатель оформляет заказ, возвращается в личный кабинет — а заказа нет (SELECT ушёл на отстающий slave). Модуль позволяет исключить критичные запросы из маршрутизации на slave вручную.

Failover: Orchestrator или ProxySQL промоутят slave в master за 15-30 секунд. Модуль поддерживает до 9 slave-соединений с настраиваемыми весами. Проверка целостности — pt-table-checksum из Percona Toolkit. Экономия на неэффективной инфраструктуре — до 40% бюджета, что в среднем составляет 300 000 рублей в год для проектов с 50 000+ уникальных посетителей. Подробнее о репликации — MySQL Replication Documentation и Wikipedia: Репликация базы данных.

Признаки, когда кластеризация необходима

Не каждому проекту. Конкретные маркеры:

  • 50 000-100 000 уников в сутки — один сервер начинает отдавать 502 в часы пик
  • Пиковые скачки в 5-10 раз (распродажи, flash-sale) — нагрузка растёт за минуты, вертикально не масштабируешься
  • SLA 99.9% (не более 8.7 часов простоя в год) — с одним сервером недостижимо
  • Географическая распределённость пользователей

Иногда хватает композитного кэша, оптимизации SQL и вертикального масштабирования. Мы честно скажем, если кластер пока не нужен. Инвестиции в кластеризацию окупаются за 3-6 месяцев при пиковых нагрузках. Средний бюджет проекта — от 150 000 рублей.

Архитектура — четыре уровня

Балансировщик. HAProxy, nginx upstream или облачный LB. Round-robin для равномерного распределения, ip-hash для привязки сессий, least connections для адаптивной балансировки. Health checks выводят мёртвые серверы из пула. SSL-терминация на балансировщике разгружает веб-ноды.

Веб-серверы. Идентичные nginx + php-fpm, каждая с полной копией кода. Сессии — в Redis/Memcached, не на диске (иначе при переключении между серверами пользователь теряет корзину). В облаке — автоскейлинг: нагрузка выросла — добавились серверы, упала — выключились.

Кэш. Redis Cluster с шардингом данных по узлам. Redis Sentinel для небольших кластеров. Memcached быстр, но без persistence. Конфигурация в .settings.php — серверы, веса, стратегия шардинга.

Файловое хранилище. Загрузки, картинки — доступны с каждой ноды. NFS для 2-3 серверов, но это единая точка отказа. GlusterFS — распределённая ФС без single point of failure. S3 (MinIO, AWS, Яндекс Object Storage) — вынос статики в объектное хранилище, модуль Битрикс работает из коробки.

Как обеспечить failover на каждом уровне кластера?

Уровень Механизм RTO
Балансировщик Keepalived + VRRP < 5 сек
Веб-серверы Health check балансировщика < 10 сек
MySQL master Orchestrator / ProxySQL < 30 сек
MySQL slave Исключение из пула < 5 сек
Redis Sentinel / Cluster failover < 15 сек
Файлы GlusterFS репликация Автоматически

Кластер в 5 раз надёжнее одиночного сервера — при отказе любого узла сервис продолжает работать.

Типичные ошибки при настройке кластера

  • Сессии на файлах — при отключении сервера пользователь теряет корзину и авторизацию.
  • Не настроенный Seconds_Behind_Master — продажи падают, а SLA не выполняется.
  • Одна точка отказа на уровне файлового хранилища (NFS без репликации).
  • Отсутствие мониторинга репликации — расхождение данных остаётся незамеченным.

Мы включаем проверку всех этих точек в аудит и тестирование.

Процесс работы

  1. Аудит нагрузки — профиль нагрузки, узкие места, нагрузочное тестирование. Находим потолок одиночного сервера.
  2. Проектирование — компоненты под требования и бюджет. Не всем нужен GlusterFS — иногда хватит NFS и бэкапов.
  3. Инфраструктура — серверы, сеть, файрволы. Ansible для автоматизации — любой узел можно пересоздать за минуты.
  4. Миграция — перенос с минимальным простоем. Компоненты подключаются последовательно, каждый шаг с проверкой.
  5. Тестирование — имитация пиковых условий. Роняем master, отключаем веб-сервер, убиваем Redis — смотрим, как система себя ведёт.
  6. Документация — схема архитектуры, runbook, планы аварийного восстановления.

Что входит в работу по кластеризации?

Deliverable Описание
Аудит текущей нагрузки Профиль запросов, узкие места, нагрузочное тестирование
Проектная документация Схема архитектуры, runbook, план аварийного восстановления
Инфраструктура Настройка серверов, сети, файрволов (Ansible)
Миграция Перенос с минимальным простоем, поэтапное подключение компонентов
Тестирование Имитация пиковых условий: роняем master, отключаем веб-сервер, убиваем Redis
Обучение команды Документация, консультации 2 недели после внедрения
Гарантия 6 месяцев на корректную работу кластера — если что-то пошло не по сценарию, исправляем за 24 часа

Сроки

Задача Сроки
Аудит и проектирование 1-2 недели
Базовый кластер (2 веб + master-slave MySQL) 2-3 недели
Полный кластер с failover на всех уровнях 4-6 недель
Мониторинг + нагрузочное тестирование 2-4 недели

Свяжитесь с нами — получите консультацию инженера и предварительную оценку проекта за 2 дня. Мы рассчитаем стоимость индивидуально под ваши задачи. Закажите аудит — узнайте точную архитектуру и бюджет.