
El popular alojamiento en la nube DigitalOcean ha lanzado recientemente su nuevo mercado que vende imágenes preconfiguradas que pueden ayudar a implementar rápidamente un servidor de aplicaciones. Es muy parecido a AWS, pero DO es para aquellos que ya usan los servicios de este proveedor. Veamos cómo implementar un servidor simple para la transmisión de WebRTC con una cuenta DO por una tarifa de $ 10 / mes basada en Flashphoner WebCallServer y cómo dicho servidor puede ser útil.
Despliegue
Ingrese la cuenta DO, elija la imagen Flashphoner WebCallServer en Marketplace y presione "Crear gota de Flashphoner Web Call Server".

Elija el rendimiento del servidor y el plan de precios. DO ofrecerá automáticamente un producto de segmento medio, pero estamos interesados en el precio mínimo.

Elija la región de ubicación del centro de datos, por ejemplo, Frankfurt.

Elija el tipo de autenticación, por ejemplo, contraseña de un solo uso.

Especifique el número de servidores (estamos interesados en un servidor por ahora) y nombre el servidor. Este nombre se registrará entre otras ubicaciones en / etc / hostname.
Presione "Crear gota"

Tan pronto como se crea el servidor, se iniciará automáticamente. Ahora podemos conectarnos a través de SSH y modificar la contraseña si se ha elegido una contraseña única como método de autenticación. En la consola se mostrará una breve descripción de Flashphoner WebCallServer con enlaces a la documentación.

"Esta es una prueba. ¿Puedes verme?"
Para cuando se inicia Flashphoner WebCallServer, está en modo listo para trabajar, se activa automáticamente una licencia de prueba de 30 días. La interfaz web se utiliza para probar las funciones clave. Solo revisaremos la publicación y la reproducción de la transmisión WebRTC.
Abra en el navegador la página https: // droplet_ip: 8444 / admin / . El servidor se envía con certificado autofirmado de forma predeterminada; por lo tanto, necesitaremos confirmar la excepción de seguridad. Los certificados se pueden reemplazar más tarde con los suyos. Ingrese el nombre de usuario y la contraseña ( demo por defecto).

Elija el ejemplo de transmisión bidireccional en la barra lateral, presione "Conectar" y luego "Publicar". Para reproducir la transmisión, presione "Reproducir".

Por un puñado de dólares
¿Qué puede hacer un servidor de $ 10 / mes como plataforma de hardware para la transmisión WebRTC? Veamos qué ofrece Digital Ocean en términos de procesador
lscpu

y memoria
free -h

Al ejecutar pruebas de carga en el servidor, podemos ver que las capacidades de rendimiento del servidor no son tan pequeñas.
Como ejemplo, publicaremos una muestra de flujo y veremos cuántos usuarios podrán publicar este flujo simultáneamente sin exceder el 90% de los recursos del procesador:
Con varias publicaciones simultáneas, el número máximo de secuencias procesadas sigue siendo el mismo; cuando se publican 7 transmisiones, hasta 10 espectadores pueden suscribirse a cada una.
Supongamos que necesitamos transcodificar la transmisión en el servidor para reducir la resolución o alinear el FPS. Para hacer esto, vamos a verificar el número máximo de publicaciones:
De esta manera, el servidor con el precio más bajo en OD con los parámetros 1 núcleo de CPU, 2 Gb de RAM, tráfico de 2 TB es adecuado no solo para probar la transmisión WebRTC sino también para proyectos pequeños. Por ejemplo, es posible
- entregar una transmisión a través de WebRTC desde una cámara IP para garantizar la videovigilancia interna básica;
- organizar un seminario web para el personal de una pequeña empresa;
- implemente su propia radio por Internet (las transmisiones de audio requieren menos recursos de procesador).
Además, este servidor se puede ver como plataforma de referencia para la estimación de escala. Esto es lo que trataremos más adelante.
"¡Merezco más!"
En su mayor parte, las reglas son bastante simples: no hay demasiados núcleos ni demasiada memoria. Dependiendo del número previsto de usuarios, las recomendaciones de configuración de DO serán las siguientes:
Si se planea un aumento adicional en el número de usuarios, tendremos que implementar el CDN que proyecta 1 servidor perimetral por cada 2000 usuarios. Supongamos que necesitamos entregar un video HD, el número previsto de espectadores es de 10000. En este caso, se requerirán 2 servidores Origin para publicación y 5 servidores Edge para visualización.

Ejemplo de configuración:
cdn_enabled=true cdn_ip=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin
cdn_enabled=true cdn_ip=origin2.flashponer.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin
- Edge 1 - Edge 5 (aquí solo cambiamos la dirección del servidor en el parámetro
cdn_ip
)
cdn_enabled=true cdn_ip=edge1.flashphoner.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge
CDN también puede ser útil si los usuarios están dispersos geográficamente. Por ejemplo, nuestro público objetivo se encuentra en Europa y América.

Ejemplo de configuración:
cdn_enabled=true cdn_ip=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=EU
cdn_enabled=true cdn_ip=origin_us.flashponer.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=US
cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU
cdn_enabled=true cdn_ip=edge1_us.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=US
Cuanto mayor es el número de espectadores, más diversos son los dispositivos de reproducción y los canales para estos dispositivos. Para proporcionar una buena calidad de transmisión a varios dispositivos, lo más probable es que sea necesario transcodificar el video, que puede imponerse en servidores especiales de Transcoder.

Ejemplo de configuración:
cdn_enabled=true cdn_ip=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=default
cdn_enabled=true cdn_ip=transcoder_eu.flashponer.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=transcoder cdn_groups=EU
cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU
Como descubrimos durante la prueba, la cantidad de núcleos de procesador es esencial para la transcodificación. La configuración más adecuada en la línea de configuración optimizada para CPU es la más cara: 32 vCPU, 64 Gb RAM. Al mismo tiempo, los precios para configuraciones de CPU similares en cantidad y con mayor memoria en otras líneas pueden ser significativamente más altos. Desafortunadamente, no se puede ahorrar dinero en transcodificadores: como el video se codifica cuadro por cuadro, debe haber suficiente espacio de memoria para todas las imágenes y procesadores suficientes para procesar todas las transmisiones.
Durante la implementación de CDN, la creación simultánea de varios servidores con la misma configuración será útil. Sin embargo, en el caso de CDN geográficamente dispersos, los servidores perimetrales y transcodificadores del mismo tipo deberán alojarse en diferentes centros de datos.
Conclusión
Para concluir, hemos implementado y probado un pequeño servidor para la transmisión de video WebRTC de baja latencia en Digital Ocean y hemos descubierto que un servidor con una configuración mínima es una buena opción no solo para pruebas sino también para pequeños proyectos. Hemos obtenido los datos de escala según el número previsto de espectadores y hemos tocado el tema de la implementación de CDN, que como tal merece ser discutido en un artículo separado. Para continuar, por favor quédese con nosotros.
Imagen de Flashphoner WebCallServer en DigitalOcean Marketplace : imagen de Web Call Server en DigitalOcean.
CDN para transmisión WebRTC de baja latencia : red de entrega de contenido basada en Web Call Server.