Skip to content

Colocación de streams

Los streams los reparte por los streamers el layouter, un subsistema de central. Usted añade streamers y crea streams, y él decide qué máquina toma la fuente del stream, cuál guarda una copia de su archivo, cuál lo sirve a los destinos. La decisión se recalcula ante cada cambio, y si una máquina falla, sus streams se mudan solos a las que siguen vivas.

Una decisión del layouter se llama asignación y une un stream, un streamer y un rol — lo que esa máquina hace para el stream. Por cada asignación central arma la config de servidor del stream y la entrega al streamer, y por eso los ajustes de los streams se editan en central y no en las máquinas.

La colocación se gobierna con tres ajustes. Los namespaces dividen el clúster en partes que no se cruzan. Las etiquetas fijan requisitos y preferencias. Los límites acotan cuánto toma una sola máquina.

Cómo se reparten los streams

Qué hace el layouter

  • Asigna roles y recalcula asignaciones. La ejecución arranca cuando cambia la entrada — se unió un streamer, se creó un stream, se editaron ajustes. No hay calendario y no hay nada que lanzar a mano.
  • Tiene en cuenta las capacidades del streamer. Un stream con archivo necesita un streamer con discos de archivo si en su namespace no hay streamer DVR: entonces el archivo lo graba el streamer DVR, y el streamer de ingest no necesita discos.
  • Vigila la carga. Entre los streamers aptos se elige el menos cargado, por procesador, red y ocupación del archivo. Un streamer sobrecargado se alivia mudando streams fuera de él.
  • No muda streams sin causa. Mientras la entrada no cambia, las asignaciones se quedan como están. Que una máquina vecina esté poco cargada no es motivo para mudar nada.

Roles de asignación

Los roles no se eligen ni se activan por separado. Se derivan de lo que ya está configurado: el stream tiene fuente, así que hace falta ingest; al stream se le fijó un número de copias de respaldo del archivo, así que aparecen copias; el clúster tiene streamers edge, así que aparece la entrega edge; en un streamer quedó el archivo de un stream mudado, así que aparece dvr parts o dvr cleanup. Conocerlos sirve para leer la tabla de asignaciones en la pestaña Layout del stream.

ingest — el rol principal, lo tiene todo stream en funcionamiento. El streamer recibe la fuente del stream, la transcodifica y graba el archivo cuando están configurados. Un stream tiene un streamer de ingest. Aquí es donde se comprueban los requisitos del stream hacia la máquina, por eso la mayoría de los motivos de rechazo pertenecen a este rol.

dvr record — el archivo del stream no lo graba el streamer de ingest sino un streamer DVR de su namespace. Un streamer DVR es un streamer corriente con el interruptor Nodo DVR en su pestaña Clúster. Una asignación por stream; la recibe todo stream con archivo en cuanto el namespace tiene un streamer DVR. El streamer DVR recibe el directo del streamer de ingest, como una copia de respaldo.

edge — el stream se sirve a quien lo consume desde un streamer edge, no desde el de ingest. Un edge es un streamer corriente con el interruptor Nodo edge en su pestaña Clúster. El rol se asigna a cada stream en cada edge apto y no hay nada que activar aparte. Ese stream no captura fuente ni graba archivo, recibe el resultado terminado del streamer de ingest.

dvr backup — el archivo se graba en varios streamers más además del de ingest o de dvr record. Cuántas copias mantener lo fija el campo Copias de respaldo DVR en la pestaña Layout. En un namespace con streamer DVR las copias se colocan solo en streamers DVR.

dvr parts — el stream se mudó a otro streamer y en el anterior quedó archivo grabado. La asignación sirve ese archivo a los vecinos, así un intervalo pasado se reproduce sin cortes, y lo borra según la retención del stream. El streamer no graba nada nuevo: no tiene entradas del stream.

dvr cleanup — en el streamer hay archivo del stream, pero no se puede o no hace falta servirlo. La asignación solo borra el archivo según la retención: el stream no tiene entradas y los vecinos no leen de este streamer. Es el rol más débil: le toca al resto al que no le corresponde ningún otro. Cuándo un resto recibe servicio y cuándo limpieza — en la sección Restos del archivo.

Tolerancia a fallos

Los estados del streamer están descritos en la lista de streamers, y el layouter reacciona a ellos así.

  • Señal perdida. Las asignaciones se congelan — no se retiran, no se crean, y la máquina no recibe streams nuevos. Un corte breve no muda streams, y en cuanto vuelve el enlace la máquina sigue llevando los mismos.
  • Offline. Los streams se mudan a máquinas vivas en cuanto se encuentran aptas.

La entrega edge es la excepción. Se mantiene con cualquier estado de conexión, porque el edge levanta el stream cuando lo pide quien lo consume, y no tiene sentido retirar la asignación por el silencio. Un streamer sacado del clúster pierde todas sus asignaciones.

Restos del archivo

Cuando un stream se muda a otro streamer, el archivo grabado se queda en la máquina anterior. Central lo contabiliza como resto y lo atiende con uno de dos roles hasta que venza la retención del stream.

  • dvr parts — el streamer encaja con el stream por namespace y etiquetas, no es edge ni la máquina de ingest ni la de dvr backup, y tiene URL privada de payload.
  • dvr cleanup — en todos los demás casos: sin dirección, el namespace es otro, las etiquetas requeridas no coinciden, el stream está deshabilitado, la grabación del stream se quitó. La limpieza solo necesita el rol Streamer, almacenamiento de archivo y una máquina viva y aprobada. El límite de streams no la cuenta.

La pestaña Layout del stream tras la mudanza: ingest en el streamer nuevo, dvr parts en el anterior

Un servicio que corresponde pero no se creó se ve como demanda sin cubrir en la pestaña Layout del stream — normalmente con el motivo sin dirección utilizable. La limpieza en lugar del servicio fuera del namespace o de las etiquetas no genera demanda: el namespace y las etiquetas funcionaron como se configuraron, y el rol se ve solo en la tabla de asignaciones. Un resto que ni siquiera la limpieza atiende es una demanda sin cubrir del rol dvr cleanup, por ejemplo con el motivo rol del nodo no compatible.

El streamer anterior sin URL privada de payload: el resto se limpia, dvr parts es una demanda sin cubrir

Grabación quitada y stream deshabilitado

Apagar la grabación no borra el archivo al instante. El stream se queda en los streamers donde está su archivo, y cada uno borra lo grabado con una limpieza de retención por defecto — un día. Vuelva a encender la grabación antes, y el archivo entero vuelve a estar en uso. Un stream deshabilitado recibe solo limpieza: sus restos se borran según la retención del stream.

Huérfanos

Un archivo sin stream es un huérfano. Así queda el archivo de un stream eliminado; así se ve también el archivo de un streamer que vuelve al clúster tras una ausencia larga.

El streamer encuentra ese archivo por sí mismo y lo reporta a central, y central le asigna limpieza con el motivo archivo huérfano. No hay que hacer nada: en un día el archivo está borrado y el espacio, libre. Si existe un stream con ese nombre, el archivo cuenta como suyo y se atiende según sus reglas.

Un huérfano no tiene página de stream. Su asignación se ve en la página del streamer, en el slice de streams: una fila con la marca sin documento, el rol dvr cleanup, el motivo archivo huérfano.

Qué decidió el layouter

Cada asignación y cada mudanza las registra el layouter junto con su motivo — la interfaz responde a "por qué este stream está aquí" y a "por qué no está aquí".

La página Distribución de la consola muestra la colocación en conjunto: la última ejecución como tarjeta — su número, hora, resultado y tres cifras — y el historial de ejecuciones como tabla. Una ejecución con ceros en todas las cifras es un resultado normal: la entrada cambió, pero no hubo que reasignar nada. El botón Ejecutar ahora hace a mano lo que un cambio de configuración hace por sí solo; hace falta rara vez, sobre todo durante una investigación.

En la pestaña Layout de un stream la misma historia se cuenta para un solo stream: el estado de la colocación, las demandas sin cubrir, las asignaciones actuales y el historial de decisiones del layouter para él.

Cómo influir en la colocación

Los ajustes del streamer viven en la pestaña Clúster de su página.

La pestaña Clúster del streamer: rol, namespace, límites y etiquetas

El stream tiene su propio namespace y sus propias etiquetas, y se fijan en la pestaña Layout de su página — el mismo sitio donde se ven sus asignaciones.

La pestaña Layout del stream: namespace, etiquetas y número de copias de respaldo del archivo

Namespaces

El namespace es una frontera estricta. Un stream se asigna solo a streamers con el mismo namespace, y no hay excepciones entre namespaces. El valor vacío también es un namespace, así que un stream sin él se asigna solo a streamers sin él.

Así se divide un clúster en partes que no se cruzan — por sitio, por ejemplo. El namespace del streamer se fija en la pestaña Clúster, el del stream en la pestaña Layout.

Etiquetas

La etiqueta es una marca libre que usted pone al streamer y al stream. Qué significa lo decide usted: el layouter solo compara etiquetas cuando elige máquina. Así entra en la colocación una condición que el sistema no puede conocer.

La etiqueta y el namespace saben hacer lo mismo — prohibir la colocación — y en ambos casos la frontera no se puede cruzar. La diferencia está en la escala. El namespace divide el clúster entero: hay que marcarlo todo y ningún stream se mueve entre las partes. La etiqueta ata streams concretos y admite un repliegue mediante preferred_. Si se necesita aislar todo el clúster, tome un namespace; si la condición es de streams concretos, una etiqueta.

Las etiquetas del streamer se fijan en la pestaña Clúster, las del stream en la pestaña Layout. La forma de escribirla decide qué significa. La palabra fast de abajo es solo un ejemplo, en su lugar puede ir cualquier palabra suya.

  • fast — propiedad. Así se marca una máquina o un stream sin exigir nada.
  • required_fast — requisito. Un stream que la lleva se asigna solo a un streamer que también tenga la etiqueta fast. La regla funciona en ambos sentidos — un streamer con required_fast toma solo streams con esa etiqueta.
  • preferred_fast — preferencia. En igualdad de condiciones gana el streamer con la etiqueta fast, pero su ausencia no impide la asignación.

Se compara la palabra en sí, no la forma de escribirla. El requisito required_fast lo satisface cualquiera de las tres formas del otro lado — fast, required_fast o preferred_fast. La preferencia preferred_fast se cuenta igual.

Ejemplos de colocación

Dos centros de datos con un canal estrecho entre ellos. Mientras el layouter ve el clúster entero, coloca los streams y sus copias de archivo en cualquier máquina: el tráfico de transferencia del archivo cruza el canal entre centros, y al fallar una sede sus streams pasan en masa al otro centro, donde sus fuentes no se pueden recibir de todos modos. Divida el clúster en los namespaces dc1 y dc2 — y cada stream con todos sus papeles vive dentro de su sede. Hay que marcarlo todo: cada stream y cada streamer necesitan un namespace, y un streamer sin él es inaccesible para los streams dc1 y dc2.

Una fuente multicast no llega desde cada centro. Diez nodos están repartidos entre dos centros de datos, y el multicast se enruta solo dentro del suyo. Hay que atar a la sede solo un stream, no todo el clúster — por eso no un namespace, sino una etiqueta: dc1 y dc2 a los streamers, required_dc1 al stream. Los demás streams siguen colocándose en todo el clúster.

La placa SDI está enchufada en una máquina concreta. Ninguna otra máquina puede recibir esta fuente. Ponga a las máquinas con placas la etiqueta dektec y al stream required_dektec: el stream se asigna a una de ellas, y al fallar pasa a otra máquina con placa, no a cualquiera que esté viva. El hardware se describe en las páginas Placas de captura y Recepción SDI.

El stream está mejor en su centro, pero el traslado es admisible. preferred_dc1 mantiene el stream en el primer centro mientras la sede tenga capacidad y lo rebose al segundo cuando se llene. Un namespace no puede expresar semejante repliegue.

Una máquina y un stream con varias etiquetas. Una máquina y un stream pueden llevar muchas etiquetas: un streamer del primer centro con placa de captura lleva dc1 y dektec, y un stream con required_dc1 y required_dektec se asigna solo a esas máquinas.

Límites y carga

La carga del streamer se mide por la máquina entera — todo su procesador y todo su tráfico, incluida la entrega a la red, las transferencias entre streamers y los procesos ajenos. Los roles de asignación no afectan a la medición.

Tres campos en la pestaña Clúster fijan los topes.

  • Límite de streams — cuántos streams puede llevar la máquina. Cero la deja en el clúster, pero vacía.
  • Límite de red, kbit/s — el tope de tráfico de la máquina. Por encima el layouter no añade streams, y al superarse alivia la máquina.
  • Límite de DVR, % — la ocupación de los discos de archivo con la que el streamer cuenta como lleno.

Los topes restringen las asignaciones de ingest, de dvr record y de copias de respaldo del archivo. La entrega edge, dvr parts y dvr cleanup no quedan restringidos por ellos — esos roles se asignan sin importar la carga de la máquina.

Qué sigue

Las máquinas entre las que la colocación reparte los streams se describen en la página Streamers; la redundancia del propio central, no de los streamers, es Un grupo de central en servidores separados.