Налаштування кластеризації Бітрікс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
    Розробка веб-сайту для компанії ФІКСПЕР
    944
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1074

Коли одного сервера перестає вистачати — а це трапляється при 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% бюджету.

Ознаки, коли кластеризація необхідна

Не кожному проекту. Конкретні маркери:

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

Іноді вистачає композитного кешу, оптимізації SQL та вертикального масштабування. Ми чесно скажемо, якщо кластер поки не потрібен. Інвестиції в кластеризацію окупаються за 3-6 місяців при пікових навантаженнях.

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

Балансувальник. 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 дні. Ми розрахуємо вартість індивідуально під ваші завдання. Замовте аудит — дізнайтеся точну архітектуру та бюджет.