Transmissão WebRTC baseada em nuvem no DigitalOcean


Hospedagem em nuvem popular A DigitalOcean lançou recentemente seu novo mercado, vendendo imagens pré-configuradas que podem ajudar a implantar rapidamente um servidor de aplicativos. É muito parecido com o AWS, mas o DO é para aqueles que já usam os serviços desse provedor. Vamos ver como implantar um servidor simples para streaming do WebRTC com uma conta DO por uma taxa de US $ 10 / mês com base no Flashphoner WebCallServer e como esse servidor pode ser útil.


Implantação


Digite a conta DO, escolha a imagem do Flashphoner WebCallServer no Marketplace e pressione "Criar gota do servidor de chamadas da Web do Flashphoner".



Escolha o desempenho do servidor e o plano de preços. O DO oferecerá automaticamente um produto de segmento intermediário, mas estamos interessados ​​no preço mínimo.



Escolha a região de localização do datacenter, por exemplo, Frankfurt.



Escolha o tipo de autenticação, por exemplo, senha descartável.



Especifique o número de servidores (estamos interessados ​​em um servidor por enquanto) e nomeie o servidor. Este nome será registrado entre outros locais em / etc / hostname.



Pressione "Criar gota"



Assim que o servidor for criado, ele será iniciado automaticamente. Agora podemos nos conectar a ele através do SSH e modificar a senha se a senha descartada tiver sido escolhida como método de autenticação. Uma breve descrição do Flashphoner WebCallServer com links para a documentação será exibida no console.



"Este é um teste. Você pode me ver?"


Quando o Flashphoner WebCallServer é iniciado, ele está no modo pronto para o trabalho, uma licença de avaliação de 30 dias é ativada automaticamente. A interface da Web é usada para testar as funções principais. Vamos apenas verificar a publicação e a reprodução do fluxo do WebRTC.


Abra no navegador a página https: // droplet_ip: 8444 / admin / . O servidor é enviado com certificado autoassinado por padrão; portanto, precisaremos confirmar a exceção de segurança. Os certificados podem ser substituídos posteriormente pelos seus. Digite o nome de usuário e a senha ( demo por padrão).



Escolha o exemplo de transmissão bidirecional na barra lateral, pressione "Conectar" e depois "Publicar". Para reproduzir o stream, pressione "Play".



Por um punhado de dólares


O que um servidor de US $ 10 / mês pode fazer como plataforma de hardware para streaming WebRTC? Vamos ver o que a Digital Ocean oferece em termos de processador


lscpu 


e memória


 free -h 


Executando testes de carga no servidor, podemos ver que os recursos de desempenho do servidor não são tão pequenos.


Como exemplo, publicaremos uma amostra de fluxo e veremos quantos usuários poderão publicar esse fluxo simultaneamente, não excedendo 90% dos recursos do processador:


ResoluçãoKbps de taxa de bitsNúmero de publicaçõesNúmero de espectadores
360p1300170
480p1800170
720p3000150.

Com várias publicações simultâneas, o número máximo de fluxos processados ​​permanece o mesmo; quando 7 fluxos são publicados, até 10 espectadores podem se inscrever em cada um.


Suponha que precisamos transcodificar o fluxo no servidor para reduzir a resolução ou alinhar o FPS. Para fazer isso, vamos verificar o número máximo de publicações:


ResoluçãoKbps de taxa de bitsNúmero de fluxos
360p13005
480p18003
720p30002

Dessa maneira, o servidor com o menor preço no DO com os parâmetros 1 núcleo da CPU, 2 Gb de RAM e 2 TB de tráfego é adequado não apenas para testar o fluxo WebRTC, mas também para pequenos projetos. Por exemplo, é possível


  • fornecer um fluxo via WebRTC a partir de uma câmera IP, a fim de garantir vigilância interna por vídeo básica;
  • organizar um webinar para uma equipe de pequenas empresas;
  • implante seu próprio rádio na Internet (os fluxos de áudio requerem menos recursos do processador).

Além disso, este servidor pode ser visto como plataforma de referência para a estimativa de escala. É com isso que trataremos mais adiante.


"Eu mereço mais!"


Na maioria das vezes, as regras são bastante simples: não há muitos núcleos nem muita memória. Dependendo do número pretendido de usuários, as recomendações de configuração do DO serão as seguintes:


Número de usuáriosvCPUsRAM, GbTráfego, TBCaso de uso
até 200485Sistema de vigilância por vídeo
até 5008166Webinars
até 100016649Bate-papo por vídeo
até 2000209610Transmissão de vídeo em HD

Se for planejado um aumento adicional no número de usuários, precisaremos implantar o servidor de borda da CDN que projeta 1 por 2000 usuários. Suponha que precisamos entregar um vídeo em HD, o número pretendido de visualizadores é 10000. Nesse caso, serão necessários 2 servidores Origin para publicação e 5 servidores Edge para visualização.



Exemplo de configuração:


  • Origem 1

 cdn_enabled=true cdn_ip=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • Origem 2

 cdn_enabled=true cdn_ip=origin2.flashponer.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • Borda 1 - Borda 5 (aqui cdn_ip apenas o endereço do servidor no parâmetro cdn_ip )

 cdn_enabled=true cdn_ip=edge1.flashphoner.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge 

A CDN também pode ser útil se os usuários estiverem geograficamente dispersos. Por exemplo, nossos públicos-alvo estão sediados na Europa e na América.



Exemplo de configuração:


  • Origem UE

 cdn_enabled=true cdn_ip=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=EU 

  • Origem EUA

 cdn_enabled=true cdn_ip=origin_us.flashponer.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=US 

  • Edge 1 EU

 cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU 

  • Edge 1 US

 cdn_enabled=true cdn_ip=edge1_us.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=US 

Quanto maior o número de espectadores, mais diversificados são os dispositivos para reprodução e os canais para esses dispositivos. Para fornecer boa qualidade de transmissão para vários dispositivos, provavelmente será necessário transcodificar o vídeo, o que pode ser imposto em servidores especiais de Transcoder.



Exemplo de configuração:


  • Origem

 cdn_enabled=true cdn_ip=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=default 

  • Transcoder EU

 cdn_enabled=true cdn_ip=transcoder_eu.flashponer.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=transcoder cdn_groups=EU 

  • Edge 1 EU

 cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU 

Como descobrimos durante o teste, o número de núcleos do processador é essencial para fins de transcodificação. A configuração mais adequada na linha de configuração otimizada para CPU é a mais cara - 32 vCPU, 64 Gb de RAM. Ao mesmo tempo, os preços para configurações de CPU semelhantes em quantidade e com maior memória em outras linhas podem ser significativamente mais altos. Infelizmente, não é possível economizar dinheiro com transcodificadores: como o vídeo é codificado quadro a quadro, é preciso haver espaço de memória suficiente para todas as imagens e processadores suficientes para processar todos os fluxos.


Durante a implantação da CDN, a criação simultânea de vários servidores com a mesma configuração será útil. No entanto, no caso de servidores Edge e Transcoder do mesmo tipo CDN dispersos geograficamente, será necessário hospedar-se em diferentes datacenters.


Conclusão


Para concluir, implantamos e testamos um servidor pequeno para streaming de vídeo WebRTC de baixa latência na Digital Ocean e descobrimos que um servidor com configuração mínima é adequado não apenas para testes, mas também para pequenos projetos. Obtivemos os dados de dimensionamento dependendo do número pretendido de visualizadores e abordamos o assunto da implantação da CDN, que, como tal, merece ser discutida em um artigo separado. Para continuar, por favor, fique conosco.



Imagem do Flashphoner WebCallServer no DigitalOcean Marketplace - imagem do Web Call Server no DigitalOcean.


CDN para streaming WebRTC de baixa latência - rede de entrega de conteúdo baseada em Web Call Server.

Source: https://habr.com/ru/post/pt476554/


All Articles