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

Маршрути та балансування навантаження

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

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

Маршрут = один рядок у застосунку користувача

Маршрут — це група інбаундів під одним іменем у підписці клієнта. Правило просте:

Один непорожній маршрут = один пункт у списку серверів користувача.

Маршрут може містити один-єдиний інбаунд — або десять із них на різних серверах. Користувач цього не бачить: він обирає «🇺🇸 США», а на який саме сервер він потрапить, вирішує балансувальник навантаження — детальніше про це нижче.

При цьому ім'я, яке бачить користувач, — це ім'я обраного інбаунда: називайте свої інбаунди зрозуміло («🇺🇸 Нью-Йорк», «🇺🇸 Даллас»), і саме це побачить користувач.

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

Створення маршруту

На сторінці кластера, у розділі "Маршрути", натисніть "Новий маршрут". У майстрі три розділи:

  1. Як клієнти бачать цей маршрут — ім'я (наприклад, 🇺🇸 США) і прапор. Це «вивіска» маршруту.
  2. Алгоритм балансування — «Найменш завантажений за трафіком» (за замовчуванням) або «Round-robin». Різницю пояснено нижче.
  3. Інбаунди в пулі — які інбаунди належать маршруту. Цей розділ необов'язковий: можна створити порожній маршрут і заповнити його пізніше перетягуванням.

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

Діаграма топології: маршрути одним поглядом

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

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

Порожні маршрути

Маршрут без жодного інбаунда малюється пунктирною рамкою і не має «труби» до розподільчого вузла — натяк, що користувачі його не бачать. Порожні маршрути зручні як заготовки: створіть «🇯🇵 Японія» заздалегідь, а коли з'явиться японський сервер — перетягніть туди інбаунд, і маршрут оживе.

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

Балансування навантаження: хто на який сервер потрапляє

Коли користувач запитує підключення, для кожного маршруту система обирає один інбаунд із пулу — наживо, на основі свіжих метрик серверів (тих самих, що з уроку 3). Є два алгоритми:

«Найменш завантажений за трафіком» (за замовчуванням)

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

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

«Round-robin»

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

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

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

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

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

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

  • Маршрут — це «вивіска» для групи інбаундів; непорожній маршрут = рядок у застосунку користувача.
  • Один інбаунд належить лише одному маршруту. Інбаунд поза будь-яким маршрутом невидимий для клієнтів.
  • Порожні маршрути — цілком нормальна заготовка: пунктирний блок, прихований від користувачів.
  • Два алгоритми: за вільною пропускною здатністю (розумний, за замовчуванням) і round-robin із вагами.
  • Балансування живе: перераховується для кожного підключення за поточними метриками.

Далі

On this page