srs流媒体服务器运维(2)--rtmp集群之edge边缘服务器
Edge边缘服务器
SRS的Edge提供访问时回源机制,在CDN/VDN等流众多的应用场景中有重大意义, forward/ingest方案会造成大量带宽浪费。同时,SRS的Edge能对接所有的RTMP源站服务器, 不像FMS的Edge只能对接FMS源站(有私有协议);另外,SRS的Edge支持SRS源站的所有逻辑 (譬如转码,转发,HLS,DVR等等),也就是说可以选择在源站切片HLS,也可以直接在 边缘切片HLS。
备注:Edge一般负载高,SRS支持的并发足够跑满千兆网带宽了。
Edge的主要应用场景:
- CDN/VDN大规模集群,客户众多流众多需要按需回源。
- 小规模集群,但是流比较多,需要按需回源。
- 骨干带宽低,边缘服务器强悍,可以使用多层edge,降低上层BGP带宽。
注意:edge可以从源站拉流,也可以将流转发给源站。也就是说,播放edge上的流时,edge会 回源拉流;推流到edge上时,edge会直接将流转发给源站。
概念
所谓边缘edge服务器,就是边缘直播缓存服务器,配置时指定为remote模式和origin(指定一 个或多个源站IP),这个边缘edge服务器就是源站的缓存了。
当用户推流到边缘服务器时,边缘直接将流转发给源站。譬如源站在北京BGP机房,湖南有个 电信ADSL用户要推流发布自己的直播流,要是直接推流到北京BGP可能效果不是很好,可以在 湖南电信机房部署一个边缘,用户推流到湖南边缘,边缘转发给北京源站BGP。
当用户播放边缘服务器的流时,边缘服务器看有没有缓存,若缓存了就直接将流发给客户端。 若没有缓存,则发起一路回源链接,从源站取数据源源不断放到自己的缓存队列。也就是说, 多个客户端连接到边缘时,只有一路回源。这种结构在CDN是最典型的部署结构。譬如北京源站, 在全国32个省每个省都部署了10台服务器,一共就有320台边缘,假设每个省1台边缘服务器都有 2000用户观看,那么就有64万用户,每秒钟集群发送640Gbps数据;而回源链接只有320个, 实现了大规模分发。
边缘edge服务器,实际上是解决大并发问题产生的分布式集群结构。SRS的边缘可以指定多个源站, 在源站出现故障时会自动切换到下一个源站,不影响用户观看,具有最佳的容错性,用户完全不会觉察。
一 、同一台服务器上配置源站和边缘
创建配置文件 origin.conf
# conf/origin.conf
listen 19350;
max_connections 1000;
pid objs/origin.pid;
srs_log_file ./objs/origin.log;
vhost __defaultVhost__ {
#源站也可以配置remote 形成rtmp多级分发
#mode remote;
#origin 127.0.0.1:19350;
}
edge.conf
# conf/edge.conf
listen 1935;
max_connections 1000;
pid objs/edge.pid;
srs_log_file ./objs/edge.log;
vhost __defaultVhost__ {
# the mode of vhost, local or remote.
# local: vhost is origin vhost, which provides stream source.
# remote: vhost is edge vhost, which pull/push to origin.
# default: local
mode remote;
# for edge(remote mode), user must specifies the origin server
# format as: <server_name|ip>[:port]
# @remark user can specifies multiple origin for error backup, by space,
# for example, 192.168.1.100:1935 192.168.1.101:1935 192.168.1.102:1935
origin 127.0.0.1:1935 localhost:1935;
# for edge, whether open the token traverse mode,
# if token traverse on, all connections of edge will forward to origin to check(auth),
# it's very important for the edge to do the token auth.
# the better way is use http callback to do the token auth by the edge,
# but if user prefer origin check(auth), the token_traverse if better solution.
# default: off
token_traverse off;
}
启动两个srs 使用不同的配置文件
./objs/srs -c conf/origin.conf & ./objs/srs -c conf/edge.conf &
下一篇: srs音视频安装