Налаштування балансування навантаження для 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С-Бітрікс

Два сервери 1С-Бітрікс без балансувальника — не кластер, а два незалежних сайти. Потрібна єдина точка входу, яка розподіляє запити, перевіряє здоров'я бекендів і прибирає недоступні ноди з ротації без ручного втручання. Для 1С-Бітрікс правильне налаштування балансувальника включає особливу обробку завантаження файлів, адміністративного розділу та веб-сокетів push-сервера.

HAProxy vs nginx upstream

HAProxy — спеціалізований балансувальник, працює на L4 і L7. Гнучка маршрутизація, детальна статистика, health checks з кастомними HTTP-перевірками. Кращий для production.

nginx upstream — простіший у налаштуванні, інтегрований з рештою конфігурації nginx. Достатній для 2–3 нод без складної логіки маршрутизації.

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

# /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 leastconn — запити направляються на сервер з найменшою кількістю активних з'єднань. Для 1С-Бітрікс переважніший roundrobin: запити неоднорідні за часом виконання — важкий імпорт на одній ноді не повинен блокувати розподіл.

rise 2 fall 3 — нода вважається живою після 2 успішних перевірок, мертвою — після 3 невдалих. Баланс між швидким виявленням відмови та хибними спрацьовуваннями.

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

upstream bitrix_backends {
    least_conn;
    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 — накладні витрати на handshake.

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

Завантаження великих файлів (прайси 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 лише на буфери.

1С-Бітрікс: передача реального IP

1С-Бітрікс використовує IP користувача для сесій і обмежень. Без налаштування він бачить IP балансувальника. У php.ini або в конфігурації:

// /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.