Skip to content

Gestión externa de la configuración

En las instalaciones en clúster los streams de Sapsan los gestiona un sistema externo (por ejemplo, Flussonic Central): el servidor toma periódicamente de una URL externa la lista de streams y la aplica.

Configuración

config_external:
  url: http://central.example.com/central/api/v3/streamers/streamer1.example.com
  bearer: <token de acceso>
  client_host: streamer1.example.com
  interval_secs: 5
  timeout_ms: 30000
Parámetro Descripción
url de dónde tomar la configuración
bearer token de autorización para el servidor externo
client_host el nombre con el que este servidor se presenta ante el sistema de gestión
interval_secs periodo de sondeo (5 s por defecto)
timeout_ms tiempo de espera de la petición (30 s por defecto)
fetch_runtime_config si tomar también la configuración de runtime (true por defecto)

Important

Cuando config_external está activado, la sección local streams de sapsan.yaml se ignora — la fuente de verdad pasa a ser el servidor externo. Las demás secciones (listeners, dvr, auth, api_auth) siguen siendo locales, salvo que el servidor externo entregue las suyas.

Cómo funciona el sondeo

  • Sapsan solicita GET <url>/streams cada interval_secs; la lista se trae página por página mediante el cursor next. Cada petición lleva Authorization: Bearer, un encabezado x-originator: sapsan y el client_host.
  • La configuración de runtime (GET <url>/config — listeners, DVR, auth) se solicita solo cuando el servidor anuncia que tiene una.
  • Si la configuración no ha cambiado, se omite la reaplicación.

Tolerancia a fallos

  • Una lista parcialmente inválida: los streams rotos se descartan (con indicación de qué campo falló) y los válidos se aplican — estado Partial.
  • Una configuración completamente inválida (por ejemplo, un conflicto de puertos): no se aplica nada, sigue funcionando la configuración anterior — estado Error.
  • La indisponibilidad del servidor externo, el JSON roto y los errores HTTP se distinguen en el estado (network / malformed_json / http<code>).

Qué sigue