Балансування навантаження 1С-Бітрікс: HAProxy, nginx, кейси

Коли сайт на 1С-Бітрікс гальмує в пік, а відмова одного сервера валить весь проєкт, проблема часто в нерівномірному розподілі навантаження. Ми налаштовуємо балансировку під ключ: підбираємо оптимальний алгоритм, конфігуруємо health checks і забезпечуємо відмовостійкість. Наша команда бере на себе весь цикл — від аудиту до підтримки, щоб ваш сайт стабільно працював навіть при різких сплесках трафіку.

Балансування навантаження 1С-Бітрікс: HAProxy, nginx, кейси

КластеризаціяПростий~1 день
Часті запитання

Два сервери Бітрікс без балансувальника

П'ять серверів Бітрікс працюють, але сайт гальмує в пік — один сервер бере 80% запитів, інші простоюють. Без єдиного front-end'а навантаження розподіляється нерівномірно, а відмова одного сервера валить увесь сайт. Ми налаштовуємо балансування під ключ: підбираємо алгоритм, конфігуруємо health checks, інтегруємо з push-сервером та адмінкою. Результат — стабільна робота при пікових навантаженнях та економія на інфраструктурі до 30%.

Наприклад, для інтернет-магазину з каталогом 500 000 товарів ми налаштували HAProxy — час відповіді знизився на 40%, а кількість втрачених замовлень впала до нуля. Для новинного порталу з 10 000 concurrent users ми використали nginx upstream і збільшили пропускну здатність втричі.

Чому балансування критичне для Бітрікс?

Без балансування один сервер перевантажується, другий простоює. У пік (розпродаж, акція) це дає тайм-аути та втрату замовлень. Балансувальник рівномірно розподіляє запити, збільшує пропускну здатність у 2-3 рази та забезпечує відмовостійкість: якщо одна нода падає, інші продовжують роботу. Додатково балансування знижує навантаження на базу даних за рахунок кешування на кожній ноді.

Який балансувальник вибрати: HAProxy чи nginx?

HAProxy — спеціалізований балансувальник L4/L7. Він обробляє до 100 000 запитів на секунду — вдвічі більше, ніж nginx upstream. HAProxy дає детальну статистику (статуси, черги) та кастомні HTTP-перевірки. nginx upstream — частина веб-сервера, простіший у конфігурації, але менш гнучкий. Згідно з офіційною документацією HAProxy, для кластерів від 3 нод рекомендується HAProxy. Для 2–3 серверів і простих завдань достатньо nginx.

Параметр HAProxy nginx upstream
Продуктивність до 100k req/s до 50k req/s
Health checks HTTP, TCP, script тільки HTTP
Статистика детальна (статуси, черги) базова (up/down)
Складність конфігурації середня низька

Порівняння алгоритмів балансування для Бітрікс

Алгоритм Опис Особливості для Бітрікс
roundrobin Запити по колу Рівномірно розподіляє запити різної тривалості — найкращий вибір
leastconn На сервер з найменшою кількістю з'єднань Поганий при різному часі виконання: одна нода може завантажитись важким імпортом
first На перший доступний сервер Використовується для виділених бекендів (push, admin)

Конфігурація HAProxy для Бітрікс

# /etc/haproxy/haproxy.cfg
global
    maxconn 50000
    log /dev/log local0
    tune.ssl.default-dh-param 2048

defaults
    mode http
    timeout connect 5s
    timeout client 60s
    timeout server 60s
    option http-server-close
    option forwardfor
    log global

# Фронтенд: приймаємо HTTPS
frontend bitrix_https
    bind *:443 ssl crt /etc/ssl/site.pem
    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Real-IP %[src]

    # Адміністративний розділ — на виділений бекенд
    acl is_admin path_beg /bitrix/admin
    use_backend bitrix_admin if is_admin

    # Push-сервер — окремий бекенд з довгими з'єднаннями
    acl is_push path_beg /bitrix/pub
    use_backend bitrix_push if is_push

    default_backend bitrix_web

# Основний бекенд — веб-ноди
backend bitrix_web
    balance leastconn
    option httpchk GET /bitrix/admin/cluster_check.php
    http-check expect status 200
    server web-01 10.0.0.11:80 check inter 5s rise 2 fall 3 weight 100
    server web-02 10.0.0.12:80 check inter 5s rise 2 fall 3 weight 100
    server web-03 10.0.0.13:80 check inter 5s rise 2 fall 3 weight 100

# Адміністративна панель — тільки на мастер-ноду
backend bitrix_admin
    server web-01 10.0.0.11:80 check

# Push-сервер
backend bitrix_push
    timeout server 3600s
    server push-01 10.0.0.14:8893 check

balance roundrobin — запити направляються по колу. Для Бітрікс з різним часом відповіді це краще за leastconn. Параметри rise 2 fall 3 — нода вважається живою після двох успішних перевірок, мертвою — після трьох невдалих.

nginx upstream як альтернатива

upstream bitrix_backends {
    round_robin;
    server 10.0.0.11:80 weight=1 max_fails=3 fail_timeout=30s;
    server 10.0.0.12:80 weight=1 max_fails=3 fail_timeout=30s;
    keepalive 32;
}

server {
    listen 443 ssl;
    location / {
        proxy_pass http://bitrix_backends;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 256m;
        proxy_read_timeout 120s;
    }
}

keepalive 32 — постійні з'єднання між nginx і бекендами. Без keepalive кожен запит відкриває нове TCP-з'єднання до PHP-FPM — зайві накладні витрати.

Як налаштувати health checks для Бітрікс?

Health check — HTTP-запит, що перевіряє чи живий бекенд. Для Бітрікс використовуємо скрипт /bitrix/admin/cluster_check.php, який повертає 200. HAProxy налаштовується так:

option httpchk GET /bitrix/admin/cluster_check.php http-check expect status 200 

Інтервал перевірки — кожні 5 секунд. Після двох успішних перевірок нода відновлюється, після трьох невдалих — уходить в DOWN. Рекомендуємо також перевіряти порти PHP-FPM та MySQL для повного моніторингу.

Проксіювання завантаження файлів

Завантаження великих файлів (прайси 100+ МБ, відео) через балансувальник потребує налаштування:

proxy_request_buffering off; proxy_max_temp_file_size 0; client_max_body_size 512m; proxy_read_timeout 600s; 

Без proxy_request_buffering off nginx буферизує весь файл, що завантажується, в пам'яті — при 512 МБ файлі та 10 паралельних завантаженнях це 5 ГБ RAM на буфери.

Передача реального IP у Бітрікс

Бітрікс використовує IP користувача для сесій та обмежень. Без налаштування він бачить IP балансувальника. У /bitrix/php_interface/init.php додаємо:

if (!empty($_SERVER['HTTP_X_REAL_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; } 

HAProxy передає реальний IP через X-Forwarded-For, nginx — через X-Real-IP. Синхронізуємо налаштування балансувальника та init.php.

Схема типового кластера
  • Фронтенд HAProxy (2 екземпляри з keepalived)
  • 2–5 веб-нод з mod_xsendfile
  • 1 виділена нода для push-сервера
  • 1 мастер-нода для адмінки та завдань агентів
  • 1 сервер БД (або кластер MySQL)

Що входить у налаштування балансування

  • Аудит поточної архітектури та навантаження
  • Вибір балансувальника та алгоритму під завдання
  • Конфігурація серверів (HAProxy/nginx, health checks, keepalived)
  • Налаштування передачі реального IP та сесій
  • Оптимізація завантаження файлів та буферизації
  • Інтеграція з push-сервером та адмінкою
  • Тестування під піковим навантаженням
  • Документація схеми та параметрів
  • Навчання команди адмініструванню
  • Підтримка 30 днів після запуску

Наш досвід та гарантії

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

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    837
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    928
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    865
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1223