Налаштування кластера Elasticsearch для 1С-Бітрікс під ключ

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

Налаштування кластера Elasticsearch для 1С-Бітрікс під ключ

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

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

Чому три ноди — мінімум?

Дві ноди — ризик split-brain: при розриві мережі кожна вважає себе майстром, дані розходяться. Три ноди дають кворум: при виході однієї решта дві зберігають більшість і продовжують роботу без втрати даних. Це стандартна рекомендація Elasticsearch — Вікіпедія. Кластер із трьох нод надійніший за одиночну в 3 рази за відмовостійкістю і в 2 рази за продуктивністю.

Нода Роль Пам'ять Призначення
es-01 master, data 16 GB Майстер + дані
es-02 master, data 16 GB Резервний майстер + дані
es-03 data, ingest 16 GB Дані + передобробка

Для великих інсталяцій (>50 млн документів) виділяють окремі dedicated master-ноди без ролі data — вони не беруть участі в пошуку та індексації, тільки керують кластером.

Як налаштувати шардування для каталогу 1С-Бітрікс?

За замовчуванням Elasticsearch створює 1 primary shard на індекс. Для каталогу з 1+ млн документів цього мало. Налаштовуємо потрібну кількість шардів і реплік:

PUT /bitrix_catalog
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "refresh_interval": "5s"
  }
}

number_of_replicas: 1 означає, що кожен шард копіюється на другу ноду. При виході однієї ноди репліки промотуються в primary автоматично, пошук продовжується без переривання.

refresh_interval: 5s замість дефолтної 1s знижує навантаження на індексацію при масовому оновленні з 1С. Нові документи з'являться в пошуку із затримкою до 5 секунд — для більшості каталогів прийнятно.

Балансування запитів від Бітрікс

Бітрікс підключається до Elasticsearch через один host. Щоб запити розподілялися по всіх нодах, перед кластером ставимо балансувальник:

Варіант 1 — nginx upstream:

upstream elasticsearch {
    least_conn;
    server 10.0.0.11:9200;
    server 10.0.0.12:9200;
    server 10.0.0.13:9200;
}

server {
    listen 9201;
    location / {
        proxy_pass http://elasticsearch;
    }
}

Бітрікс підключається до localhost:9201. Nginx розподіляє запити методом найменших з'єднань.

Варіант 2 — координуюча нода (для навантажень 1000+ rps): окрема нода з node.roles: [] приймає всі HTTP-запити, розсилає підзапити до data-нод, агрегує результати. Не зберігає дані, не бере участі у виборах майстра.

Як моніторити стан кластера?

# Статус кластера (green/yellow/red)
curl -s http://10.0.0.11:9200/_cluster/health?pretty
# Розподіл шардів по нодах
curl -s http://10.0.0.11:9200/_cat/shards?v
# Навантаження на ноди
curl -s http://10.0.0.11:9200/_cat/nodes?v&h=name,heap.percent,cpu,load_1m

Статус yellow — частина реплік не розміщена (при одній ноді це норма). Статус red — втрачені primary shards, частина даних недоступна, потребує негайного втручання. Докладніше про налаштування пошукового модуля в Бітрікс читайте в офіційній документації.

Типові помилки та як їх уникнути

На одному проєкті з каталогом 2 млн товарів при індексації з 1С кожні 30 секунд пошук вимикався на 20 секунд — через refresh_interval: 1s. Після збільшення до 5s індексація перестала блокувати пошук, а швидкість появи нових товарів залишилася прийнятною. Також часто забувають налаштувати indices.memory.index_buffer_size — при масовому завантаженні документів може виникнути OutOfMemoryError. Рекомендуємо ставити 10-20% від пам'яті ноди.

Параметр Значення Опис
refresh_interval 5-10s Знижує навантаження при масовій індексації
number_of_shards 3-5 Розподіл даних по нодах
number_of_replicas 1-2 Відмовостійкість

Процес нашої роботи

  1. Аудит поточної інфраструктури — оцінюємо навантаження, кількість документів, поточну конфігурацію.
  2. Проєктування кластера — вибираємо кількість нод, розподіл ролей, налаштування безпеки.
  3. Розгортання та налаштування — встановлення Elasticsearch, конфігурація elasticsearch.yml, генерація сертифікатів.
  4. Інтеграція з Бітрікс — налаштування модуля пошуку, прив'язка до кластера через балансувальник.
  5. Тестування та моніторинг — перевірка відмовостійкості, налаштування сповіщень.
  6. Документація та навчання — передача схеми, інструкцій, навчання команди.

Що входить в роботу

  • Налаштування кластера з 3 нод (або іншої конфігурації)
  • Конфігурація безпеки (xpack, SSL)
  • Встановлення та налаштування балансувальника (nginx або координуюча нода)
  • Налаштування шардування під розмір каталогу
  • Моніторинг та алертинг
  • Документація та передача знань

Терміни

Розгортання трьохнодового кластера з налаштуванням безпеки, балансувальника та моніторингу — 2–4 дні залежно від наявності готової інфраструктури. Оцінимо ваш проєкт — напишіть нам.

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

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

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

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