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

Ви запускаєте рекламу, сайт на 1С-Бітрікс захльостує 3000+ одночасних відвідувачів, і сервер лягає. MySQL упирається в 100% CPU, кеш скидається кожні дві секунди, користувачі бачать 502 Bad Gateway. Знайома картина? Типове рішення — веб-кластер із трьох нод з балансуванням навантаження та реплікаціє
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Веб-кластер 1С-Бітрікс: балансування та реплікація
Простий
~1 день

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

Часті запитання

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

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

Ви запускаєте рекламу, сайт на 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С-Бітрікс. Зв'яжіться з нами для аудиту вашого кластера — отримайте план оптимізації під ваше навантаження. Замовте консультацію, і ми допоможемо налаштувати кластер, який витримає будь-який пік.