streaming-cdn/README.md
2020-07-25 16:59:00 +02:00

1.6 KiB

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

  1. 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.
  2. URLs der Nodes in die Liste eintragen.

Node

  1. node.conf kopieren und nginx.conf damit ersetzen.
    • ggf. auch server-name, ssl-certs und port ändern.
  2. Streaming-server ändern.
  3. /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.