Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[streaming-system #56] Dockerize flumotion and support components #21

Closed
iiie opened this issue Feb 14, 2014 · 1 comment
Closed

[streaming-system #56] Dockerize flumotion and support components #21

iiie opened this issue Feb 14, 2014 · 1 comment

Comments

@iiie
Copy link
Contributor

iiie commented Feb 14, 2014

More technical details at Streaming System Issue #56

Brief explanation

The streaming system uses flumotion for streaming, we want to put it into a docker container to make distribution and bring up easy.

This project is about making distribution and bring up easy, not about sandboxing / isolation.

Expected results

  • Docker image for each type of flumotion system.

Detailed Explanation

Currently we have 1 flumotion per stream. This currently uses 1 machine per stream as managing the configuration of multiple streams on one machine is to hard. If we had docker image we could start up multiple docker containers on a single machine while still having simple configuration setup.

Docker

This project is about making distribution and bring up easy, not about sandboxing / isolation.

Docker is an open-source project to easily create lightweight, portable, self-sufficient
containers from any application. The same container that a developer builds and
tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack
clusters, public clouds and more.


Portable deployment across machines.
Docker defines a format for bundling an application and all its dependencies into a single
object which can be transferred to any Docker-enabled machine, and executed there with
the guarantee that the execution environment exposed to the application will be the same.


Application-centric*
Docker is optimized for the deployment of applications, as opposed to machines.
This is reflected in its API, user interface, design philosophy and documentation.

http://docs.docker.io/en/latest/faq/#what-does-docker-add-to-just-plain-lxc

Flumotion in the TimVideos streaming system

There are 3 types of flumotion configurations; they should share a base docker image but also be provides a separate docker image correctly configured.

  • Collector - runs on site at a conference and does light encode to compress data so you can send it over the internet to an encoder.
    • Requires dvswitch support.
  • Encoder - runs in the cloud and converts video from the light encode format to something suitable for people to view in their browser.
  • Repeater/Amplifier - runs in the cloud and streams a copy of the encoder output. Allows the system to scale past the limits of a single machine.

There are a couple of support applications we use with flumotion; these should be installed inside the docker image and started as part of the container.

  • watchdog - Restarts failed components and does a full system restart when things go totally wrong.
  • register - Registers with the tracker website (so the stream can be found) and sends statistics and logs for reporting and load balancing support.

Further reading

Knowledge Prerequisites

  • Python coding skills.
  • Some system administration experience very useful.

Contacts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment