Налаштування кластерної конфігурації 1С-Бітрікс

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

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

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

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

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

Налаштування кластерної конфігурації 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 робочих днів залежно від складності проекту та поточного стану інфраструктури.