Перейти к содержанию

KV-кластер (etcd)

·2 минуты·
KV-хранилище на базе etcd — оперативный центр данных сети Sigil Gate. Размещается исключительно на трёх серверах управляющего кластера. Core-ноды не входят в кластер etcd и не имеют к нему прямого доступа.

Размещение #

etcd развёрнут на управляющем кластере — трёх серверах под управлением администратора сети. Три узла etcd обеспечивают кворум: кластер продолжает работу при потере одного сервера.

АспектЗначение
РасположениеТолько на управляющем кластере (3 узла)
ОтказоустойчивостьВыдерживает потерю 1 из 3 узлов
КонсистентностьСтрогая (протокол Raft)

Это принципиальное изменение по сравнению с предыдущей архитектурой, где etcd размещался на Core-нодах. Теперь Core-ноды полностью выведены из плоскости управления.

Хранимые данные #

КатегорияСодержимое
Маршруты клиентовUUID → адрес Core-ноды, SNI ячейки
Core-нодыАдрес, ячейка, статус heartbeat, параметры соединения
Entry-конфигурацииserviceName, параметры Xray для каждой ячейки
СертификатыМетаданные, статусы отзыва
ПользователиUUID устройств, статусы активности
ЯчейкиДомены, список Core-нод, параметры

Управление доступом (ACL) #

КлиентПраваОбласть
Управляющий кластерЧтение / записьВсе данные
Entry-подыТолько чтениеМаршруты, serviceName, статусы Core-нод
Core-нодыНет прямого доступа

Entry-поды получают доступ к etcd через API-прокси управляющего кластера с минимальными правами. Прямое подключение Entry к etcd не предусмотрено.

Запросы Entry-подов #

При установке нового клиентского соединения Entry-под выполняет единственный запрос:

GET /routes/{UUID} → {core_address, sni, service_name, cert_id}

Результат кешируется на время сессии. Повторные запросы не выполняются до завершения соединения.

API для автоматизации #

etcd предоставляет gRPC API, на базе которого строятся инструменты управления сетью:

  • Telegram-бот для административных операций.
  • Subscription-сервис для выдачи клиентских конфигураций.
  • Механизм phone-home для регистрации Core-нод.