文档章节

SRS Forward集群

冯继虎
 冯继虎
发布于 2015/05/19 18:24
字数 915
阅读 4045
收藏 10

官方WIKI:https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Forward

一、何为Forward

    Forward 翻译成中文是向前、前头的、发送等(来自google翻译),还有好多词性。

    在SRS中可以理解为把Master节点获得直播流广播给所有的Slave节点。我觉得广播这个词可能要比forward更容易理解。也可以理解为转发,即master把接收到的所有流都转发给Slave节点,即master节点由多少路直播流,那么在每个slave节点也会多少路直播流。

注:在SRS中还有另外一种集群方式,edge方式。注意两种方式的用词不同。

        在Forward模式中,中心节点叫Master,边缘节点叫Slave;在edge模式中,中心节点叫origin(源站),边缘节点叫做edge

二、适用场景

    Forward适合搭建小型集群,为什么这么说呢?因为每个slave节点都和master节点有相同数量的直播流,那么请看下图(从右往左,1、2、3是步骤):

    编码器推流给master,那么master就会Forward到每一个Slave。那么在slave节点上不论需不需要都会有master过来的流。试想一下,如果编码器的数量为10,那么master到slave之间的带宽就是:带宽=10 * slave的个数 *直播流码率,随着slave的增多,master的出口带宽会不断提高。而现实是,在某些slave节点其实根本没有人看……这样就造成了master到slave之间的带宽浪费。

    所以说Forward适合与搭建小型集群。那么大集群怎么破?----使用edge功能(且看下次分解)。

三、搭建负载均衡的直播流媒体系统

    从负载均衡往后其实都是在一个内部环境中,通过负载均衡服务器来分流访问压力到不同的流媒体服务器。

    一)负载均衡设备的选择有很多:

  1. 财主:F5之类的商业解决方案,稳定、可靠、操作界面友好等等,缺点就是价格高,有钱人才能玩的起。

  2. 屌丝:LVS、Haproxy、Nginx(仅限于交付http stream),缺点就是需要自己各种配置,需要动手能力强等,优点就是不花钱,性能也不比商业解决方案差。

    这里要提醒一下,不论什么方式请打开ip_hash(不同的设备和软件称呼不同,但作用相同),即保持一个用户的访问总是被负载均衡到固定的后端服务器上,这样就可以避免很多的问题。 

    二)常见的2个中流,RTMP和HLS的交付方式:

    RTMP:只要编码器推流到master上即可,当用户访问负载均衡时,负载均衡服务器分配一个后端服务器为用户服务。

    HLS:编码器推流到master上,如果编码器推来的流不是h264+aac的话再master进行直播转码(非h264+aac不能切hls片),然后在slave上进行HLS切片。负载均衡服务器调度用户请求到一台后端服务器进行访问。 这里就需要注意了,一定要打开ip_hash。


  四、模拟配置

    一)编码器推流(ffmpeg模拟)

    ./ffmpeg -re -i "abc.rmvb" -vcodec libx264 -vprofile baseline -vb 800k -acodec libfdk_aac -ab 96000 -ar 48000 -ac 2 -f flv rtmp://SRS_Master_IP:1935/live/test

    二)Master服务器配置

listen              1935;
pid                 ./objs/srs.pid;
max_connections     10240;
vhost __defaultVhost__ {
    gop_cache       on;
    
    forward         192.168.1.6:1935 192.168.1.7:1935;
}

    三)Slave服务器配置

listen              1935;
pid                 ./objs/srs.1935.pid;
max_connections     10240;
vhost __defaultVhost__ {
    gop_cache       on;
}


五、播放流

    源站播放地址:

rtmp://SRS_Master_IP:1935/live/test

    Slave播放地址:

rtmp://SRS_Slave_IP:1935/live/test


© 著作权归作者所有

冯继虎
粉丝 32
博文 53
码字总数 21574
作品 0
西城
部门经理
私信 提问
加载中

评论(2)

冯继虎
冯继虎 博主

引用来自“HanGuangl”的评论

博主你好,在给出的负载均衡的解决方案中,使用软件负载均衡能够有效的将各个请求分散到不同的服务器上去,但RTMP协议是基于TCP的长连接,一般lvs单机所能容纳的tcp连接数最大约5w,不知道对于高并发情况下,比如百万人观看这种有没有好的解决方案呢。个人感觉好像只有再加dns负载均衡一条路了
用CDN吧,不错的选择。
HanGuangl
HanGuangl
博主你好,在给出的负载均衡的解决方案中,使用软件负载均衡能够有效的将各个请求分散到不同的服务器上去,但RTMP协议是基于TCP的长连接,一般lvs单机所能容纳的tcp连接数最大约5w,不知道对于高并发情况下,比如百万人观看这种有没有好的解决方案呢。个人感觉好像只有再加dns负载均衡一条路了
利用Simple-RTMP-Server搭建RTMP和HLS直播服务(上)

SRS(Simple-RTMP-Server)定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码,在Github上人气颇高。本文是由王学投稿的SRS搭建直播的学习笔记,由LiveVideoStac...

livevideostack
2017/12/04
0
0
srs配置-基本RTMP配置 && 日志配置

1、RTMP URL rtmp://HOST:PORT/app/streamname rtmp: 协议头 HOST:注意的IP地址或域名 app: 应用名称 streamname:流名称 2、SRS中基本RTMP的配置 listen 1935; pid ./objs/srs.pid; chunk......

Johnny_feng
2015/05/12
0
6
编译完成后的SRS目录结构简介

SRS目录结构: /usr/local/srs ├── conf #这个目录下都是各种作者写好的配置文件,适应与各种场景。 │ ├── bandwidth.conf │ ├── console.conf │ ├── demo.19350.conf │ ├─...

Johnny_feng
2015/05/12
0
0
LVS负载均衡器ActionConn计数问题

各位网友大家下午好,有个问题想请教一下,LVS压力测试发现,6个客户机(client),其中4个客户机访问LVS,ok。但是其中有2台客户机访问LVS,LVS没有ActionConn计数,请教下各位,有没有遇到...

申缘
2017/08/21
174
2
srs-2-CentOS6 创建 Simple-Rtmp-Server

在Linux平台上,我们选用了SRS作为快速搭建测试环境的服务端 从官方网站下载压缩包srs-2-CentOS6 解压缩 进入程序目录 sudo ./INSTALL 安装 sudo /etc/init.d/srs start 运行 app名不限,由客...

yizhichao
2018/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

代码规范

代码格式化 安装vscode插件:Prettier - Code formatter 格式化配置:将下列配置写入到vscode的settings.json文件 (遵照代码格式化) "prettier.disableLanguages": ["vue"], "prettier.......

TreeZhou0511
44分钟前
3
0
python实现人工神经网络的一个例子

人工神经网络已经有无数的开源框架,比如tensorflow,caffe等,可以直接用。但最近需要做一个小样例,把基本思想讲一讲,因此自己写了一个demo,以供参考。 下面直接上代码,代码中有注释,比...

propagator
47分钟前
3
0
远程dubugger

1、在tomcat的bin下/data/project/XXX/apache-tomcat-8.5.23/bin 在catalina.bat文件中新增如下即可 JAVA_OPTS="-Xmx1024m -Xms1024m -agentlib:jdwp=transport=dt_socket,server=y,suspend......

一只小青蛙
今天
1
0
jemter 连接MySQL

jemter 连接MySQL 点击测试计划,测试计划最后”添加目录或jar包到ClassPath“,点击浏览,添加mysql-connector.jar mysql-connector.jar的下载地址: https://mvnrepository.com/artifact/my...

xiaobai1315
今天
5
0
第一次尝试用python实现zabbix主机的批量添加批量删除及模板导入脚本

Python3入门练手尝试篇 API参考: zabbix API 4.0版本:https://www.zabbix.com/documentation/4.0/zh/manual/api #!/bin/python3import xlrd,os,json,requests,sys#参考zabbix API 4.0版本......

平头哥-Enjoystudy
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部