DigitalOcean上基于云的WebRTC流


流行的云托管DigitalOcean最近启动了其新市场,销售预配置的映像,这些映像可以帮助快速部署应用服务器。 这很像AWS,但DO适用于已经使用此提供程序服务的用户。 让我们看看如何基于Flashphoner WebCallServer部署一个简单的服务器用于WebRTC流,并带有DO帐户,每月收取10美元的费用,以及如何使用这种服务器。


部署方式


输入DO帐户,在Marketplace中选择Flashphoner WebCallServer图像,然后按“创建Flashphoner Web呼叫服务器Droplet”。



选择服务器性能和定价计划。 DO会自动提供中端产品,但我们对最低价格感兴趣。



选择数据中心位置区域,例如,法兰克福。



选择身份验证类型,例如一次性密码。



指定服务器数量(我们现在对一台服务器感兴趣)并命名服务器。 该名称将在/ etc / hostname中的其他位置中注册。



按“创建小滴”



创建服务器后,它将自动启动。 现在,我们可以通过SSH连接到它,如果选择了一次性密码作为身份验证方法,则可以修改密码。 控制台中将显示Flashphoner WebCallServer的简短说明以及文档链接。



“这是一个考验。你能看到我吗?”


在Flashphoner WebCallServer启动时,它已处于完全就绪状态,可以自动激活30天的试用许可证。 Web界面用于测试关键功能。 我们将只检查发布和WebRTC流的回放。


在浏览器中打开以下页面:https:// droplet_ip:8444 / admin / 。 默认情况下,服务器随附自签名证书; 因此,我们需要确认安全异常。 以后可以用您自己的证书替换证书。 输入用户名和密码(默认为demo )。



在边栏中选择双向流示例,按“连接”,然后按“发布”。 要播放流,请按“播放”。



几美元


一个每月10美元的服务器可以用作WebRTC流的硬件平台吗? 让我们看看Digital Ocean在处理器方面提供了什么


lscpu 


和记忆


 free -h 


通过在服务器上运行负载测试,我们可以看到服务器的性能不是那么小。


作为示例,我们将发布一个流样本,并查看有多少用户能够同时发布该流,但不会超过处理器资源的90%:


解像度比特率Kbps出版物数量观众人数
360p13001个70
480p18001个70
720p30001个50

在同时发布多个出版物的情况下,已处理流的最大数量保持不变; 当发布7个视频流时,每个流媒体最多可以订阅10个观众。


假设我们需要对服务器上的流进行转码,以降低分辨率或对齐FPS。 为此,我们将检查最大出版物数量:


解像度比特率Kbps流数
360p13005
480p18003
720p30002

以这种方式,具有1 CPU内核,2 Gb RAM和2 TB流量参数的DO最低价格的服务器不仅适合于测试WebRTC流,而且适合于小型项目。 例如,可以


  • 通过WebRTC从IP摄像机提供流,以确保基本的内部视频监控;
  • 为小型公司员工举办网络研讨会;
  • 部署自己的互联网无线电(音频流需要更少的处理器资源)。

此外,该服务器可以作为规模估算的参考平台。 这是我们将进一步处理的。


“我应该得到更多!”


在大多数情况下,规则很简单:没有太多的内核以及太多的内存。 根据预期的用户数量,DO配置建议如下:


用户数虚拟CPU内存,Gb流量,TB用例
高达200485视频监控系统
高达5008166网络研讨会
高达100016649视像通讯
高达2000209610高清视频流

如果计划进一步增加用户数量,我们将需要为每2000个用户部署CDN投影1台边缘服务器。 假设我们需要交付高清视频,则观看者的预期数量为10000。在这种情况下,将需要2个用于发布的Origin服务器和5个用于观看的Edge服务器。



设置示例:


  • 起源1

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

  • 起源2

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

  • Edge 1-Edge 5(此处我们仅更改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 

如果用户在地理位置上分散,CDN也可以使用。 例如,我们的目标受众位于欧洲和美洲。



设置示例:


  • 欧盟原产地

 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 

  • 优势1欧盟

 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美国

 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 

观看者数量越多,用于回放的设备和这些设备的频道就越多样化。 为了向各种设备提供良好的广播质量,很可能需要对视频进行转码,并将其强加到特殊的转码器服务器上。



设置示例:


  • 原产地

 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 

  • 优势1欧盟

 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 

正如我们在测试期间发现的那样,处理器核心的数量对于代码转换至关重要。 CPU优化的配置线中最合适的配置是最昂贵的一个-32 vCPU,64 Gb RAM。 同时,数量相似且其他行中的内存更大的CPU配置的价格可能会高得多。 不幸的是,人们并没有在转码器上省钱:由于视频是逐帧编码的,因此必须有足够的存储空间来存储所有图像和足够的处理器来处理所有流。


在CDN部署期间,同时创建具有相同配置的多台服务器将很有用。 但是,在CDN地理位置分散的情况下,相同类型的Edge和Transcoder服务器将需要托管在不同的数据中心中。


结论


总而言之,我们已经在Digital Ocean上部署并测试了用于低延迟WebRTC视频流的小型服务器,并且发现配置最少的服务器不仅适合于测试,而且还适合于小型项目。 我们已经根据预期的观众数量获得了缩放数据,并涉及了CDN部署的主题,因此值得在单独的文章中进行讨论。 要继续,请与我们在一起。



DigitalOcean Marketplace中的Flashphoner WebCallServer图像-DigitalOcean中的Web Call Server图像。


CDN用于低延迟WebRTC流 -基于Web呼叫服务器的内容传递网络。

Source: https://habr.com/ru/post/zh-CN476554/


All Articles