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/13 20:18] – mazdermind | events:34c3:cdn [2026/07/26 22:17] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| 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. Alle Spuren werden in einem Matroska-Container verpackt. | 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. | ||
| Line 10: | Line 12: | ||
| Das Master-Encoding wird auf den lokalen (= auf dem encoder-cube laufenden) Icecast auf Port 7999 gepusht (http:// | Das Master-Encoding wird auf den lokalen (= auf dem encoder-cube laufenden) Icecast auf Port 7999 gepusht (http:// | ||
| - | === 2. Transcoder | + | ### 2. Transcoder |
| Das Transcoding läuft im CCL auf den Minions 1, 5 und 6 (die Minions der neusten Generation). Dabei sind die Räume wie folgt auf die Minions verteilt: | Das Transcoding läuft im CCL auf den Minions 1, 5 und 6 (die Minions der neusten Generation). Dabei sind die Räume wie folgt auf die Minions verteilt: | ||
| * 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 32: | Line 35: | ||
| Die Pull-Quelle und das Push-Ziel ist über Group-Vars konfigurierbar: | Die Pull-Quelle und das Push-Ziel ist über Group-Vars konfigurierbar: | ||
| - | === 3. Fanout | + | ### 3. Fanout |
| Diese 3 Format-Streams je Raum werden von der nächsten Stufe auf live.lan.c3voc.de in die finalen Streams in allen für Endnutzer angebotenen Kombinationen auseinander gemuxt (=" | Diese 3 Format-Streams je Raum werden von der nächsten Stufe auf live.lan.c3voc.de in die finalen Streams in allen für Endnutzer angebotenen Kombinationen auseinander gemuxt (=" | ||
| Line 45: | Line 48: | ||
| Zu dne Aufgaben der fanout-Scripte gehört auch das übermitteln des h264-Videostroms zu Youtube. Die Stream-Keys dazu kommen aus dem KeePass, die Scripte aus dem oben verlinkten Git-Repo. | Zu dne Aufgaben der fanout-Scripte gehört auch das übermitteln des h264-Videostroms zu Youtube. Die Stream-Keys dazu kommen aus dem KeePass, die Scripte aus dem oben verlinkten Git-Repo. | ||
| - | === 4. Transport- und Edge-Nodes | + | ### 4. Transport- und Edge-Nodes |
| Die (Non-Public) Transport-Nodes ziehen alle Daten via Icecast oder nginx-Proxy-Konfiguration von live.lan.c3voc.de. Die (Public) Edge-Nodes ziehen ihre Daten von den jeweiligen Transport-Nodes. | Die (Non-Public) Transport-Nodes ziehen alle Daten via Icecast oder nginx-Proxy-Konfiguration von live.lan.c3voc.de. Die (Public) Edge-Nodes ziehen ihre Daten von den jeweiligen Transport-Nodes. | ||
| - | == 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): | ||
| - | == TLS | + | 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 | ||
| 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: ''/ |
| - | == Relay-Register | + | Anschließend muss das neue Cert auf alle LBs und Relays ausgerollt werden: |
| - | Das Relay-Register ist hier zu finden: https:// | + | < |
| + | ./ | ||
| + | </ | ||
| + | |||
| + | ## 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/ | 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, | ||