Налаштування автоматичного масштабування (VM Scale Sets) Azure

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

Автоматичне масштабування Azure: що ламається без нього

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

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

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

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

Зворотна крайність не дешевша: тримати запас під максимальний пік цілодобово означає платити за простій.

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

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

Що змінюється в роботі сервісу: швидкість реакції та стійкість

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

Що перевіряємо Орієнтир Як вимірюємо
Час реакції на навантаження нові екземпляри в роботі за лічені хвилини позначка спрацьовування правила проти позначки готовності вузла
Частка відмов на піку не зростає вище фонової відношення помилкових відповідей до загальної кількості запитів у вікні піку
Час відновлення після збою повернення до норми за один-два цикли перевірки журнал перевірок працездатності та історія заміни вузлів
Використання ресурсів поза піками базовий рівень замість постійного резерву під максимум середнє завантаження за добу й окремо нічні вікна

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

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

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

Після запуску цей самий список стає звітом із замірами до й після — за ним видно, де сервіс перестав упиратися в стелю, а де ще є запас.

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

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

Вибір тут не «або-або» — важливо зрозуміти, який режим закриває основний сценарій навантаження, а які страхують його на краях.

Чим режими відрізняються на практиці

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

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

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

Порядок впровадження: від збору метрик до передачі регламентів

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

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

Набори правил, схеми інфраструктури та регламенти експлуатації

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

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

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

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

Кейс: як зросла стійкість сервісу за пікових навантажень

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

Як було до змін

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

У такі вікна сервіс віддавав 5–7% помилок, а черга запитів зростала швидше, ніж її встигали розбирати. Планові роботи теж ішли через зупинку: у сумі близько двох годин недоступності на місяць і нічні чергування інженерів.

Що змінили й що отримали

Сервіс перевели на Azure Virtual Machine Scale Sets з автомасштабуванням за трьома сигналами: завантаження процесора, довжина черги запитів і кількість активних з'єднань.

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

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

Реакція на пік скоротилася до 2–3 хвилин замість 40–60, частка помилок у пікові вікна впала нижче 0,5%, простій — із двох годин на місяць до поодиноких хвилин за квартал.

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

Що робити, якщо частина сервісів уже працює на своїх серверах?

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

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

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

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

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

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

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

Технічні сумніви: метрики, прогрів і відкат конфігурацій

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

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

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

Метрика приходить із затримкою — сайт встигне впасти?

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

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

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

Що відбувається з активними з'єднаннями, коли екземпляр знімається?

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

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

Як відкотити невдале правило, не розбираючи контур вручну?

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

Обговоримо задачу й повернемося з планом впровадження

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

Що допомагає отримати точну оцінку й склад робіт:

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

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

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

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

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