Streaming Server Setup

DanielDaniel

New Member
Guten Tag !

Ich brauche für ein neues Projekt einen Streaming Server, und bräuchte eure Hilfe bei der Dimensionierung. Eine kurze Beschreibung der Anforderungen:

15 IP Kameras mit h264 Streams (Audio + Video 640x320px) mit bis zu 300 gleichzeitigen Zuschauern auf der Webseite insgesamt (nicht pro Kamera). Die Streams sollen als flash oder mit einem html5 player wie bei Youtube angezeigt werden können, live.

Dies soll auf einem Dedicated Server realisiert werden, jedoch ist die Frage welche Anforderungen ? Da ich mich mit Video Streaming nie befasst habe, habe ich keinerlei Vorstellungen.

Würde die folgende Konfiguration reichen ?

AMD Quad-Core Opteron X2150 CPU 4 x 1,5 GHz
8 GB DDR3 ECC Server-RAM
32 GB SSD Festplatte
1.000 GB Storage (RAID 6)
1000Mbit Anbindung, Flatrate.

Ich bin für alle Vorschläge und Tipps dankbar !

MfG

Daniel
 
Sicher dass die Flatrate wirklich eine ist und nicht irgendwann gedrosselt wird. Denke dass das Transfervolumen in deinem Fall am wichtigsten ist. Zur Hardware kann ich leider nichts sagen
 
solange die Streams nicht gespeichert werden sollen ist das RAID 6 in meinen Augen unnötig, ich würde lieber mehr RAM und eine größere SSD nehmen
 
Werden die Streams auf dem encodiert / umgewandelt, oder wird von den Kameras nur so auf den Server gestreamt.

Welche Streaming Software kommt zum Einsatz? Adobe Flashmedia Server? Oder Wowza?

Bei letzterem benötigt man eine Menge RAM.
 
Hallo !

Die Streams werden nicht gespeichert, aber das Paket kann man sich bei dem Provider nicht beliebig zusammenstellen, deshalb das Raid 6. Die Streams werden von dem Server als h264 abgeholt, diese sollen auf der Webseite möglichst mit einem, auf allen Clients verfügbaren Plugin (Flash ?) abspielbar sein. Was spielt denn der html5 player bei Youtube ab ? Deshalb wird wohl encodiert von h264 auf flash ? Bei der Software habe ich freie Wahl, die die für den Zweck am besten geeignet ist wird eingesetzt. Dazu würde ich mich auch über Vorschläge freuen !!! Wie gesagt mit Streaming Servern kenne ich mich so gut wie garnicht aus.

MfG

Daniel
 
Hi,

Ich würde zunächst einmal die Anforderungen bzgl. der Anzahl der Clients hinterfragen, also ob man da nicht erstmal klein starten möchte und mit größerer Last dann hoch skaliert.

300 Streams gleichzeitig ist schon eine ganze Menge Holz. Bei der Auflösung bist Du da bei H.264 high Profile mit 30FPS bei ca. 1Mbit/sec pro Client. Da könnte eine Gigabit Anbindung durchaus schon knapp werden (welche Bandbreite garantiert Dir Dein Hoster eigentlich *nach* dem Access-Switch? Wie hoch ist die netto Bandbreite, die Du mit dem System erzielen kannst?). Insbesondere werden da auch Themen wie Peering zu den ISPs der Besucher, Multicast etc. interessant. Deine Gigabit Anbindung nützt Dir nichts, wenn 80% Deiner Clients von T-Online kommen und Dein Provider nur mit 10Mbit/sec mit der Telekom peert. :-)

Es gibt diverse Anbieter, die sich auf das Vermieten von Streaming Servern spezialisiert haben (einfach mal googeln). Ich würde erst mal evaluieren, ob es im Endeffekt nicht günstiger ist, das durch eine darauf spezialisierte Firma machen zu lasen (Kosten ca. 400 Euro/Monat) als das wirklich selbst zu hosten.

Wenn Du es selbst bauen möchtest, würde ich erst mal schauen, was es an Software schon gibt. Die großen Player in dem Markt sind Microsoft Media Server und QuickTime Streaming Server. Von letzterem gibt es auch eine OpenSource Variante, den Darwin Streaming Server. Das heißt dann aber auch, dass evtl. MacOS Server oder Windows als Betriebssystem zum Einsatz kommt.

Letztlich bleibt noch die Bastellösung: Mir schwebt da spontan vor, die einzelnen einkommenden Streams mittels ffmpeg oder mencoder in kleinere Stücke zu zerlegen und diese in einen memcached zu legen. Dieser kann dann wiederum über ein bisschen glue code pseudo Dateien an ein HTML5/Flash Frontend über HTTP Streaming ausliefern. Allerdings wirst Du da um ein gescheites Design, etwas Programmieraufwand, viel Testing und noch mehr Debugging nicht herum kommen.

Nach kurzem Überschlagen der Zahlen halte ich Deinen Server für massiv unterdimensioniert für die Anforderungen. Aus dem Bauch heraus würde ich veranschlagen:

- Ein CPU Thread pro einkommendem Stream + 1 für den Webserver -> mindestens 16 Threads, d.h. 8 Cores. Wird dann vermutlich auf einen Server mit 2 CPUs (z.B. Xeon E5-2600) hinaus laufen. .
- Viel RAM für das Caching der Streams. Mindestens 64GB.

Das hängt aber auch von der eingesetzten Software ab. Also erst für eine passende Software entscheiden, dann die dazu passende Hardware besorgen. Nicht umgekehrt.

Und dann stellt sich natürlich noch die Frage nach der Redundanz. Wie verfügbar muss denn Deine Applikation sein?

Also: Erst Anforderungen hinterfragen, dann Marktsituation evaluieren, dann nach fertigen Lösungen schauen und erst dann überlegen, ob man das selbst baut. :-)
 
Last edited by a moderator:
Vielen Dank für die ausführliche Antwort !
Also an die Anzahl der parallelen Streams bin ich gebunden, das Setup muss 290 - 300 Streams aushalten. Die Zahl der eingehenden Streams wird jedoch mit der Zeit von 1 bis 15 steigen, daher werde ich am Anfang Spielraum haben was den Server angeht.

Was die Kosten eines Streming Anbieters angeht (400€ / Monat), ist das enorm zu viel. Ein Server mit den von dir vorgeschlagenen Eigenschaften kostet 40€ / Monat, mein aktueller 25€ / Monat. Bei so einem Unterschied schreckt mich die Einrichtung nicht ab.

Was die Software angeht, habe ich derzeit einen anderen Thread offen, vielleicht kannst du mir ja einen Tipp geben ? =)

MfG

Daniel
 
Was die Kosten eines Streming Anbieters angeht (400€ / Monat), ist das enorm zu viel. Ein Server mit den von dir vorgeschlagenen Eigenschaften kostet 40€ / Monat, mein aktueller 25€ / Monat. Bei so einem Unterschied schreckt mich die Einrichtung nicht ab.

Keine Ahnung, woher Du einen Dual CPU, 8 Core Server mit 64GB für 40€ bekommst. Ich glaube eher mit dem entsprechenden Traffic liegt ein solcher Server bei mindestens 80€, eher über 100€.

Der Knackpunkt aber ist doch: Du holst Dir den Server, testest Deine Streams (auch nicht ganz so leicht, ein derartiges Setup zu testen) und stellst dann fest, dass die Sache unterdimensioniert ist. Was machst Du dann? Im schlechtesten Fall hast Du einen 12 Monatsvertrag an der Backe.

Es gibt durchaus einige Anbieter, die nicht nur fertige Pakete, sondern maßgeschneiderte Server anbieten. Das wäre in Deinem Spezialfall sicher sinnvoll, idealerweise kann man mit dem Anbieter sogar den Server so lange upgraden/aufrüsten, bis die Sache stabil läuft. Das kostet allerdings auch etwas Geld, dafür hockt man dann nicht mit einer Kiste da, die in die falschen Hardwareparameter investiert hat, dafür das was man braucht nicht bietet.
 
Last edited by a moderator:

Das geht aber nicht zusammen. Und natürlich ist auch der Server völliger Käse für diesen Zweck.

1. Dir ist schon klar, dass das eine Intel ATOM CPU ist??? :eek: Und den willst Du für einen Streamingserver verwenden? Nie im Leben! Das Ding ist nicht so schnarchlangsam wie ein Netbook Atom, aber ein vernünftiger, aktueller Desktop Intel Prozessor mit 4 Kernen oder ein vergleichbarer Xeon kommt auf die DREIFACHE Performance!! Ganz zu schweigen von ZWEI derartigen Prozessoren, wie NeoLeMarc und ich meinten.

2. Dir ist auch klar, dass die 1 TB Raid6 nicht lokal im Server verbaut sind, sondern in einem Storage Cluster? Die Latenz dürfte nicht wirklich berauschend sein.

3. Du hast eine garantierte Peakbandbreite von 500Mbit. Das reicht bei 6Mbit/s für einen HD Stream grade mal für 83 parallele Streams nach außen. Und nun ist das nur "Peak" Bandbreite. D.h. Du hast die nicht immer zur Verfügung. Realistischerweise reden wir hier eher von einer 10Gbitanbindung, wenn wirklich die 300 Streams erreicht werden sollen.
 
Last edited by a moderator:
1. Das das eine Atom vergleichbare CPU ist hatte ich nicht gewusst, aber auch 100€ / Monat für einen ordentlichen Server sind nichts gegen die Preise die mir Streaming Anbieter in etwa für dieses Projekt mitgeteilt haben (400 - 500€ / Monat). Dann weiß ich ja jetzt in etwa bescheid welche Konfiguration angemessen ist und suche mir nach der Softwarewahl einen vernünftigen Server.

2. Natürlich aber ich brauche auch keinen "Speicherplatz". Die Streams werden nicht gespeichert, es ist live. Dafür sollte das nicht relevant sein.

3. Meine Streams haben maximal 1Mbit/s (Audio + Video)


MfG

Daniil
 
Last edited by a moderator:
Hi,

deine Anforderungen passen nicht zu Deinem Budget. Du möchtest Realtime-Streaming von Daten im Gigabit Bereich, schaust aber nach Consumer Grade Servern. Was ich vorgeschlagen habe, war etwas in dieser Größenordnung:

http://www.hetzner.de/hosting/produkte_rootserver/dx290

oder so was:

http://hosting.1und1.de/server-dedi...ted-server&linkId=ct.btn.server-dedicated-xxl

oder das hier (Level 9):

http://www.strato.de/linux-root-server/#features

oder bei dem von Dir vorgeschlagenen Hoster:

http://www.webtropia.com/de/root-se...-xeon-e5-root-server-details.html?pid=XEONE5L

und davon dann 2 Stück.

Und selbst bei diesen Angeboten sind teilweise nur 100-200MBit/sec garantiert. Wahrscheinlich kommst Du gar nicht drumherum, mehrere Server anzumieten um den Traffic überhaupt aus dem Rechenzentrum zu bekommen.

Du bist mit den (Bandbreiten-)Anforderungen definitiv nicht mehr im Consumer Bereich. Und wie gesagt, denk mal über die Traffic Planung und Multicast nach. So lange Du nicht in etwas weißt, von welchem Provider Deine Anwender kommen und wie gut die Anbindung von Deinem Provider zu dem ISP der Anwender ist, hast Du gute Chancen, mit dem Resultat richtig unglücklich zu werden.

Ich bleib dabei: Bevor ich so etwas selber bauen würde, würde ich erst mal Angebote von Experten in dem Bereich einholen. Das Ergebnis wird wahrscheinlich besser und deutlich billiger.
 
Ich bleib dabei: Bevor ich so etwas selber bauen würde, würde ich erst mal Angebote von Experten in dem Bereich einholen. Das Ergebnis wird wahrscheinlich besser und deutlich billiger.

Auch meine Meinung. V.a. kann man das dann skalieren (lassen) und muss nicht am Anfang überdimensionieren. Und am Schluß des Ausbaus ist man dann unterdimensioniert unterwegs.
 
Aus der Erfahrung raus kann ich dir folgendes Sagen:

Unsere Infrastruktur für 350 gleichzeitige Stream mit je 1Mbit/sec:
2 x Wowza Mediaserver, davon einer bei Hetzner mit 32 GB RAM und einer bei Serverloft in LA als Loadbalancer. Dabei agiert der bei Hetzner als Origin und Loadbalancer, als auch als Edge Server. Der in LA ist nur ein Edge Server, welcher sich das Signal vom Hetznerserver holt.

Zwar streamen wir nur HLS und HDS Streams, jedoch haben auch diese Spietzen bei 1Mbit, gerade wenn viel am Bild geändert wird. Also kommen wir mit den 200Mbit garantiert hin. 1 Mbit rein und bei vernünftigem Loadbalancing (dafür gibt es ein Script von Wowza) 175 MBit pro Maschine raus.

Den Traffic unterschätzt man sehr schnell. Aber das lässt sich ausrechnen.

Was auch noch eine Möglichkeit wäre: Ein Content delivery Network wie Amazon Cloud Front zu nutzen, da hier Daten gecached werden können. Zwar wird man dann nie die genaue Anzahl an Zusehern herausfinden, da nicht jeder User eine Verbindung zum Server hat. Teilweisen werden eben über das CDN die Streams gecacht. Hier ist es dann allerdings so, dass man pro gesendetem GB zahlt, was die Kosten schnell in die Höhe treiben kann.

Das RAM-Problem des Wowza haben wir so nicht beobachtet. Klar braucht er mehr wieder Adobe, liegt wohl am Java. Allerdings lässt sich dieser wesentlich einfacher konfigurieren.

Ich würde persönlich auf RTMP Streams verzichten, da diese zum einen nicht gecacht werden können, zum anderen bei gleicher Qualität mehr Traffic entsteht.
 
Back
Top