Налаштування Hetzner Cloud Load Balancer під ключ за 1 день

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

Налаштування Hetzner Cloud Load Balancer: де рветься відмовостійкість

Типова картина: один віртуальний сервер приймає весь трафік, домен вказує прямо на нього, а другий вузол якщо й існує, то простоює.

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

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

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

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

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

Вимірюваний ефект: час відновлення, простої, відмовостійкість

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

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

Що варто звірити у звіті після здачі:

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

Режими балансування та перевірки стану: що і коли підходить

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

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

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

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

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

Варіант Коли підходить Обмеження
За з'єднаннями Довгі сесії, бази даних, свої обробники шифрування Не бачить шлях і заголовки, немає маршрутизації за адресами
За запитами Веб-сервіси та API, правила за шляхами та заголовками Вище навантаження на балансувальник, залежить від коректних заголовків клієнта
Перед кластером Єдина точка входу, прийом шифрованого трафіку ззовні Публічна адреса вимагає обмежень за частотою та списками доступу
Всередині мережі Внутрішні сервіси, розділення шарів Немає прямого доступу ззовні, потрібен зовнішній вхід або шлюз

Пороги перевірок задають поведінку кластера: занадто агресивні дають хибні виключення і «блимаючу» ротацію, занадто м'які затягують виведення впавшого вузла.

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

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

Порядок впровадження: від аудиту схеми до передачі в експлуатацію

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

Тому спочатку знімаємо фактичну картину, потім проектуємо контур і тільки після цього змінюємо те, що обслуговує користувачів.

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

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

Конфігурації, правила перевірок та документація на передачу

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

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

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

Кейс: прибрали просідання при відмові вузла та ручні перемикання

Як було до робіт

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

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

Черговий дізнавався про проблему зі скарг, піднімав заміну і вручну правив записи — 6-8 операцій за інцидент і до 20 хвилин просідання під навантаженням.

Що змінювали

Точку входу перенесли з DNS на Hetzner Cloud Load Balancer, вузли оголосили в цільову групу і налаштували перевірки здоров'я за прикладним обробником, а не за відкритим портом.

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

Що стало

  • Перемикання при відмові вузла — 12-15 секунд замість 20 хвилин і без участі людини.
  • Частка успішних запитів у момент інциденту — 99,9% проти 96%; обривів користувацьких сесій на перемиканні не залишилося.
  • Ручних операцій чергового на інцидент — нуль замість 6-8: алерт приходить, коли ротація вже виконана.

Хмарний балансувальник або свій сервер з балансуванням: що вибрати

Вибір зводиться до одного питання: хто тримає шар балансування в робочому стані — ми чи ви.

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

Обмежень два. Політика маршрутизації фіксована провайдером — своїх правил за заголовками або складної логіки відмов там не виразити.

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

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

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

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

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

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

Технічні сумніви: перевірки, ліміти, переїзд без простою

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

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

Як налаштовується перевірка живості вузла?

Шлях перевірки, інтервал опитування, таймаут відповіді та кількість допустимих невдач підряд — це параметри, а не константи. Балансувальник уводить вузол з ротації після серії невдалих відповідей і повертає, коли перевірка знову проходить.

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

Що з лімітами за з'єднаннями?

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

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

Чи можна переїхати без простою?

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

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

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

  • Вихідні дані. Список сервісів за балансувальником, їх порти та протоколи, домени, вимоги до TLS, очікуване та пікове навантаження — цього достатньо, щоб зрозуміти обсяг.
  • Доступи для розбору. Читання проекту в хмарі або експорт конфігурації: правила міжмережевого екрана, приватні мережі, цільові групи, параметри перевірок доступності.
  • Розбір поточної схеми. Показуємо, як трафік іде зараз, де точка відмови, чому не можна підняти другу копію сервісу без ручної правки адрес.
  • Перелік ризиків. Окремим списком: обрив з'єднань при деплої, відсутність відкату, відкриті назовні порти, терміни життя сертифікатів, один вузол додатка.
  • План впровадження. За кроками: мережа та цільові групи, перевірки доступності, TLS-термінація, перемикання трафіку, перевірка під навантаженням, регламент відкату.
  • Терміни робіт. Оцінка за етапами та загальний термін: базове налаштування під ключ вкладається в один робочий день, перенесення живого трафіку — окремим пунктом з вікном.
  • Що залишається у вас. Конфігурації, схема проходження трафіку, чек-лист перемикання та набір метрик, за якими видно стан балансувальника.

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

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

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