Nginx-rtmp-module Como nós de aresta puxam fluxos de nós multi-mestre

1

Eu tenho um servidor mestre de entrada e vários nós de borda que cada um puxa do servidor de entrada. Mas agora eu tenho 10000 câmeras push streams para master ingest server, estou com medo de não conseguir lidar com isso. Então eu planejo adicionar mais servidores de ingest de mestre (com LoadBalancer LVS para lidar com qual servidor de ingresso mestre essas câmeras enviarão stream para). Mas com mais de um servidor mestre de entrada, como os nós de borda puxam todos esses fluxos. Eu também testo opção de puxar no nó de borda como este

application live {
   notify_method get;
   idle_streams off;
   pull rtmp://master_server_1/live live=1;
   pull rtmp://master_server_2/live live=1;
}

Mas apenas envia stream a partir do master_server_1. Algum conselho? Obrigado

Btw, eu acho que não preciso de mais servidor mestre, apenas atualize a largura de banda. Está certo ? Obrigado

    
por user3500294 23.02.2016 / 04:51

1 resposta

0

Você pode ter um registro DNS resolvido para vários servidores de origem - não apenas você poderia usá-lo para balanceamento de carga DNS round robin simples, como também seria a maneira como você teria o nginx-rtmp de várias origens. / p>

Depois de um certo ponto, faz sentido ter mais de um servidor de ingestão. Outras considerações práticas de lado, dá-lhe mais confiabilidade. Com apenas um servidor, você tem um único ponto de falha.

Fonte: link

NOTA # 1: O NGINX armazena em cache as resoluções DNS até que seja reiniciado. Se você espera que os IPs mudem (estou usando um AWS ELB, então eles mudam muito), você precisará mexer com o resolvedor de DNS no NGINX ou usar a diretiva exec_pull em combinação com o ffmpeg.

NOTA # 2: Todos os nós sendo puxados devem ter os mesmos fluxos. Não tem como saber se um determinado fluxo existe na origem ou não. Ele usará a primeira origem disponível (conexão inteligente).

Se você quiser ter origens com conjuntos separados de fluxos (faz sentido dimensionar), você terá que gerenciar isso em sua extremidade. Eu resolvi isso usando um algoritmo de hashing consistente para mapear fluxos para clusters de vídeo diferentes, espalhando a carga ao redor. Por exemplo: os fluxos publicados para a origem "1" só podem ser reproduzidos em bordas retiradas da origem "1". A implementação de tal sistema deve estar na sua camada de aplicação.

    
por 20.09.2016 / 00:25