Адміністрування кластерів Elasticsearch і OpenSearch

Кластер пошуку та аналітики перестає витримувати навантаження, коли ним ніхто системно не займається. Ми адмініструємо Elasticsearch і OpenSearch під ключ: стежимо за станом, плануємо ресурси та вибудовуємо відмовостійку конфігурацію, щоб пікові години не перетворювалися на втрату даних.
Часті запитання

Адміністрування Elasticsearch: де ламається кластер

Кластер Elasticsearch ламається не одразу: деградація пошукового кластера відбувається поступово, і перший помітний симптом — повільні запити на піку.

Один важкий запит або невдала схема індексу перевантажує вузол, черга завдань зростає, і затримки поширюються на всіх споживачів — від каталогу товарів до аналітичних звітів.

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

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

Нарешті, втрата даних під час збою однієї машини. Якщо репліки потрапляють у ту саму зону відмови, а знімки в об'єктне сховище не створюються або не перевіряються відновленням, відмова диска перетворюється на втрату індексу, а не на планове перемикання.

Адміністрування Elasticsearch — це робота з режимами відмови, а не одноразове налаштування параметрів: спостережуваність, правила розміщення, обмеження на важкі запити, перевірені знімки. Нижче розбираємо, як це закривається.

Що дає адміністрування Elasticsearch на практиці

Супровід починається зі зняття реального профілю запитів: які вибірки домінують, де опис полів змушує рушій перебирати документи повністю, як розподілені шарди та репліки по вузлах.

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

Другий вимірюваний результат — вікно відновлення кластера. Реплікація, регулярні знімки в об'єктне сховище та заздалегідь описаний порядок підняття вузлів скорочують його з годин до десятків хвилин.

Резервування даних при цьому перестає бути формальністю: знімок, який жодного разу не розгортали, не вважається резервною копією, тому відновлення ми проганяємо на окремому контурі за розкладом.

Далі зникає цілий клас відмов, а не окремі збої.

Втрата кворуму керівних вузлів, переповнення диска, лавина дрібних шардів від щоденних індексів, розсинхронізація між вузлами при мережевих збоях — усе це закривається налаштуваннями та оповіщеннями на випередження, а не розбором наслідків за фактом.

Навантажувальне тестування пошуку відбувається до виведення змін у роботу: ми відтворюємо піковий профіль запитів і перевіряємо, як поводяться відгук, черги та відмови при вимкненні одного вузла.

Так стає видно, де запас міцності закінчується, — і це видно до того, як навантаження отримає реальна система.

Режими розгортання: власний кластер, хмара чи гібрид

Вибір майданчика вирішує, хто відповідає за відмову і як швидко вона усувається.

Кластер Elasticsearch чутливий до затримки між вузлами: кворум майстер-вузлів і реплікація шардів потребують передбачуваної мережі, а поведінка при втраті зони залежить від того, чи рознесені ролі й копії даних по різних зонах доступності.

Далі розходяться зони відповідальності та вимоги до інфраструктури. У власному контурі ми закриваємо все: планування ємності, оновлення, політики життєвого циклу індексів, знімки в об'єктне сховище, відновлення після втрати вузла.

Керований хмарний пошук знімає частину рутини, але обмежує доступ до налаштувань і способів відкату. У вартість супроводу входить не ліцензія, а час інженерів, запас ємності та чергування.

Варіант Коли підходить Обмеження
Власний пошуковий кластер Дані не виходять за периметр, навантаження передбачуване, потрібен контроль над топологією вузлів Ємність, оновлення та чергування повністю на вашій команді
Керований хмарний пошук Потрібен швидкий старт і мінімум операційної рутини Менше контролю над версією, параметрами та розміщенням даних
Гібридна схема розміщення Гарячі дані поруч із застосунком, архів і аналітика — у хмарі Два контури: узгодження політик і єдина спостережуваність потребують окремої роботи

Схема розміщення вибирається не за смаком, а за профілем навантаження: частка читання й запису, швидкість зростання індексів, глибина зберігання та вимоги до відновлення. Гібрид окупається, коли контури узгоджені — інакше видача пошуку починає розходитися між майданчиками.

Як ми впроваджуємо кластер: етапи інженерної роботи

Роботи йдуть від фіксації поточного стану до передачі в експлуатацію: без цього не можна ні оцінити ризики, ні показати, що зміни щось покращили. Порядок однаковий для нового кластера й для доопрацювання працюючого — змінюється лише обсяг і глибина кожного кроку.

  1. Аудит кластера. Знімаємо фактичний стан: розкладку індексів по вузлах, розміри шардів, стан реплік, налаштування пам'яті та поведінку при втраті вузла. На виході — перелік вузьких місць із прив'язкою до конкретних індексів, а не загальний список рекомендацій.
  2. Схема шардування. Рахуємо кількість шардів під цільовий обсяг і профіль запитів, налаштовуємо шаблони індексів і політики життєвого циклу, щоб кількість шардів не зростала лінійно разом із числом індексів.
  3. Налаштування реплікації та розподілу. Задаємо рівні реплік, розкладку по зонах доступності та пріоритети відновлення — так, щоб втрата однієї зони не зупиняла запис.
  4. Перевірка на відмову. Виводимо вузли по одному й зупиняємо вузол із даними: заміряємо час відновлення, стежимо за перерозподілом шардів і відсутністю втрати даних.
  5. Навантажувальна перевірка. Проганяємо типові запити й агрегації в обсязі пікового дня, дивимося затримки, роботу кешів і черг, за потреби правимо параметри.
  6. Передача в експлуатацію. Віддаємо карту кластера, регламенти обслуговування й оновлень, порядок резервного копіювання та відновлення, пороги оповіщень.

Кожен етап закінчується артефактом, який можна перевірити, — тому приймання йде за фактами, а не за відчуттями.

Політики доступу, схеми індексів і документація

Кластер Elasticsearch або OpenSearch живе роками: підключаються нові сервіси, змінюються команди, і без зафіксованих правил кожна зміна тримається на пам'яті одного інженера.

Тому передаємо набір артефактів у репозиторії — їх можна показати аудитору, віддати новому адміністратору або застосувати при відновленні з нуля.

  • Ролі та права доступу — матриця «сервіс → роль → індекси → операції»: застосунок пише лише у свої індекси, аналітика читає через окрему роль, адміністративні права видані поіменно.
  • Схема індексів — шаблони й описи полів, аліаси для читання й запису, розбиття за часом; новий індекс створюється за шаблоном, тому структура не розходиться між середовищами.
  • Політики життєвого циклу — коли індекс переїжджає на дешевший рівень зберігання і коли видаляється; правило на останні періоди замість ручного чищення.
  • Політики зберігання даних — термін для кожної групи індексів, що йде в архів, що видаляється безповоротно; зафіксовано в конфігурації, а не в листуванні.
  • Регламент резервного копіювання — що знімаємо, з якою періодичністю, куди складаємо, як і коли перевіряємо відновлення, хто відповідає за збій.
  • Регламенти обслуговування й відновлення — планові роботи, порядок правок налаштувань, оновлення на актуальну гілку, сценарії від втрати вузла до перестворення кластера.
  • Документація по кластеру — схема вузлів і ролей, точки входу, дашборди з оповіщеннями, відповідальні та журнал змін.

Кожен пункт узгоджуємо на старті й оновлюємо разом із кластером — документ залишається робочим, а не пам'ятником.

Кейс: кластер перестав втрачати дані в пікові години

Що було

Кластер на Elasticsearch тримав пошук по каталогу на кілька мільйонів документів, піки припадали на вечірні години та дні розпродажів.

На піку частина запитів відвалювалася за часом очікування, затримка відгуку на 99-му перцентилі зростала з часток секунди до кількох секунд, а при відмові однієї ноди кластер ішов у перерозподіл шардів і повертався до норми десятки хвилин — увесь цей час пошук віддавав неповну видачу.

Що зробили

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

Відновлення переробили: репліки піднімаються до приймання трафіку, знімки індексів лежать в окремому сховищі, тому відкат не потребує повної переіндексації.

Що стало

Частка запитів, що відвалилися, на піку — частки відсотка замість кількох. Затримка на 99-му перцентилі тримається в межах часток секунди, відновлення після відмови ноди займає одиниці хвилин замість десятків.

Результат впровадження: кластер проходить сезонні піки без ручного втручання, а алерти приходять на відхилення від норми, а не після збою.

Що робити, якщо кластер уже розгорнуто і ним ніхто не займається

Кластер, який розгорнули під задачу й залишили, — найчастіший випадок при введенні в супровід. Система працює, пошук відповідає, але документації немає, чергового немає, а останні правки вносили точково й уже забули які.

Перше правило тут — не змінювати нічого, поки не зібрано фактичну картину: будь-яка дія наосліп б'є по живому сервісу.

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

Частина цього видна прямо зі стану кластера, частина відновлюється з журналів запитів і опитування застосунків — за фактом, а не за чиїмись спогадами.

Далі — карта ризиків, і в успадкованого кластера вона передбачувана: знімки вимкнені або ніколи не перевірялися на відновлення, у частини індексів немає реплік, старі дані ніхто не чистить і місце наближається до межі, доступ видано широко й без рев'ю.

Кожен пункт закривається окремо, але порядок обов'язковий: спочатку те, що захищає від втрати даних, потім стійкість, і лише потім зручність.

План оздоровлення йде від безпечного до ризикованого. Налаштовуємо й перевіряємо відновлення зі знімків, вмикаємо спостереження за станом кластера, фіксуємо схему індексів і правила зберігання, після — обслуговування: перерозподіл шардів, чищення, розмежування доступу.

Зміни вносимо по одному, з планом відкату й поза піковим навантаженням, інакше не зрозуміємо, що саме зламалося.

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

Технічні сумніви: відповідаємо по суті

Живий кластер рідко обговорюють у вакуумі: питання стосуються конкретних ризиків — оновлення на працюючій системі, розмежування доступів, відкату й обсягу робіт після передачі. Нижче — сумніви, які виринають найчастіше.

Оновлення пройде без зупинки сервісу?

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

Застосунки продовжують писати; на перерозподілі шардів можливі короткі сплески затримки, тому вікно вибираємо в години низького навантаження.

Як розмежовуються права доступу?

Ролі описуємо на рівнях кластера, індексу й документа; права на зміну налаштувань, видалення індексів і керування снапшотами застосункам не видаємо. Облікові записи моніторингу та резервного копіювання живуть окремо, ключі ротуються.

Доступи передаються конфігурацією, а не ручними правками в інтерфейсі — їх можна перевірити й відкотити.

Ми зможемо обслуговувати кластер самі після передачі?

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

Далі режим обираєте ви — повний супровід, чергування за критичними інцидентами або точкові консультації.

Обговоримо задачу: повернемося з оцінкою та планом

Щоб оцінка та план робіт спиралися на факти, а не на здогадки, до першої розмови достатньо надіслати вихідні дані по кластеру: схему топології з ролями вузлів, кількість індексів та їхній приблизний обсяг, використовувану гілку Elasticsearch або OpenSearch, пікові навантаження й робочі вікна, склад алертів і хронологію останніх інцидентів.

Якщо доступи видати не можна — вистачить вивантаження налаштувань шардування, логів і конфігурацій: цього достатньо, щоб побачити, де навантаження розходиться з ємністю.

Сама розмова триває 40–60 хвилин і закінчується не презентацією, а конкретикою:

  • розбір вузьких місць: де накопичується черга запитів, чому зростає кількість нерозподілених шардів, які індекси тримають диск;
  • порядок старту робіт: що робимо першого тижня, що змінюється без зупинки сервісу, а що потребує вікна;
  • карта ризиків: які зміни торкаються живих даних і як виглядає відкат;
  • регламенти супроводу: резервне копіювання та перевірка відновлення, пороги алертів, чергування за інцидентами;
  • критерії приймання: які метрики вважаємо цільовими і як вимірюємо їх до та після;
  • передача в супровід команди — з документацією та навчанням ваших інженерів, якщо експлуатацію хочете залишити в себе.

За підсумками ви отримуєте письмову оцінку та план робіт: етапи, залежності, що потрібно з вашого боку. Далі — узгодження строків і старт.

Опишіть задачу в двох-трьох абзацах або надішліть те, що вже є по кластеру, — повернемося з оцінкою та планом.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141