Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
events:34c3:cdn [2017/12/10 12:19] – youtube mazdermind | events:34c3:cdn [2018/07/19 01:55] (current) – meise | ||
---|---|---|---|
Line 1: | Line 1: | ||
= 34C3 CDN | = 34C3 CDN | ||
+ | < | ||
+ | |||
== Architektur | == Architektur | ||
Die CDN-Kaskade hat 4 Stufen | Die CDN-Kaskade hat 4 Stufen | ||
=== 1. Master-Encoder | === 1. Master-Encoder | ||
- | Das Master-Encoding entsteht auf dem encoder-cube im Saal aus dem Ausgabesignal des Voctomix. Das Master-Encoding enthält den Mix als 1080p25 in h264 sowie die Slides als 1080p5 in h264 sowie aac von allen 3 Audiospuren. | + | Das Master-Encoding entsteht auf dem encoder-cube im Saal aus dem Ausgabesignal des Voctomix. Das Master-Encoding enthält den Mix als 1080p25 in h264 sowie die Slides als 1080p5 in h264 sowie aac von allen 3 Audiospuren. Alle Spuren werden in einem Matroska-Container verpackt. |
Das Master-Encoding wird von einem Script erzeugt, welches vom ansible aus folgendem Template erzeugt wird: https:// | Das Master-Encoding wird von einem Script erzeugt, welches vom ansible aus folgendem Template erzeugt wird: https:// | ||
Line 14: | Line 16: | ||
* minion1: s1 | * minion1: s1 | ||
* minion2: s2 | * minion2: s2 | ||
- | * minion3: s3 & s4 | + | * minion3: s3 |
+ | * minion-muc: | ||
Diese Verteilung wird über Host-Attribute im cm geregelt: https:// | Diese Verteilung wird über Host-Attribute im cm geregelt: https:// | ||
Line 50: | Line 53: | ||
== Testdaten | == Testdaten | ||
Streamdump des mkv-multiformat-Streams wie ihn die encoder produzieren werden (mit 2 Video und 3 Audiospuren): | Streamdump des mkv-multiformat-Streams wie ihn die encoder produzieren werden (mit 2 Video und 3 Audiospuren): | ||
+ | |||
+ | Für den Teststream vor dem Congress (Codename '' | ||
+ | |||
+ | Alle bereitgestellten Test-URLs lauten: | ||
+ | === VPx-HD: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === VPx-SD: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === VPx-Slides: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === h264-HD: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === h264-SD: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === h264-Slides: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === h264-Multi-Qualits: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === WebM Multi-Qualität + Multi-Lang | ||
+ | * http:// | ||
+ | |||
+ | === Audio-MP3: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | === Audio-Opus: | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | <note important> | ||
+ | -> https:// | ||
+ | |||
+ | auf speedy.lan.c3voc.de: | ||
+ | < | ||
+ | sudo systemctl stop transcode_sX.target | ||
+ | sudo systemctl disable transcode_sX.target | ||
+ | </ | ||
+ | |||
+ | auf live.ber.c3voc.de: | ||
+ | < | ||
+ | sudo systemctl stop fanout_sX.target | ||
+ | sudo systemctl disable fanout_sX.target | ||
+ | |||
+ | screen -rd source-for-teststream | ||
+ | :quit | ||
+ | </ | ||
+ | </ | ||
+ | |||
== TLS | == TLS | ||
Die Zertifikate für TLS auf allen Hosts kommt von // | Die Zertifikate für TLS auf allen Hosts kommt von // | ||
- | Wir wollen versuche ein Zertifikat mit allen Domain-Namen aller Edge-Relays zu erzeugen. Dazu wollen wir die DNS-Basierte Authorisierungsmethode verwenden. | + | Wir wollen versuche ein Zertifikat mit allen Domain-Namen aller Edge-Relays zu erzeugen. Dazu wollen wir die DNS-Basierte Authorisierungsmethode verwenden. Es gibt dazu im Homedir von **mngslave.dus.c3voc.de** ein Script, welches **ein Zertifikat** für alle relevanten CDN-Domains generiert: ''/ |
+ | |||
+ | Anschließend muss das neue Cert auf alle LBs und Relays ausgerollt werden: | ||
+ | < | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | == Relay-Register | ||
+ | Das Relay-Register ist hier zu finden: https:// | ||
+ | |||
+ | Alle Relays melden sich (bzw. werden via Script) beim Relay-Register angemeldet. Dort kann ihnen ein Platz in der Relay-Kaskade zugewiesen werden (z.B. welcher Host ihr Upstream ist) und ob sie nur ICecast, nur HLS oder beide anbieten sollen. Aus dem Relay-Register werden Konfigurationsdateien erzeugt, die von Ansible gelesen und in haproxy/ | ||
+ | |||
+ | == Externe Quellen | ||
+ | Die Streams der Externe Quellen werden komplett über eine eigene Kiste angewickelt ('' | ||
+ | |||
+ | Die Scripte dazu werden aus den gleichen Templates wie die der Haupträume erstellt, aber mit weniger Audiospuren und ohne Slide-Stream. | ||
+ | Alle Fanout und Transcoding-Scripte werden per cm angelegt. Zusätzlich wird jeweils ein Ingesting-Script angelegt das aber **by-default deaktiviert** ist. Das ingesting mus manuell überprüft und ggf. angepasst werden. Dazu werden auf dem og. Server Dateien in der Art von `/ | ||
+ | |||
+ | Folgende weiterführende Dokumentation im Wiki: | ||
+ | * Anweisungen und Dokumentation für Externe Betreiber: https:// | ||
+ | * InterneDokumentation der Abstimmung mit den Betreibern: https:// | ||
+ | |||
+ | == Unerwartet geschlossene Verbindungen auf *.alb.c3voc.de | ||
+ | Es gibt ein Problem mit dem Router (Juniper?) im Alboin, welches **dellinger.alb.c3voc.de** und dessen VMs, insbesondere **live.alb.c3voc.de** und **lb.alb.c3voc.de** betrifft. | ||
+ | Dagegen hilft die erratischen ICMP-Messages mit iptables zu unterdrücken: | ||
+ | < | ||
+ | sudo iptables -I INPUT 1 -s 185.106.84.33/ | ||
+ | </ | ||
+ | |||
+ | Die Regel ist jetzt auch mit allen anderen IP-Adressen, |