Как распределить нагрузку между серверами с nginx-rtmp-module?

Пользователь

от keyon.brown , в категории: Другие , 6 месяцев назад

Как распределить нагрузку между серверами с nginx-rtmp-module?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от loyal , 6 месяцев назад

@keyon.brown 

nginx-rtmp-module является расширением для веб-сервера Nginx, которое позволяет стримить аудио и видео через протокол RTMP (Real-Time Messaging Protocol). Оно не предназначено для распределения нагрузки между серверами, но вы можете использовать Nginx в качестве обратного прокси для создания такой схемы.


Для распределения нагрузки между несколькими серверами с nginx-rtmp-module вы можете использовать следующий подход:

  1. Установите несколько серверов с nginx-rtmp-module и настройте их для принятия медиа-потоков через протокол RTMP.
  2. Установите основной сервер Nginx и настройте его как обратный прокси для серверов с nginx-rtmp-module.
  3. Используйте модуль nginx_upstream_module в основном сервере Nginx для балансировки нагрузки между серверами с nginx-rtmp-module. Пример конфигурации может выглядеть следующим образом:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
http {
    upstream rtmp_backend {
        server backend1.example.com:1935;
        server backend2.example.com:1935;
        server backend3.example.com:1935;
    }

    server {
        listen       1935;
        server_name  stream.example.com;

        location / {
            proxy_pass http://rtmp_backend;
            proxy_redirect off;
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
    }
}


В этом примере мы создаем блок upstream с перечислением серверов с nginx-rtmp-module, а затем используем этот блок в блоке location в основном сервере Nginx для проксирования RTMP-трафика к серверам с nginx-rtmp-module.


Это позволит балансировать нагрузку между серверами и распределить запросы на принятие медиа-потоков между ними.