作者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/m.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