Skip to content

Внешнее управление конфигурацией

В кластерных инсталляциях потоками Sapsan управляет внешняя система (например, Flussonic Central): сервер периодически забирает список потоков с внешнего URL и применяет его.

Настройка

config_external:
  url: http://central.example.com/central/api/v3/streamers/streamer1.example.com
  bearer: <токен доступа>
  client_host: streamer1.example.com
  interval_secs: 5
  timeout_ms: 30000
Параметр Описание
url откуда забирать конфигурацию
bearer токен авторизации на внешнем сервере
client_host имя, под которым этот сервер представляется управляющей системе
interval_secs период опроса (по умолчанию 5 с)
timeout_ms таймаут запроса (по умолчанию 30 с)
fetch_runtime_config забирать ли также runtime-конфигурацию (по умолчанию true)

Important

Когда включен config_external, локальная секция streams в sapsan.yaml игнорируется — источником истины становится внешний сервер. Остальные секции (listeners, dvr, auth, api_auth) остаются локальными, если внешний сервер не передал свои.

Как работает опрос

  • Sapsan запрашивает GET <url>/streams каждые interval_secs; список постранично забирается по курсору next. В каждом запросе уходят Authorization: Bearer, заголовок x-originator: sapsan и client_host.
  • Runtime-конфигурация (GET <url>/config — слушатели, DVR, auth) запрашивается, только если сервер объявил, что она у него есть.
  • Если конфигурация не изменилась, повторное применение пропускается.

Устойчивость к ошибкам

  • Частично невалидный список: некорректные потоки отбрасываются (с указанием, какое поле не удалось применить), корректные применяются — статус Partial.
  • Полностью невалидная конфигурация (например, конфликт портов): ничего не применяется, продолжает работать предыдущая конфигурация — статус Error.
  • Недоступность внешнего сервера, битый JSON и HTTP-ошибки различаются в статусе (network / malformed_json / http<код>).

Что дальше