
著名的云托管服务商DigitalOcean最近收购了拥有现成映像的商店,您可以从中快速部署任何应用程序服务器。 就像AWS一样,对于已经使用此提供程序服务的用户,只能这样做。 让我们看看如何拥有一个DO帐户,如何以每月10美元的价格部署一个简单的服务器,用于基于Flashphoner WebCallServer的流式WebRTC,以及这样的服务器如何有用。
部署方式
我们在DO上输入帐户,单击指向Flashphoner WebCallServer图像的链接,然后单击“创建Flashphoner Web Call服务器Droplet”按钮

我们选择北方的特点和关税计划。 默认情况下,DO将为我们提供中端产品,但我们对最低成本感兴趣

选择数据中心所在的区域,例如,法兰克福

选择一种身份验证方法,例如一次性密码

我们指出服务器的数量(到目前为止,我们对一台服务器感兴趣),并为我们的服务器命名。 该名称将被写成,包括在/ etc / hostname中
点击“创建小滴”

创建后,服务器将自动启动。 您可以通过SSH连接到它,如果选择了一次性密码作为身份验证方法,请更改密码。 带有文档链接的Flashphoner WebCallServer的简短描述将显示在控制台中

“这是一个测试。我可以看到你吗?”
Flashphoner WebCallServer完全启动即可投入使用,并会自动激活30天的试用许可证。 要测试所有基本功能,请使用Web界面,我们仅限于检查WebRTC流的发布和回放。
打开浏览器页面https:// droplet_ip:8444 / admin / 。 默认情况下,服务器随附一个自签名证书,因此您必须确认安全异常。 将来,您可以使用自己的证书替换证书。 输入用户名和密码(默认演示 )

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

几美元
什么是服务器,每月收费10美元,可以用作WebRTC流媒体的硬件平台? 让我们看看DigitalOcean处理器为我们提供了什么
lscpu

并从内存中
free -h

通过负载测试检查服务器,我们发现服务器可能没有那么小。
例如,我们将发布一个流实例,并查看有多少订户可以同时丢失此流,而不占用处理器的90%:
在同时发布多个数据时,已处理流的最大数量保持在同一级别:如果发布7个流,每个流最多可以订阅10个查看器。
假设我们需要对服务器上的流进行转码,以降低分辨率或对齐FPS。 在这种情况下,请检查最大出版物数:
因此,DO上具有1个CPU内核,2 Gb RAM,每月2 TB流量参数的最低成本服务器不仅适合于测试WebRTC流,而且还适用于小型项目。 例如,您可以:
- 通过WebRTC分发来自IP摄像机的流,以实现最简单的公司视频监控;
- 为小公司的员工组织一次网络研讨会
- 提高您的Internet广播(音频流需要更少的CPU资源)
此外,该服务器可以视为扩展计算的参考平台,我们将继续这样做。
“我应该得到更多!”
通常,规则非常简单:内核不多,内存也不多。 根据计划的订户数量,DO提供的一组配置建议如下:
如果您打算进一步发展,则必须以1台边缘服务器的速度为2000个订户部署CDN。 假设我们需要分发高清视频,则观看者的计划数量为10,000,在这种情况下,您需要2台Origin服务器发布和5台Edge服务器观看。

设置示例:
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
- 边缘1-边缘5(仅
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
如果订阅者按地理位置分布,例如,我们潜在的观众居住在欧洲和美洲,那么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
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
观众越多,播放设备和这些设备的频道种类就越多。 为了确保广播到各种设备的质量,很可能需要视频转码,可以将其分配给特殊的CDN转码器服务器。

设置示例:
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
正如我们在测试中所发现的那样,对于转码而言,处理器内核的数量很重要。 从CPU优化的配置线来看,最昂贵的32 vCPU,64 Gb RAM是最合适的。 同时,在其他方面,CPU数量接近大量内存的配置可能会变得更加昂贵。 不幸的是,节省代码转换器是行不通的:由于视频是逐帧编码的,因此应该有足够的内存用于所有图片,以及用于处理所有流的处理器。
部署CDN时,同时创建多台具有相同配置的服务器非常有用。 但是,对于地理上分散的CDN,相同类型的Edge和Transcoder服务器将需要位于不同的数据中心中。
结论
因此,我们在DigitalOcean上部署并测试了一个小型服务器,用于以低延迟流式传输WebRTC视频,确保最低配置的服务器不仅适用于测试,还适用于小型项目,我们接收到的数据将根据预期的观看者数量进行缩放,并涉及CDN部署的主题,该主题本身值得单独撰写。 和我们在一起,待续...
参考文献
DigitalOcean市场上的Flashphoner WebCallServer是DigitalOcean上Web呼叫服务器的预制映像。
低延迟WebRTC流CDN是基于 Web呼叫服务器的内容交付网络。