Веб-кластер 1С-Бітрікс: балансування та реплікація

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

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1368
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    956
  • 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
    699
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    848
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    737
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1086

Ви запускаєте рекламу, сайт на 1С-Бітрікс захльостує 3000+ одночасних відвідувачів, і сервер лягає. MySQL упирається в 100% CPU, кеш скидається кожні дві секунди, користувачі бачать 502 Bad Gateway. Знайома картина? Типове рішення — веб-кластер із трьох нод з балансуванням навантаження та реплікацією бази даних. Правильне налаштування такого кластера дозволяє витримувати до 10 000 відвідувачів, а вартість володіння знижується на 30–50% за рахунок дешевих реплік. Наприклад, клієнт зекономив $1200/міс після переходу на кластер. Ми налаштували вже 50+ кластерів і маємо сертифікат Bitrix Partner. Гарантія на роботи — 1 рік.

Модуль «Веб-кластер» у Бітрікс — це набір механізмів, які змушують кілька серверів працювати як єдине ціле: спільний кеш, реплікація файлів, єдині сесії. Без правильної конфігурації кожного компонента кластер працює непередбачувано — один вузол інвалідує кеш, інший віддає старі дані. Нижче розберемо, що входить до модуля, як налаштувати read/write split та синхронізацію файлів, і які підводні камені на вас чекають.

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

Модуль cluster (BitrixVM Enterprise або окрема ліцензія) включає:

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

Офіційна документація 1С-Бітрікс: «Модуль cluster дозволяє об'єднати кілька серверів у кластер для забезпечення відмовостійкості та масштабування».

Як активувати та налаштувати вузли?

Модуль встановлюється на кожній ноді, але керується через одну адміністративну панель. Додавання ноди через 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();
}

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

Найцінніша частина кластера для highload — направлення SELECT-запитів на репліки, а INSERT/UPDATE/DELETE на майстер. Знижує навантаження на майстер на 60–80% при типовому співвідношенні читання/запис 10:1. Це в 3 рази ефективніше за простого масштабування.

У .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',
        ],
    ],
],

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

Синхронізація файлів: вбудований модуль vs lsyncd

Критерій Вбудована синхронізація lsyncd + rsync
Залежність від PHP Так, через агенти Ні, на рівні ОС
Продуктивність Середня, при великій кількості файлів гальмує Висока, використовує inotify
Складність налаштування Низька, через адмінку Середня, вимагає конфіга LUA
Надійність Залежить від агентів Бітрікса Висока, незалежний демон

Вбудований модуль вміє синхронізувати файли між нодами через HTTP-запити до агентів. При завантаженні файлу на ноді-1 модуль автоматично копіює його на ноду-2 та ноду-3. Для захисту агента обмежте доступ по IP в Nginx: allow 10.0.0.0/24; deny all;.

Альтернатива — inotify + rsync через lsyncd. Працює швидше та надійніше для великих обсягів. Приклад конфіга lsyncd:

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?

Сесії у файловій системі в кластері непрацездатні — запити від одного користувача можуть потрапляти на різні ноди. Переводимо на Memcached або Redis. Sticky sessions на балансувальнику — тимчасове рішення, не рекомендується: при виході ноди з ладу всі її користувачі втрачають сесію. Ми завжди налаштовуємо централізоване сховище.

Приклад конфігурації PHP для Memcached:

session.save_handler = memcached
session.save_path = "10.0.0.30:11211,10.0.0.31:11211"

Порівняння балансувальників для веб-кластера 1С-Бітрікс

Характеристика Nginx HAProxy Хмарний LB (AWS, Yandex)
Простота налаштування Висока Середня Низька (через API)
SSL offloading Так Так Так
Sticky sessions Так (ip_hash) Так (cookie insert) Так
Ціна Безкоштовно Безкоштовно Плата за трафік

Як виконати перевірку роботи кластера?

Використовуйте shell-скрипт для перевірки статусу нод та очищення кеша:

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

# Очищення кеша на всіх нодах
php -r "\Bitrix\Main\Loader::includeModule('cluster'); \Bitrix\Cluster\Cache::clearAll(); echo 'Cache cleared';"

Покрокова інструкція налаштування веб-кластера

  1. Встановіть BitrixVM Enterprise на кожну ноду.
  2. Налаштуйте реплікацію MySQL: майстер-слейв.
  3. В адмінці Бітрікс додайте ноди в модуль кластера.
  4. Налаштуйте read/write split у .settings.php.
  5. Виберіть спосіб синхронізації файлів: вбудований або lsyncd.
  6. Перенесіть сесії на Memcached або Redis.
  7. Налаштуйте балансувальник (nginx, haproxy або хмарний).
  8. Перевірте працездатність через cluster_nodes.php.

Типові помилки при налаштуванні

Найчастіше зустрічається ігнорування кешування: без спільного Memcached кеш інвалідується окремо на кожній ноді, що призводить до неконсистентності даних. Також нерідкі неправильні права доступу до агентів синхронізації файлів — агент не може прочитати файл або записати його на іншу ноду. Відсутність моніторингу зв'язності нод призводить до того, що одна нода випадає, а трафік продовжує на неї направлятися. І нарешті, використання sticky sessions без централізованого сховища сесій — при виході ноди всі її користувачі втрачають дані.

Детальніше про концепцію кластерів читайте на Wikipedia.

Наша команда має 10+ років досвіду в налаштуванні кластерів 1С-Бітрікс. Зв'яжіться з нами для аудиту вашого кластера — отримайте план оптимізації під ваше навантаження. Замовте консультацію, і ми допоможемо налаштувати кластер, який витримає будь-який пік.

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