39 lines
1.6 KiB
Markdown
39 lines
1.6 KiB
Markdown
# 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
|
|
|
|
```mermaid
|
|
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.
|