Услуги по кластеризации и масштабированию 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 11 из 11 услугВсе 1626 услуг
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1163
  • 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
    563
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    653
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

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

Master-Slave репликация MySQL — ядро всей затеи

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

Настройка, где обычно спотыкаются:

На master: binlog_format = ROW. Не STATEMENT — на сложных запросах с NOW(), UUID() или недетерминированными функциями STATEMENT-репликация даёт расхождения между master и slave. Дебажить потом неделю. Плюс обязательно уникальный server-id, включённый binary log.

На slave: read_only = ON, свой server-id, relay-log. Инициализацию делаем через xtrabackupmysqldump на базе в 20 ГБ заблокирует таблицы на полчаса.

Seconds_Behind_Master — метрика номер один. Если slave отстаёт на 5+ секунд, покупатель оформляет заказ, возвращается в личный кабинет — а заказа там нет, потому что SELECT ушёл на отстающий slave. Модуль «Веб-кластер» позволяет исключать критичные запросы из маршрутизации на slave, но это нужно настраивать руками.

Failover: Orchestrator или ProxySQL промоутят slave в master за 15-30 секунд. Модуль поддерживает до 9 slave-соединений с настраиваемыми весами распределения нагрузки. Проверка целостности — pt-table-checksum из Percona Toolkit, на больших базах без него расхождения неизбежны.

Когда реально нужен кластер

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

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

Иногда хватает композитного кэша, оптимизации SQL и вертикального масштабирования. Мы честно скажем, если кластер пока не нужен.

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

Балансировщик. 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 репликация Автоматически

Наш подход

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

Сроки

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