
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:
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:
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:
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:
cdn_enabled=true cdn_ip=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin
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:
cdn_enabled=true cdn_ip=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=EU
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
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
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:
cdn_enabled=true cdn_ip=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=default
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
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.