首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动缩放RTMP活动流(NGINX-RTMP)

自动缩放RTMP活动流(NGINX-RTMP)
EN

Server Fault用户
提问于 2015-05-23 11:26:57
回答 2查看 12.5K关注 0票数 2

我正在使用模块进行直播。它完美地工作在一台机器上的40-50台相机上(AWS EC2 C3-大型)。但是,如果我有100多个流,我如何才能缩放我的服务器以满足需求?

我试过使用ELB,但是一旦新机器启动,它就会终止连接,并且在启动新机器之后,它会以循环方式发送传入请求。我想要的是以下内容。

  1. 当系统CPU利用率达到80%时,启动一台新服务器,但保持现有连接的活力。
  2. 只有当第一台服务器的CPU利用率> 80%时,才向新创建的服务器发送新请求。(没有循环罗宾)

我怎样才能做到这一点?谢谢您抽时间见我。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2015-05-29 16:06:51

如果您愿意切换到hls (nginx支持hls),它将使您的生活-从我的经验-比尝试负载平衡rtmp本身容易。一旦您设置了hls代码转换,您唯一需要的东西就是将cdn放在您的set服务器前面,让它来处理缓存,或者自己使用清漆、鱿鱼甚至是nginx (当然还有更多的可能性)-- HTTP缓存非常广泛,我相信您会找到一个简单的解决方案。

但是,如果您想坚持使用rtmp,可以设置类似的基础结构。

有一个主服务器和多个边缘节点,这些节点是每个从所摄取的服务器上获取的。此设置将是相当可伸缩的,并且应该可以很好地工作在当前负载中。

编辑:似乎我误解了你的问题:它可能是最简单的有一个api端点,你可以问你的摄像头应该流向哪个rtmp服务器,而不是试图负载平衡。

因此,一旦您的rtmp服务器到达X流(请参阅nginx stat模块),您将启动一个新实例并将新流重定向到该实例。

nginx还具有on_connect中的重定向功能(还不能放置两个以上的链接,只需在指令wiki页面上搜索on_connect ),方法是返回一个带有位置的3xx头。我不确定这是否支持重定向到另一个节点,但这也值得一试--这样可以避免在选择服务器之前手动查询。

票数 3
EN

Server Fault用户

发布于 2015-05-27 08:00:19

我不知道nginx是否支持rtmp模块的可伸缩性,但是如果您可以随意更改服务器解决方案,可以尝试我们的服务器:莫纳塞尔

它允许可伸缩性,并支持其他协议(如RTMFP)。

这里有一个带有3台服务器的可伸缩性配置示例:http://www.monaserver.ovh/scalability.html#exchange-data-and-resources --当服务器有超过400个订阅者时,此示例重定向新订阅。如果您确实更喜欢使用CPU利用率,则可以更改以下行:

if _nextServer and _subscribers>=400 then error(_nextServer.host) end

有:

if _nextServer and cpu>80 then error(_nextServer.host) end

然后,您可以自由地找到获得CPU负载的最佳方法(参数cpu)。如果您需要调用c++代码,请查看FFI库(您可以将c++代码嵌入到lua脚本中,而无需包含任何其他库/插件)

如果您需要帮助,可以在论坛上与我们联系。

我希望它能帮到你!

票数 -2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/693981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档