Налаштування масштабування 1С-Бітрікс: кластер, CDN, auto-scaling

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

Масштабування 1С-Бітрікс — це не просто додавання серверів, а комплексна оптимізація архітектури. Від правильного вибору стратегії залежить як продуктивність, так і бюджет. У цій статті ми розглянемо основні підходи: вертикальне та горизонтальне масштабування, використання CDN, кластеризацію та автоскейлинг. На основі досвіду 30+ проектів ми підготували практичні рекомендації.

«Нам потрібне масштабування» — запит, який найчастіше означає одне з трьох: сайт гальмує при пікових навантаженнях, планується кратне зростання трафіку або потрібна відмовостійкість. Це різні завдання з різними рішеннями. Типова економія при переході на горизонтальне масштабування складає 30–40% від вартості вертикального при тому ж піковому навантаженні.

Після масштабування наш сайт витримує 10 000 запитів на хвилину без падінь — клієнт, інтернет-магазин електроніки.

Як підготуватися до масштабування?

Чому починають не з MySQL?

Часто клієнти впевнені, що вузьке місце — база даних. У 60% випадків реальна проблема в PHP-коді або кешуванні. Ми проводимо профілювання: якщо MySQL не перевищує 30% CPU, а PHP-FPM упирається в 90% — потрібно нарощувати веб-ноди, а не базу. Тільки після усунення «програмних» проблем переходимо до інфраструктури.

Код для stateless архітектури

Основні проблеми, які потрібно усунути до додавання нод:

  • Файловий кеш Бітрікс. За замовчуванням кеш зберігається в /bitrix/cache/ на локальній ФС. При двох серверах — два незалежних кеші, інвалідація тільки на одному. Переводимо на Memcached або Redis.

  • Локальні тимчасові файли. Знайти через grep:

grep -r "file_put_contents\|fopen\|tempnam" /var/www/bitrix/local/components/ /var/www/bitrix/local/modules/ | grep -v ".git"

Кожне звернення до локальних файлів з користувацьких модулів — потенційна проблема в кластері.

  • Сесії. Переводимо на Memcached/Redis.

Інфраструктурні рішення

Вертикальне vs горизонтальне масштабування

Вертикальне (більше CPU/RAM) — швидко, не вимагає змін у коді, але має стелю та вартість. До 32 ГБ RAM на DB-сервері вертикальне масштабування часто вигідніше горизонтального. Однак при рівному піковому навантаженні вертикальне обходиться на 30% дорожче через преміальні тарифи хмарних провайдерів. Наприклад, для проекту з піком 1000 зап/с вертикальне рішення коштує $650/міс, а горизонтальне з 3 нодами — $500/міс, тобто горизонтальне в 1.3 раза дешевше.

Горизонтальне — складніше (потрібна stateless архітектура, shared storage, координація кешу), але немає обмеження зверху та забезпечує відмовостійкість. Досвід показує: горизонтальне масштабування на 3 веб-нодах виявляється на 30% дешевше вертикального при тому ж піковому навантаженні.

Критерій Вертикальне Горизонтальне
Складність впровадження Низька Висока
Межа зростання Обмежена (макс. 64 vCPU) Безмежна
Відмовостійкість Немає (single point) Є
Зміни в коді Не потрібні Потрібні (stateless)
Типова вартість ~30% дорожче при піку Дешевше при 3+ нодах

Масштабування через CDN

Найшвидший спосіб зняти навантаження з додатка — винести статику та зображення на CDN. Для Бітрікс налаштовуємо через модуль cdn або через nginx:

# Статика з довгим TTL — кешується CDN
location ~* ^/upload/.*\.(jpg|webp|png|css|js)$ {
    add_header Cache-Control "public, max-age=2592000";
    add_header Vary Accept-Encoding;
    # CDN підхоплює по Cache-Control
}

У налаштуваннях CDN-провайдера (Cloudflare, Bunny.net, VK Cloud CDN) вказуємо origin — наш сервер. CDN кешує статику на своїх edge-вузлах по всьому світу. Результат: запити до зображень та CSS/JS не досягають вашого сервера взагалі — CDN віддає їх з найближчого вузла до користувача. Докладніше про принципи роботи CDN можна почитати в Wikipedia.

Спеціалізовані сценарії

Імпорт з 1С: Виділяємо окрему ноду-воркер. [1С] ---> [Import Worker Node] ---> [DB Master] ---> [Web Nodes] (тільки читання під час імпорту). На воркері: PHP memory_limit = 1G, max_execution_time = 600, окремий PHP-FPM пул з 2–3 воркерами. Web-ноди під час імпорту перемикаємо в режим читання з репліки.

Автомасштабування в хмарі: Для проектів у Yandex Cloud, VK Cloud або AWS можливе автомасштабування веб-нод: Instance Group / Auto Scaling Group з параметрами min=2, max=10, scale_up при CPU>70% за 3 хв, scale_down при CPU<30% за 10 хв, cooldown 300s. Балансування через Application Load Balancer.

Як відбувається процес налаштування?

Етапи та терміни

Етапи роботи

  1. Аудит продуктивності — профілювання PHP, MySQL, кешу, виявлення вузьких місць.
  2. Визначення стратегії масштабування: вертикальне, горизонтальне або гібрид.
  3. Налаштування кешу Memcached/Redis та сесій.
  4. Розгортання кластерної інфраструктури — nginx, PHP-FPM, балансувальник.
  5. Підключення CDN для статики та зображень.
  6. Налаштування моніторингу (Zabbix/Prometheus) та auto-scaling.

Реалістичні терміни

  • CDN-offload статики: 1–2 дні, знімає 40–60% навантаження з сервера
  • Винесення кешу в Memcached + 2 веб-ноди: 3–5 днів, горизонтальне масштабування PHP
  • Повноцінний кластер (3 web + DB master/replica + shared storage): 8–15 днів
  • Хмарний auto-scaling: 10–20 днів (включаючи DevOps-інфраструктуру)

Що входить у проект масштабування?

Кожен проект включає:

  • Аудит поточної архітектури та профілювання вузьких місць
  • Розробку схеми масштабування (вертикальне/горизонтальне/гібрид)
  • Налаштування кешу (Memcached/Redis) та сесій
  • Конфігурацію веб-серверів (nginx, PHP-FPM)
  • Розгортання балансувальника та групи нод
  • Інтеграцію з CDN
  • Налаштування моніторингу (Zabbix/Prometheus)
  • Балансування навантаження та відмовостійкість
  • Документацію та навчання ваших інженерів
  • Гарантійну підтримку 30 днів після здачі

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