Config-Dateien für ein Streaming-CDN au Lukas Im Prinzip einfach nur ein verteiltes serving der ganzen HLS-Dateien, sonst nix besonderes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lukas Schulz de16ea4b93 Update cdn.nix 2 years ago
README.md Update README.md 2 years ago
cdn.nix Update cdn.nix 2 years ago
load-balancer.conf Update load-balancer.conf 2 years ago
node.conf Add new file 2 years ago
streaming-server.conf Optimized and fixed idiocy 2 years ago

README.md

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.