Cloud WebRTC Streaming na DigitalOcean


A famosa nuvem que hospeda o DigitalOcean adquiriu recentemente sua própria loja com imagens prontas, das quais você pode implantar rapidamente qualquer servidor de aplicativos. Assim como a AWS, apenas DO, para aqueles que já usam os serviços desse provedor. Vamos ver como, com uma conta DO, implantar um servidor simples por US $ 10 por mês para transmitir WebRTC com base no Flashphoner WebCallServer, e como esse servidor pode ser útil.


Implantação


Entramos na conta no DO, seguimos o link para a imagem do Flashphoner WebCallServer e clique no botão "Criar gota de servidor do Flashphoner Web Call Server"



Selecionamos as características do norte e o plano tarifário. Por padrão, o DO nos oferece algo do segmento intermediário, mas estamos interessados ​​no custo mínimo



Escolha a região onde o data center está localizado, por exemplo, Frankfurt



Escolha um método de autenticação, por exemplo, uma senha descartável



Indicamos o número de servidores (até agora estamos interessados ​​em um servidor) e atribuímos um nome ao servidor. Este nome será escrito, incluindo, em / etc / hostname



Clique em "Criar gota"



Após a criação, o servidor será iniciado automaticamente. Você pode conectar-se a ele via SSH e, se uma senha descartável foi selecionada como método de autenticação, altere a senha. Uma breve descrição do Flashphoner WebCallServer com links de documentação será exibida no console



"Este é um teste. Posso te ver?"


O Flashphoner WebCallServer inicia completamente pronto para o trabalho, uma licença de avaliação de 30 dias é ativada automaticamente. Para testar todas as funções básicas de uma interface da web, nos restringimos a verificar a publicação e a reprodução do fluxo do WebRTC.


Abra a página do navegador https: // droplet_ip: 8444 / admin / . Por padrão, um certificado autoassinado é fornecido com o servidor, portanto você precisará confirmar a exceção de segurança. No futuro, você pode substituir os certificados pelos seus. Digite o nome de usuário e a senha ( demonstração padrão)



Selecione o exemplo de transmissão bidirecional na barra lateral, clique no botão "Conectar" e depois em "Publicar". Para reproduzir o fluxo, clique em "Reproduzir"



Por um punhado de dólares


O que é um servidor com capacidade de US $ 10 por mês capaz de ser uma plataforma de hardware para streaming WebRTC? Vamos ver o que o processador DigitalOcean nos oferece


lscpu 


e de memória


 free -h 


Verificando o servidor com testes de carga, vemos que o servidor pode não ser tão pequeno.


Por exemplo, publicaremos uma instância de fluxo e veremos quantos assinantes podem perder esse fluxo simultaneamente, ocupando não mais que 90% do processador:


PermissãoTaxa de bits, KbpsNúmero de publicaçõesNúmero de assinantes
360p1300170
480p1800170
720p3000150.

Com várias publicações simultâneas, o número máximo de fluxos processados ​​permanece no mesmo nível: se você publicar 7 fluxos, até 10 visualizadores poderão se inscrever em cada um.


Digamos que precisamos transcodificar o fluxo no servidor para reduzir a resolução ou alinhar o FPS. Nesse caso, verifique o número máximo de publicações:


PermissãoTaxa de bits, KbpsNúmero de threads
360p13005
480p18003
720p30002

Portanto, um servidor de custo mínimo no DO com parâmetros de 1 núcleo de CPU, 2 Gb de RAM, 2 TB de tráfego por mês é adequado não apenas para testar o fluxo WebRTC, mas também para uso em pequenos projetos. Por exemplo, você pode:


  • distribuir via WebRTC o fluxo da câmera IP para a vigilância por vídeo corporativa mais simples;
  • organizar um webinar para funcionários de uma pequena empresa
  • aumentar seu rádio na Internet (o fluxo de áudio requer menos recursos da CPU)

Além disso, este servidor pode ser considerado como uma plataforma de referência para cálculos de escala, o que continuaremos a fazer.


"Eu mereço mais!"


As regras, em geral, são muito simples: não há muitos núcleos e a memória também. Dependendo do número planejado de assinantes, as recomendações do conjunto de configurações oferecidas pelo DO serão as seguintes:


Número de assinantesvCPUsRAM, GbTráfego, TBExemplo de uso
até 200485Sistema de vigilância por vídeo
até 5008166Webinars
até 100016649Bate-papo por vídeo
até 2000209610Streaming de vídeo em HD

Se você planeja crescer ainda mais, precisará implantar uma CDN na taxa de 1 servidor de borda para 2000 assinantes. Suponha que precisamos distribuir vídeo HD, o número planejado de visualizadores é 10.000.Nesse caso, você precisa de 2 servidores Origin para publicar e 5 servidores Edge para visualizar.



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 (somente o endereço do servidor no parâmetro cdn_ip é 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 

Uma CDN também pode ser útil se os assinantes estiverem geograficamente distribuídos, por exemplo, nossos espectadores em potencial moram 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 mais espectadores, maior a variedade de dispositivos e canais de reprodução para esses dispositivos. Para garantir a qualidade da transmissão para vários dispositivos, provavelmente, será necessária a transcodificação de vídeo, que pode ser atribuída a servidores especiais do Transcoder CDN.



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 

Para transcodificação, como descobrimos durante o teste, o número de núcleos do processador é importante. Da linha de configuração otimizada para CPU, a RAM mais cara de 32 vCPU e 64 Gb é a mais adequada. Ao mesmo tempo, em outras linhas, as configurações com uma grande quantidade de memória próxima ao número de CPUs podem ser significativamente mais caras. Infelizmente, salvar em transcodificadores não funcionará: como o vídeo é codificado quadro a quadro, deve haver memória suficiente para todas as imagens e processadores para processar todos os fluxos.


Ao implantar uma CDN, é útil criar vários servidores da mesma configuração ao mesmo tempo. No entanto, para CDNs distribuídas geograficamente, o mesmo tipo de servidor Edge e Transcoder precisará estar localizado em diferentes datacenters.


Conclusão


Por isso, implantamos e testamos um pequeno servidor para transmitir vídeo WebRTC com baixa latência no DigitalOcean, garantimos que o servidor na configuração mínima seja adequado não apenas para testes, mas também para uso em pequenos projetos, recebemos dados para dimensionamento, dependendo do número esperado de espectadores, e abordou o tópico da implantação da CDN, que por si só merece um artigo separado. Fique conosco, para continuar ...


Referências


O Flashphoner WebCallServer no DigitalOcean Marketplace é uma imagem pré- criada do Web Call Server na DigitalOcean.


A CDN de streaming WebRTC de baixa latência é uma rede de entrega de conteúdo baseada em servidor de chamadas da Web.

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


All Articles