Перейти к основному содержимому

Local Relay

Local Relay — on-premises компонент для площадок, которым нужен license enforcement при ограниченной связи с cloud. Host синхронизируется outbound в cloud, держит local store и может обслуживать LAN validation (и опционально floating actions), не размещая полный Management plane на площадке.

Внутренности Relay engine остаются proprietary платформы. Публичные docs описывают роль и границы — не layout исходников Host и не private messaging.

Для чего Relay

ПотребностьРоль Relay
Прерывистый / ограниченный WANOutbound sync + local leases, чтобы площадка работала между sync
LAN-продуктыЛокальный validation path для устройств в сети площадки
Нет непрерывного HTTPSВ паре с air-gapped пакетами оператора вместо (или между) окнами sync

Relay не открывает cloud message brokers с Host. Непрерывный sync и air-gap handoff — разные транспорты с одной fail-closed crypto-позой.

Для LAN activation, validation и refresh нужен active verified V2 snapshot License. Legacy entitlement-only store, offline grace или исторический lease с ProductId из entitlement.Code не могут дать allow; validate/refresh возвращают relay.host.no_snapshot до доставки V2 state. См. руководство по cutover Wave 74.15.

Безопасные повторы LAN-запросов

LAN activation, refresh lease и device registration используют стабильный Idempotency-Key для одной логической попытки. Тот же key с тем же request возвращает исходный результат даже после рестарта Host; изменённый request с живым key получает 409 relay.host.idempotency_conflict. Если Host не может восстановить защищённый исходный результат, он возвращает 503 relay.host.idempotency_unavailable и не повторяет mutation. Key должен содержать 1–128 печатных ASCII-символов без пробелов.

Локальная отправка usage

Авторизованный LAN-клиент отправляет usage-факт подписанным запросом edge-lan-v1 на POST /api/edge/v1/usage/report с операцией usage.report. Запрос содержит UUIDv7 локального события, ожидаемые License и Product, нормализованный код meter, положительное количество и UTC-время события. Product из запроса не является authority: Relay получает Product, Tenant, Customer и определение meter из активного локального поколения с подписью Cloud и проверяет Product-scope клиента.

Relay добавляет факт в SQLite один раз. Точный повтор local event возвращает тот же receipt, а изменённое повторное использование получает 409. Host фиксирует pending-факты в неизменяемые batch до 500 событий и отправляет в Cloud точные сохранённые байты с ES256 proof Gateway и производным ключом идемпотентности. После сетевой ошибки или рестарта повторяются те же байты. Локальное доказательство подтверждается только после точного надёжного receipt Cloud. Usage-факты не выдают и не продлевают права лицензии.

Health и локальная диагностика

Анонимные ответы GET /health и GET /ready содержат только status, service и version. Они не раскрывают Tenant, Customer, site, количество лицензий, состояние синхронизации, сведения о provider, key id, пути или детали ошибок.

Подробная диагностика доступна на GET /api/edge/admin/v1/diagnostics. Нужны одновременно loopback-вызов и отдельный credential схемы RelayAdmin; credentials LAN-клиента и Gateway не принимаются. В конфигурации Host хранится только SHA-256 digest credential в RelayHostAdmin:CredentialSha256. Прежний анонимный путь GET /diagnostics удалён. Security-диагностика показывает только типы provider и id активного signing key, но никогда не credential, key material, координаты ключа, protected references или пути конфигурации.

Vendor Console (оператор)

В Vendor Console списки Offline / Floating / Relays принимают опциональный product-контекст (query productCode / productId), а вкладки Operations показывают Offline + Floating рядом с Relays. Enrollment Local Relay идёт через multi-step setup wizard (опциональная привязка лицензии → checklist одноразового token → deep-link на Offline air-gap экспорт). Product-фильтры в этом релизе только на стороне Console — Management list API остаются tenant-wide.

Это не webhooks

Customer webhooks — это platform → ваш HTTPS URL (push событий для интегратора). Sync Relay — Host → cloud reconciliation плюс локальная LAN-валидация. Не настраивайте webhook URL в расчёте, что он «кормит» Relay Host, и не считайте доставку webhook доказательством signed lease.

Когда использовать

  1. Hospitality / филиальные площадки с нестабильным WAN и многими локальными клиентами.
  2. Нужен локальный enforce плюс периодическая reconciliation с cloud.
  3. Чисто online Runtime-продукты со стабильной связью → Relay может не понадобиться.

Связанное

Следующие шаги

  • Быстрый старт
  • Темы operations (deployment / troubleshooting) появятся в следующих волнах public docs