Config-Dateien für ein Streaming-CDN au Lukas
Im Prinzip einfach nur ein verteiltes serving der ganzen HLS-Dateien, sonst nix besonderes
cdn.nix | ||
load-balancer.conf | ||
node.conf | ||
README.md | ||
streaming-server.conf |
streaming-cdn
Config-Dateien für ein Streaming-CDN au Lukas
Im Prinzip einfach nur ein verteiltes serving der ganzen HLS-Dateien, sonst nix besonderes
Gundsätzlicher Aufbau
graph TD;
Viewer-->|request|Load_Balancer;
Load_Balancer-->|ip|Viewer;
Viewer-->|request|Node1;
Node1-->Streaming_Server;
Node2-->Streaming_Server;
Streaming_Server-->|content|Node1;
Node1-->|caching|Node1;
Node1-->|serve cached content|Viewer;
Der Viewer bekommt von dem Load-Balancer eine Node zugewiesen, bei der er dann den Content anfragt, diese cached die HLS Fragmente (nicht das m3u8 Index File) und served diese dann aus dem cache. Der Streaming Server wird damit pro Node jeweils nur einmal getroffen und nicht dauerhaft belastet.
Installation
Load Balancer
- load_balancer.conf in nginx.conf umbenennen und damit nginx.conf ersetzen.
- Ggf. noch aus sicherheitsgründen nen server-name setzen, ssl-certs aktivieren und den port ändern.
- URLs der Nodes in die Liste eintragen.
Node
- node.conf kopieren und nginx.conf damit ersetzen.
- ggf. auch server-name, ssl-certs und port ändern.
- Streaming-server ändern.
/var/cache/hls
und/var/cache/dash
erstellen (mkdir -p
) und dann berechtigungen zum nginx-user ändern (chown -R www-data /var/cache/hls
)
Streaming-Server
Nur eine Beispiel-config, wichtig ist, dass die Files am Ende da geserved werden, wo die Nodes sie erwarten.
Ggf. beim Deployment h264_nvenc in libx264 tauschen, falls keine nvidia-grafikkarte vorhanden.