Внешнее управление конфигурацией¶
В кластерных инсталляциях потоками 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<код>).