Налаштування кластерної конфігурації 1С-Бітрікс
Налаштування кластерної конфігурації 1С-Бітрікс
Один сервер не може масштабуватися нескінченно. При пікових навантаженнях (акції, свята) сайт падає або відповідає за 10+ секунд — вертикальне масштабування впирається у вартість і фізичні обмеження заліза. 1С-Бітрікс підтримує горизонтальне масштабування через вбудований механізм веб-кластера: кілька серверів застосунків, спільна база даних з реплікацією, розподілений кеш.
Архітектура кластера 1С-Бітрікс
Стандартна схема для highload:
[Load Balancer]
/ | \
[web-1] [web-2] [web-3]
| | |
[Shared Storage - NFS/GlusterFS]
|
[DB Master] ---> [DB Replica-1]
---> [DB Replica-2]
|
[Memcached / Redis Cluster]
[Elasticsearch Cluster]
Всі веб-вузли працюють зі спільним сховищем файлів, спільною БД і спільним кешем. Завантаження файлів (зображення, прайси) потрапляють у розподілене сховище, доступне всім нодам.
Вимоги до проекту, що кластеризується
До переходу на кластер перевіряємо:
- Немає зберігання даних у
$_SESSIONбез спільного сховища сесій - Немає прямих записів до локальної файлової системи (тимчасові файли — у
/tmpна shared, кеш — у Memcached) - Немає hardcoded шляхів, що залежать від конкретного сервера
- Файли кешу 1С-Бітрікс (
/bitrix/cache/) змонтовані з NFS або винесені в Memcached
Налаштування модуля веб-кластера
В адміністративній панелі: Управління → Продуктивність → Кластер.
Активація через PHP:
\Bitrix\Main\Loader::includeModule('cluster');
// Реєструємо вузли кластера
$cluster = new \CCluster();
$cluster->Add([
'NAME' => 'web-02',
'HOST' => '10.0.0.12',
'PORT' => 80,
'STATUS' => 'ACTIVE',
]);
Shared Storage: NFS vs GlusterFS
NFS — простіший у налаштуванні, підходить для 2–3 нод в одному датацентрі:
# На NFS-сервері
apt install nfs-kernel-server
echo "/var/www/bitrix/upload 10.0.0.0/24(rw,sync,no_root_squash)" >> /etc/exports
exportfs -a
# На веб-нодах
apt install nfs-common
mount -t nfs 10.0.0.20:/var/www/bitrix/upload /var/www/bitrix/upload
Монтуємо лише директорії з користувацьким контентом: upload/, cache/ (якщо не Redis), resize_cache/.
GlusterFS — розподілена FS з реплікацією, без єдиної точки відмови. Складніший у налаштуванні, але немає SPOF при виходi NFS-сервера з ладу.
Розподілений кеш
Без спільного кешу кожен веб-вузол має свій ізольований файловий кеш. Після оновлення товару інвалідація відбувається лише на одному вузлі — інші віддають застарілі дані.
// /bitrix/.settings.php — єдиний для всіх нод
'cache' => [
'value' => [
'type' => 'memcache',
'memcache' => [
['host' => '10.0.0.30', 'port' => 11211],
['host' => '10.0.0.31', 'port' => 11211],
],
'sid' => 'bitrix_production',
],
],
Синхронізація конфігураційних файлів
.settings.php, dbconn.php і php_interface/ мають бути ідентичними на всіх вузлах. Використовуємо rsync через cron або Ansible:
# Мастер-нода синхронізує конфіги на решту
rsync -az /var/www/bitrix/bitrix/.settings.php web-02:/var/www/bitrix/bitrix/
rsync -az /var/www/bitrix/bitrix/.settings.php web-03:/var/www/bitrix/bitrix/
У production-середовищах конфігурація зберігається в Git і деплоїться через CI/CD одночасно на всі ноди.
Терміни
Проектування та розгортання кластера з 3 веб-нод з NFS-сховищем, реплікацією БД і Memcached — 5–10 робочих днів залежно від складності проекту та поточного стану інфраструктури.







