CreateYourVPN Academy
Курс: як усе працює

Моніторинг серверів і меш-мережа

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

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

Два рівні перевірок

Система дивиться на кожен сервер із двох боків.

1. Сервер перевіряє сам себе

Кожні кілька хвилин кожен сервер звітує: чи живий слухач трафіку на порту 443, чи запущена служба VPN? Метрики з уроку 3 приходять із тим самим звітом. Якщо звіт каже «мені погано», сервер отримує статус "Сервер недоступний". Якщо звіти зовсім перестають надходити, статус стає "Немає даних від сервера" — можливо, машину вимкнено або вона втратила мережу.

2. Сервери «стукають» один одному

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

Далі вступає в дію «голосування»:

  • Один невдалий стук нічого не означає — мережа могла просто моргнути. Рахуються лише стійкі серії невдач.
  • Сервер позначається як "Недоступний з ваших серверів" лише тоді, коли кілька незалежних серверів послідовно не можуть до нього достукатися — думка одного сервера не є вироком.
  • Є й захист від «ненадійного свідка»: якщо якийсь сервер раптом заявляє, що не бачить половини своїх сусідів, проблема, найімовірніше, у ньому самому — і його голоси відкидаються.

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

Коли перевірка з'єднання між серверами не проходить

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

Ми це все одно помічаємо, але чесно кажемо, чого не знаємо. З «A не бачить B» не можна зрозуміти, чия адреса заблокована: це одне й те саме твердження про шлях між ними, і збоку обидві картини мають однаковий вигляд. Тому:

  • За замовчуванням ми нікого не звинувачуємо. Позначаємо як «Недоступний» точки входу тієї сторони, до якої перевірка не доходить, а якщо вона не проходить в обидва боки — точки входу обох серверів. У причині названі обидва сервери (її видно, якщо відкрити точку входу в картці сервера). Вирішувати, який із серверів міняти, доведеться вам: найчастіше це той, до якого не достукуються клієнти.
  • Жоден із них не приховується. Сховати пару означало б винести з підписки заодно справний сервер. Клієнти продовжують отримувати точки входу обох серверів, а балансування просто віддасть перевагу здоровим, якщо такі є в маршруті.

Перевіряючий сервер

Щоб отримувати точну відповідь замість «хтось із двох», позначте сервер, чиїй перевірці довіряєте: картка сервера → «Використовувати цей сервер для перевірки інших на блокування».

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

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

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

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

Водночас система діє обережно — вона побудована за принципом «не нашкодь»:

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

Усе загоюється саме

Жоден зі статусів не «прилипає» назавжди — стан завжди перераховується за свіжими даними:

  • сервер знову надсилає здоровий звіт → «Сервер недоступний» знімається;
  • сусіди знову починають до нього достукуватися → серія невдач скидається, і мітка «Недоступний з ваших серверів» зникає;
  • звіти відновлюються → «Немає даних від сервера» зникає.

Полагодьте сервер (або дочекайтеся зняття блокування) — і він сам повернеться в стрій. Ніякого ручного «увімкнути назад».

Де це видно в панелі

Відкрийте картку будь-якого користувача → список його серверів: біля кожного сервера є статусна крапка, а коли щось не так — підпис із причиною: «Сервер недоступний», «Недоступний з ваших серверів» (з кількістю ваших серверів, які його не бачать) або «Немає даних від сервера». Непрямі ознаки видно й на картках серверів: мітка «застаріло» на метриках і «Немає даних — агент не відповідає».

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

Головні висновки

  • Два рівні контролю: сервер перевіряє сам себе, а його сусіди по меш-мережі перевіряють його ззовні.
  • Блокування вловлюються «голосуванням» кількох серверів — жодної паніки через одноразові збої.
  • Проблемні сервери випадають із ротації; користувачі непомітно переходять на здорові.
  • Усе загоюється саме: щойно сервер оживає, він автоматично повертається в стрій.
  • Якщо перевірка з'єднання між парою серверів не проходить, а перевіряючий не вибраний, позначаються точки входу недосяжної сторони (або обох серверів, якщо зв'язок зник в обидва боки) і не приховується жодна: рішення за вами.

Далі

Інфраструктура вміє лікувати себе сама, але є дещо, що варто захищати окремо — ваша база користувачів.

On this page