Bloggers recientes Bloggers recientes

Jesús Jaén Díaz Mensajes: 4
Estrellas: 0
Fecha: 14/05/12
Pedro Peña Pérez Mensajes: 1
Estrellas: 0
Fecha: 3/05/12
Oscar Campos Ruiz Mensajes: 2
Estrellas: 1
Fecha: 10/03/11
«Atrás

Tutorial - Instalación y configuración básica de Flumotion sobre Ubuntu 12.04

Flumotion, a parte de una empresa española especializada en el streaming de contenidos, es un sistema de distribución de contenido multimedia (Streaming Media Server) con un diseño modular y distribuido ofreciendo grandes posibilidades de estabilidad y escalabilidad. Uno de sus puntos fuertes es la posibilidad de realizar streaming de contenidos usando formatos y estándares libres como Ogg/Theora/Webm.

Se usa en clientes tan importantes como Antena 3, Cuatro o Nestlé. Su licencia es libre, con la mayoría de componentes bajo LGPL 2.1, y el resto bajo GPL 2+, Expat y PSF-2.

En Flumotion se distinguen 3 tipos de componentes principales:  el "manager", el "worker" y la interfaz de administración. Un "manager" se encarga de repartir tareas a el/los "worker"/s que estén conectados a él. Las tareas pueden ser coficar un stream de video o audio, capturar el estream de la entrada firewire o webcam, multiplexar audio y video, hacer el streaming por HTTP, etc. La interfaz de administración se conecta al "manager" permitiendo al usuario visualizar las tareas que se están realizando  en los "workers" y poder asignar nuevas. Los componentes pueden residir en una misma máquina o distribuirse en varias.

Por ejemplo podríamos tener un "manager" en  servidorA, dos "workers" conectados a éste en equipo1 y equipo2 y ejecutar la interfaz de administración desde un tercer equipo.

Para nuestro tutorial usaremos una topología sencilla que consistirá en un único "manager" ejecutándose en el equipo que en adelante llamaremos Servidor1, un "worker" también ejecutándose en Servidor1 y otro "worker" ejecutándose en otro equipo que llamaremos Cliente1. La interfaz de administración la ejecutaremos también desde Cliente1.

Servidor1 y Cliente1 pueden ser máquinas físicas o virtuales que estén en la misma subred y con sistema operativo Ubuntu 12.04 (32 o 64 bits).

La instalación de Flumotion bajo Ubuntu 12.04 es relativamente sencilla al estar disponible en los repositorios oficiales la última versión disponible (0.10).

Desde un terminal ejecutamos en Cliente1 y Servidor1 el siguiente comando:

sudo apt-get install flumotion python-crypto

El paquete flumotion incluye los componentes "manager", "worker" y la interfaz de administración. El paquete python-crypto es necesario para algunos componentes de Flumotion, pero sin embargo no está como dependencia del paquete flumotion. Así que lo instalamos también para evitar errores posteriores.

Durante la instalación nos preguntará el CommonName de un certificado que se autogenerará y que podremos usar en caso de que activemos SSL. Podemos dejarlo por defecto o poner el nombre de la máquina.

Antes de proseguir con la configuración, debido a una incompatibilidad entre Flumotion y las librerías Twisted que están en los repositorios oficiales de Ubuntu 12.04 (versión 0.11.1), es necesario instalar la versión 0.11 de Twisted tanto en Cliente1 como en Servidor1. Para ello descargaremos tres paquetes desde los repositorios de Ubuntu 11.10:

python-twisted-core_11.0.0-2_all.deb,

python-twisted-names_11.0.0-1_all.deb y

python-twisted-web_11.0.0-1_all.deb

Una vez descargados, los instalaremos ejecutando el siguiente comando en el directorio de descarga:

sudo dpkg -i python-twisted-*
 
Al instalar dichos paquetes se quedarán algunas dependencias sin resolver en el paquete ubuntuone-client. Así que si después de usar Flumotion queremos resolver dichas dependecias y usar ubuntuone-client deberemos ejecutar:
 
sudo apt-get -f install
 
Esta solución es engorrosa pero temporal, hasta que los desarrolladores de Flumotion lo hagan compatible con Twisted >= 11.1.
 

Una vez instalado Flumotion en ambas máquinas editamos primero los ficheros de configuración de Servidor1. En Servidor1 residirán un "manager" y un "worker" así que editaremos 2 ficheros:

Para el "manager" editamos  /etc/flumotion/managers/default/planet.xml y ponemos el campo <host> con la dirección ip de Servidor1.

Para establecer un usuario y contraseña diferentes para el "manager" (por defecto usuario user y contraseña test) usamos la utilidad htpasswd que viene con el paquete del servidor Apache (sudo apt-get install apache2 para instalarlo):
 
htpasswd -b -d -n <usuario> <contraseña>
 
Nos dará una linea como resultado que debemos insertar en el campo <property name="data"> del componente "manager-bouncer". Para el tutorial he usado usuario admin y contraseña admin, quedando el fichero /etc/flumotion/managers/default/planet.xml de Servidor1 así:
 
<?xml version="1.0"?>
<planet>
<manager name="planet">
    <host>192.168.100.105</host>
<!--
    <port></port>
    <transport></transport>
    <certificate></certificate>
-->
<!--
FIXME: would be nice if we find a way to have this be overridden by either
env var or cmd line option
    <debug>5</debug>
-->
<!--
Sample crypt(3) password:
-->
    <component name="manager-bouncer" type="htpasswdcrypt-bouncer">
      <property name="data">
admin:eBix/g465ahnA
</property>
    </component>
  </manager>
</planet>
 
Para el "worker" de Servidor1 editamos  /etc/flumotion/workers/default.xml y descomentamos el campo <host> estableciéndolo con la dirección ip de Servidor1 (en mi caso 192.168.100.105). También estableceremos los campos <username> y <password> a los que hemos configurado en el fichero de configuración del "manager" (admin admin). El fichero /etc/flumotion/workers/default.xml de Servidor1 finalmente quedaría así:
 
<?xml version="1.0"?>
<worker name="Servidor1">
<!--
You can override the name of the worker, which will typically be
hostname:(xmlfilename)
<worker name="default">
-->
 
    <manager>
 
      <host>192.168.100.105</host>
<!--
      This specifies what manager to log in to.
      Compare with command-line options.
      <port></port>
      <transport></transport>
-->
    </manager>
 
    <authentication type="plaintext">
<!--
      This specifies what authentication to use to log in.
      Compare with command-line options.
-->
      <username>admin</username>
      <password>admin</password>
    </authentication>
 
    <feederports>8650-8669</feederports>
    <debug>*:4</debug>
 
</worker>
 
Ya podemos reiniciar el servicio Flumotion de Servidor1, mediante:
 
sudo /etc/init.d/flumotion restart
 
En el equipo Cliente1 tan solo irá un "worker". Por lo tanto editaremos un solo fichero y deshabilitaremos el "manager" que se configura por defecto al instalar Flumotion renombrando el fichero /etc/flumotion/managers/default/planet.xml/etc/flumotion/managers/default/planet.xml.orig.
 
El fichero del "worker" de Cliente1 es igual al del "worker" de Servidor1, salvo por la linea 2 en la que el atributo "name" es Cliente1:
 
<worker name="Cliente1">
 
Ya podemos reiniciar el servicio Flumotion de Cliente1, mediante:
 
sudo /etc/init.d/flumotion restart
 
En el siguiente vídeo puede verse como conectarnos mediante la interfaz de administración Flumotion al "manager" introduciendo su ip y como configurar un streaming de test que se genera desde Cliente1 y se publica en Servidor1 mediante el asistente de Flumotion. El asistente nos guiará para realizar configuraciones sencillas. Si queremos realizar configuraciones más complejas será necesario generar ficheros de configuración. Pero esto lo dejamos para otra entrega.
 
 

Comentarios
URL de Trackback: