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 captura el stream, cuál guarda una copia de su archivo, cuál lo sirve a los espectadores. 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 codificación en GPU se asigna solo a un streamer con tarjetas. Un stream con archivo necesita un streamer con discos de archivo.
  • 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.

edge — el stream se sirve a los espectadores desde un streamer edge. 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 no solo en el streamer de ingest sino en varios más. Cuántas copias mantener lo fija el campo Copias de respaldo DVR en la pestaña Layout.

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í el espectador lo ve en la línea de tiempo común, 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 el registro, 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 un espectador, 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: no hay 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. Cuánto archivo así hay en los discos lo muestra DVR del clúster.

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 inquilino o 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. Con una etiqueta se puede prohibir la colocación igual que con un namespace, pero actúa con más flexibilidad y dentro de un mismo namespace, y la condición se fija a cada stream por separado.

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.

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 espectadores, 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 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

Qué decidió el layouter y por qué un stream acabó donde acabó lo muestra Estado de la colocación.