Узел и его панель
У узла нет собственной воли. Он обслуживает то, что присылает его панель, пока панель продолжает до него доходить. Эта страница прослеживает жизнь узла: установка и доверие, поддержание в согласии, выключение, потеря связи, отказ от конфигурации и перенос на другой сервер.
Установка и доверие
При установке узла создаются два сертификата и один отпечаток:
- Клиентский сертификат панели передаётся узлу: либо его один раз получают по одноразовому токену установки, либо панель загружает его по SSH при автоматической установке. С этого момента узел принимает на своём управляющем порту только этот сертификат.
- Собственный серверный сертификат узла создаётся на узле. Он никогда его не покидает.
- Отпечаток. При первом подключении панель запоминает отпечаток сертификата узла и потом принимает на этом адресе только этот сертификат. Это доверие при первом использовании.
Каждая сторона подтверждает, кто она, при каждом подключении, поэтому никто другой в интернете не проходит дальше TLS-рукопожатия на управляющем порту. Обновление узла на месте сохраняет его сертификат, поэтому отпечаток по-прежнему совпадает. Установка с нуля создаёт новый сертификат, который панель отклоняет, пока узел не удалят и не добавят заново или не перенесут (см. ниже). Шаги описаны в Добавление узла.
Сессии
Панель открывает на узле сессию и передаёт её идентификатор в каждом запросе. Сессии хранятся в памяти узла, поэтому перезапущенный узел их забывает. Панель замечает это, открывает новую сессию и один раз повторяет запрос; от вас ничего не требуется.
Управляющий API узла отвечает одной панели за раз. Инструмент, который открывает на узле собственную сессию, забирает её у панели, а панель переподключается при следующем запросе.
Heartbeat
Каждые 15 секунд панель спрашивает каждый узел, как у него дела, каждый отдельно, поэтому один недоступный узел никогда не задерживает остальные. Ответ несёт:
- работает ли ядро и запустило ли оно то, что получило;
- число открытых соединений, всего и по инбаундам;
- сколько раз перезапускалось ядро и последнюю ошибку запуска;
- пропущенные элементы, как предупреждения;
- счёт соединений, отклонённых блокирующими аутбаундами.
Когда узел отвечает, что ничего не запускает, heartbeat заново отправляет всю его конфигурацию. Так узел, который перезапустился или на время потерял панель, возвращается в работу за секунды.
Выключение
Выключить узел можно на странице Узлы, а его периодический лимит трафика может выключить его сам. В обоих случаях панель:
- в последний раз собирает его счётчики;
- сразу отправляет ему пустую конфигурацию, чтобы он перестал обслуживать;
- закрывает его сессию и перестаёт к нему обращаться.
Выключенный узел не синхронизируется, не опрашивается heartbeat и не помечается подключённым, что бы ещё ни менялось в панели, пока его снова не включат. Тогда он получает полную конфигурацию. Панель при запуске один раз очищает каждый выключенный узел.
Без связи с панелью
Узел обслуживает, только пока до него доходит его панель. Когда панель недоступна или сеть между ними оборвана:
- Примерно три минуты узел продолжает обслуживать. Перезапуск или обновление панели либо короткий сбой сети никому не стоят соединения.
- Через три минуты без вестей от панели узел останавливает ядро и ничего не обслуживает.
- Когда панель снова до него доходит, первый heartbeat находит его пустым и отправляет всю конфигурацию.
Отсрочка отсчитывается по монотонным часам узла, поэтому смена его системного времени ничего не меняет. Трафик, который узел передал после последнего сбора панели, пока был без связи, теряется: узел не сохраняет счётчики через остановку.
Удаление узла в панели сразу останавливает его, если панель может до него дойти. Если не может, узел останавливается сам через три минуты после того, как последний раз слышал панель.
Конфигурация, которую отклоняет ядро
Узел проверяет конфигурацию, прежде чем отпустить работающую:
- Элемент, который не удалось построить (инбаунд, чей порт занят, плохой сертификат), пропускается, и узел обслуживает всё остальное. Пропущенный элемент — это предупреждение.
- Целая конфигурация, которую ядро не может запустить, откатывается: узел продолжает обслуживать то, что работало раньше, и сообщает, что новую не запустил.
Панель не считает откатившийся узел исправным. Она показывает узел в ошибке с причиной, а heartbeat продолжает отправлять конфигурацию, ожидая сначала 30 секунд и до 10 минут между попытками, пока она не запустится или пока вы не исправите то, что узел отклоняет.
Ошибки и предупреждения
Узел в панели может нести два разных вида сообщений:
| Ошибка | Предупреждения | |
|---|---|---|
| Значит | узел не работает: недоступен, отклоняет конфигурацию или не запущен | узел работает, но части элементов нет в том, что он запускает |
| Примеры | соединение отклонено, отпечаток сертификата не совпадает, конфигурация не запустилась | инбаунд пропущен при запуске, изменение, которое не принял один элемент, пользователи пропущены из-за отсутствия учётных данных |
| Исчезает | при следующем удачном heartbeat | когда следующая синхронизация применит элементы |
Предупреждения хранятся в памяти панели. После перезапуска панели они возвращаются со следующей синхронизацией, которая их обнаружит.
Перенос узла на другой сервер
С машиной, на которой работает узел, связаны три вещи: отпечаток его сертификата, ключ хоста SSH, который запомнила панель, и то, что панель знает о способе установки узла. Если изменить только адрес, все три перейдут на новую машину, где отпечаток будет отклонять каждое подключение.
Перенести на другой сервер в меню узла очищает все три. Затем вы устанавливаете узел на новый сервер как новый, и первое подключение запоминает новый сертификат. Пользователи, инбаунды и всё остальное, что относится к узлу, остаются как есть, потому что хранятся в панели.
Связанные страницы
- Изменения без перезапусков: как изменение доходит до работающего узла.
- Модель безопасности: взаимный TLS и закрепление отпечатков в общей модели безопасности.
- Узлы: список узлов, их состояние и меню.
- Решение проблем: узел, который показан отключённым.
