作者xxoo1122 (鲁鲁打工仔)
看板Soft_Job
标题[心得] 自建串流Edge CDN Server
时间Wed Mar 1 00:58:15 2017
大家好,这一年网红直播非常热门,商机也非常大带动了CDN及ISP不少的流量成长,
今天要来介绍一下要怎样自建RTMP HLS等串流Edge CDN,有人会问现成的串流CDN
解决方案不是很多吗?Akamai,网宿科技,Wowza CDN等,俗话说的好「赔钱的生意没人做」
,CDN业者的产品也是有分等级的,因为台湾的网路比较畸形,国内频宽比国外频宽贵很多,
所以购买等级低的方案一般就会被分配到美国的节点,好一点到香港,但是中华电信到
香港也是塞到不行,因此要购买等级比较高的方案才有机会使用到台湾节点,相对的费
用就非常贵。
直播这东西可能卡顿个几秒或是点下去慢个几秒开用户就会流失,为了用户体验很多
老板也是咬着牙捏着LP也是买很贵有台湾节点的CDN方案,回到主题为什麽要来自建,
很大的一个理由是可控制性高,使用现有的CDN业者的方案,一来你不知道他跟国内业者
到底买多少频宽,他的网路目前塞不塞?,超卖的状况如何?,二来伺服器部署的数量
够不够?再来当有问题发生的时候是否有人员可以在第一时间处理,还是得通过开
ticket的方式层层报修?另外一个理由是大量采购频宽时单价相对低,目前commit
10G的国内频宽大概落在250-300块/mbps上下,20G以上大概可能在210-250块/mbps上下
,如果你想便宜延迟长一点没关系,那可以只买国际频宽那单价就能5块美金以下。
最近刚好完成了一个小案例,架构图如下
http://imgur.com/a/5s3k6
讯源encoder後先打到Wowza Server,Wowza处理三件事,
1.录影
2.打流到FB直播
3.打流到Edge CDN Server
在Edge CDN Server的部分我采用了Simple-RTMP-Server
(
https://github.com/ossrs/srs ),SRS是一位中国人开发的,功能齐全,
效能也不马虎,安装与设定非常简单,开发者的Github都有很详细的教学文章
(
https://github.com/ossrs/srs/wiki/v2_CN_Home ),目前上线後用到现在
都相当稳定,大家可以参考一下。
补充一下,目前台湾各家电信的用户比例
中华电信固网加行动大概占45~50%左右
远传电信固网加行动大概占20%左右
台湾固网加行动大概占20%左右
要做这分析不难,写个shell script去捞log里面的ip,再用uniq去重复
接着用whois去查这个ip的netname就能做统计分析,不过用whois去查挺慢的但准确。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.50.183
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1488301100.A.141.html
1F:推 ripple0129: 没研究这块,有分享有推 03/01 01:34
2F:推 cliffk321: 无私分享给推 03/01 08:35
3F:推 enthos: 推推 03/01 08:58
4F:推 gerojeng: 推 03/01 09:20
5F:推 t78973677: 给推,很久没看到技术文了 03/01 09:43
6F:推 herbacin: 赞 03/01 10:11
7F:推 sky791127: 给推~我也是自架CDN XDDD 03/01 10:53
8F:推 lastdreamer: 大神!!!!!! 03/01 11:53
9F:推 penolove: 推 03/01 12:56
10F:推 s25g5d4: Wowza 不是要钱吗 可惜 SRS 不支援 redirect 03/01 12:59
11F:→ lyforever: 直接用 nginx-rtmp 打到 edge cdn 就可以惹 03/01 16:20
12F:推 wingture: 03/01 16:21
13F:→ xxoo1122: 哈哈,我比较懒一点,wowza是很方便简单使用的 03/01 16:26
14F:→ xxoo1122: youtube跟facebook推流就交给wowza处理 03/01 16:27
15F:→ xxoo1122: 因为Edge端的数量多,所以就不用wowza了,授权费会有点高 03/01 16:29
16F:推 s25g5d4: 很久以前有简单 google 过 发现免费且 open source 03/01 17:44
17F:→ s25g5d4: 的解决方案只有 nginx-rtmp, 那时候没看到 SRS 03/01 17:44
18F:→ s25g5d4: 後来因缘际会下看到 SRS 但是隔一阵子整个 repo 被砍掉 03/01 17:45
19F:→ s25g5d4: 最近又突然出现在我眼前... orz 03/01 17:45
20F:→ s25g5d4: 以前有做过一个类似 twitch 注册帐号拿 token 作 stream 03/01 17:46
21F:→ s25g5d4: 播放的时候由 http hooks 去跟伺服器要 redirect 位址 03/01 17:47
22F:→ s25g5d4: 不过没做到 server-edge 分离, 也没有 load balance 03/01 17:48
23F:→ s25g5d4: 刚好前阵子看到 SRS 又研究了一下 但是卡在无法作 03/01 17:49
24F:→ s25g5d4: redirect, 後来想到让 nginx-rtmp 收上传 stream 进来 03/01 17:50
25F:→ s25g5d4: edge 采用 srs 并且不采用 nginx 主动推流 03/01 17:50
26F:→ s25g5d4: 而是当用户端向 edge 请求播放时, SRS 在跟 nginx 要 03/01 17:51
27F:→ s25g5d4: 然後让 nginx 这边处理 redirect 的问题 03/01 17:51
※ 编辑: xxoo1122 (1.34.50.183), 03/01/2017 20:49:01
※ 编辑: xxoo1122 (1.34.50.183), 03/01/2017 20:49:36
28F:→ xxoo1122: s25g5d4大大,SRS有Rtmp Cluster的模式 03/01 22:18
30F:推 s25g5d4: TWNIC 那边有 IP 网段列表 分发的公司也都有写出来 03/01 22:38
31F:→ s25g5d4: 捞 IP 分析的时候可以直接参考网段分配表 03/01 22:38
32F:推 jjwei: push!! 03/02 12:10
33F:推 licson: 除了Wowza以外nginx-RTMP也是个很可以的解决方案,不过统 03/02 13:20
34F:→ licson: 计的部分我建议用Logstash把log汇入去如ElasticSearch等平 03/02 13:20
35F:→ licson: 台再分析会方便很多 03/02 13:20
36F:推 licson: 我也试过做这种串流,当初是痛心买下去Akamai的方案,现在 03/02 13:23
37F:→ licson: 看到你这边我也想自建串流CDN了 03/02 13:23
38F:推 sky791127: 用cluster的方式架的话HLS要另外处理 03/02 16:00
39F:→ sky791127: 不然edge没pull rtmp进来的话HLS没办法切片 03/02 16:02
40F:→ xxoo1122: licson大,akamai真心好贵...nginx-rtmp一台大概可称3k左 03/02 16:58
41F:→ xxoo1122: 右连线,srs官方是写可承载9k左右,目前我们打出去一个 03/02 17:00
42F:→ xxoo1122: 连线大该是1Mb左右,9k的话刚好能撑满一个10G port 03/02 17:00
43F:→ xxoo1122: sky大,看起来srs可以一并处理,拉流近来後,可以转hls 03/02 17:04
44F:推 sky791127: Cluster的模式是有人要收看的时候才从origin拉流 03/02 17:07
45F:→ sky791127: 但如果收看的人是用HLS那edge并不会主动去拉RTMP流来切 03/02 17:08
46F:→ sky791127: 我指的是这部分 03/02 17:10
47F:→ sky791127: 所以每台edge上必须要有一个rtmp收看者 03/02 17:11
48F:→ sky791127: 这样才会去拉rtmp流回来切HLS 03/02 17:11
49F:→ xxoo1122: 了解,哎呀!没有想到这部分 03/02 17:52
50F:推 matthewka: 有分享有推 03/02 18:07
51F:推 s25g5d4: 感谢 sky791127 大大点破盲点 03/02 18:56
52F:推 genius945: 推 感谢分享 03/03 00:27
53F:推 rsom: 推原po 。曾经因为工作上提案需要而自行摸索过这个,但是没 03/03 09:08
54F:→ rsom: 有资源和基础底而做罢。 03/03 09:08
55F:推 andy199113: 优质好文推 谢谢分享 06/09 23:31
56F:推 TFnight: 推 谢谢分享 06/06 14:48