Мониторинг серверов и меш-сеть
Как CreateYourVPN следит за здоровьем серверов: самопроверки, меш-сеть взаимных проверок между серверами и автоматическое скрытие недоступных серверов от пользователей.
Сервер может подвести в самый неожиданный момент: упал сервис, хостер перезагрузил машину, а бывает и хуже — сервер заблокировали в стране пользователя, и он перестал открываться, хотя формально работает. Ваши пользователи не должны это замечать. В этом уроке — как CreateYourVPN следит за серверами и что происходит, когда с одним из них беда.
Два уровня проверок
Система смотрит на каждый сервер с двух сторон.
1. Сервер проверяет сам себя
Каждый сервер раз в несколько минут отчитывается: жив ли приёмник трафика на порту 443 и работает ли VPN-сервис. Вместе с отчётом приходят и метрики из урока 3. Если отчёт говорит «мне плохо» — сервер получает статус «Сервер недоступен». Если отчёты вовсе перестали приходить — статус «Нет данных от сервера»: возможно, машина выключена или потеряла сеть.
2. Серверы «простукивают» друг друга
Самопроверка не поймает главный коварный случай: сервер сам считает себя здоровым, но снаружи до него не достучаться — например, его IP заблокировали. Для этого все ваши серверы объединены в меш-сеть взаимных проверок: каждый сервер регулярно пробует достучаться до каждого соседа — так же, как это делало бы приложение пользователя.
Дальше работает «голосование»:
- Один неудачный стук ничего не значит — мало ли, сеть мигнула. Считаются только устойчивые серии неудач.
- Сервер помечается как «Недоступен из ваших серверов», только когда до него стабильно не могут достучаться несколько независимых серверов — единичное мнение не приговор.
- Есть и защита от «сумасшедшего свидетеля»: если какой-то сервер вдруг заявляет, что не видит половину соседей, — скорее всего, проблемы у него самого, и его голоса не учитываются.
Именно эта схема ловит блокировки: если сервер заблокировали в стране, где стоят другие ваши серверы, — соседи из этой страны быстро перестанут до него достукиваться, наберётся кворум, и система пометит сервер недоступным. А серверы из других стран, где блокировки нет, продолжат его видеть — и по разнице мнений картина станет очевидной.
Когда проверка соединения между серверами не проходит
Голосование ловит блокировку, когда в закрывшей доступ стране у вас несколько серверов. Но чаще там стоит ровно один: он перестаёт видеть зарубежный сервер, а зарубежные прекрасно видят друг друга. Кворум для такой картины не наберётся никогда.
Мы это всё равно замечаем, но честно говорим, чего не знаем. Из «A не видит B» нельзя понять, чей адрес заблокирован: это одно и то же утверждение о пути между ними, и со стороны обе картины выглядят одинаково. Поэтому:
- По умолчанию мы никого не обвиняем. Помечаем как «Недоступен» точки входа той стороны, до которой проверка не доходит, а если она не проходит в обе стороны — точки входа обоих серверов. В причине названы оба сервера (её видно, если открыть точку входа в карточке сервера). Решать, какой из серверов менять, придётся вам: чаще всего это тот, до которого не достукиваются клиенты.
- Ни один из них не скрывается. Спрятать пару значило бы вынести из подписки заодно исправный сервер. Клиенты продолжают получать точки входа обоих серверов, а балансировка просто предпочтёт им здоровые, если такие есть в маршруте.
Проверяющий сервер
Чтобы получать точный ответ вместо «кто-то из двух», отметьте сервер, чьей проверке доверяете: карточка сервера → «Использовать этот сервер для проверки остальных на блокировки».
Дальше правило простое: если проверяющий перестал видеть обычный сервер, заблокированным считается адрес обычного, мы пишем вам письмо с советом сменить IP и перестаём выдавать точки входа этого сервера клиентам, пока в маршруте есть альтернатива. Обратное — обычный не видит проверяющего — не значит ничего.
Проверяющим лучше всего назначить сервер в той же стране, где сидят ваши клиенты: его взгляд ближе всего к тому, что видит приложение пользователя. Проверяющих может быть несколько. А вот если отметить все серверы, направление снова пропадёт: судить будет некому, и пары вернутся к поведению по умолчанию. И учтите: сам проверяющий под этот сигнал уже не попадает — мы смотрим на флот его глазами, а не наоборот.
Что происходит с проблемным сервером
Статусы напрямую влияют на балансировку: серверы со статусами «Сервер недоступен» и «Недоступен из ваших серверов» исключаются из выдачи — новые подключения на них не направляются, и в подписках пользователей их место занимают здоровые серверы из тех же маршрутов. Исключение — разорванная пара без проверяющего: там точки входа помечаются, но из выдачи не убирается ни одна.
При этом система осторожна — она построена по принципу «не навреди»:
- Маршрут никогда не остаётся пустым. Если «плохими» оказались все серверы маршрута, система вернёт пользователям лучший из имеющихся вариантов, а не пустой список — иначе приложения решили бы, что серверов больше нет, и стёрли их.
- Тишина — не приговор. Статус «Нет данных от сервера» сам по себе сервер из выдачи не убирает: без свежих данных система не делает резких движений.
Всё лечится само
Ни один из статусов не «прилипает» навсегда — состояние выводится заново из свежих данных:
- сервер снова прислал здоровый отчёт → статус «Сервер недоступен» снимается;
- соседи снова начали достукиваться → серия неудач обнуляется, и метка «Недоступен из ваших серверов» уходит;
- возобновились отчёты → «Нет данных от сервера» исчезает.
Починили сервер (или его разблокировали) — он сам вернулся в строй. Никаких ручных «включить обратно».
Где это видно в панели
Откройте карточку любого пользователя → список его серверов: рядом с каждым сервером горит точка состояния, а при проблеме — подпись с причиной: «Сервер недоступен», «Недоступен из ваших серверов» (с указанием, сколько ваших серверов его не видят) или «Нет данных от сервера». Косвенные признаки видны и на карточках серверов: бейдж «устарело» на метриках и «Нет данных — агент не отвечает».
Меш-проверки предельно экономные: это крошечные проверочные касания с жёстким суточным лимитом на объём — на трафик и производительность серверов они не влияют.
Запомнить
- Два уровня контроля: сервер проверяет себя, а соседи по меш-сети — его снаружи.
- Блокировка ловится «голосованием» нескольких серверов — без паники от единичных сбоев.
- Проблемные серверы выпадают из выдачи, пользователи молча переезжают на здоровые.
- Всё самовосстанавливается: ожил сервер — вернулся в строй автоматически.
- Если проверка соединения между парой серверов не проходит, а проверяющий не выбран, помечаются точки входа недостижимой стороны (или обоих серверов, если связь пропала в обе стороны) и не скрывается ни одна: решение за вами.
Дальше
Инфраструктура умеет чинить себя сама, но есть то, что стоит беречь отдельно, — ваша база пользователей.
Аварийный доступ: когда сеть блокирует всё
Аварийный доступ (OLCRTC) в CreateYourVPN: запасной канал под видом видеозвонка для сетей с белыми списками — во что он обходится серверам, что включается само вместе с Pro и что заранее рассказать пользователям.
Резервные копии: сохранить и восстановить пользователей
Зачем бэкапить базу пользователей, как настроить автоматические копии в Google Drive или S3 и как восстановиться из копии.