看板 Soft_Job
作者 xxoo1122 (魯魯打工仔)
標題 [心得] 自建串流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 - ossrs/srs: SRS is an industrial-strength live cluster, with simple code and best conceptual integrity.
[圖]
srs - SRS is an industrial-strength live cluster, with simple code and best conceptual integrity. ...

 
效能也不馬虎,安裝與設定非常簡單,開發者的Github都有很詳細的教學文章
https://github.com/ossrs/srs/wiki/v2_CN_Home ),目前上線後用到現在
v2_CN_Home ·  ossrs/srs Wiki ·  GitHub
[圖]
srs - SRS is an industrial-strength live cluster, with simple code and best conceptual integrity. ...

 
都相當穩定,大家可以參考一下。

補充一下,目前台灣各家電信的用戶比例

中華電信固網加行動大概佔45~50%左右
遠傳電信固網加行動大概佔20%左右
台灣固網加行動大概佔20%左右

要做這分析不難,寫個shell script去撈log裡面的ip,再用uniq去重複
接著用whois去查這個ip的netname就能做統計分析,不過用whois去查挺慢的但準確。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.50.183
※ 文章代碼(AID): #1OjQmi51 (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1488301100.A.141.html
ripple0129: 沒研究這塊,有分享有推1F 03/01 01:34
cliffk321: 無私分享給推2F 03/01 08:35
enthos: 推推3F 03/01 08:58
gerojeng: 推4F 03/01 09:20
t78973677: 給推,很久沒看到技術文了5F 03/01 09:43
herbacin: 讚6F 03/01 10:11
sky791127: 給推~我也是自架CDN  XDDD7F 03/01 10:53
lastdreamer: 大神!!!!!!8F 03/01 11:53
penolove: 推9F 03/01 12:56
s25g5d4: Wowza 不是要錢嗎 可惜 SRS 不支援 redirect10F 03/01 12:59
lyforever: 直接用 nginx-rtmp 打到 edge cdn 就可以惹11F 03/01 16:20
wingture:12F 03/01 16:21
xxoo1122: 哈哈,我比較懶一點,wowza是很方便簡單使用的
youtube跟facebook推流就交給wowza處理
因為Edge端的數量多,所以就不用wowza了,授權費會有點高13F 03/01 16:26
s25g5d4: 很久以前有簡單 google 過 發現免費且 open source
的解決方案只有 nginx-rtmp, 那時候沒看到 SRS
後來因緣際會下看到 SRS 但是隔一陣子整個 repo 被砍掉最近又突然出現在我眼前... orz
以前有做過一個類似 twitch 註冊帳號拿 token 作 stream播放的時候由 http hooks 去跟伺服器要 redirect 位址
不過沒做到 server-edge 分離, 也沒有 load balance
剛好前陣子看到 SRS 又研究了一下 但是卡在無法作
redirect, 後來想到讓 nginx-rtmp 收上傳 stream 進來
edge 採用 srs 並且不採用 nginx 主動推流
而是當用戶端向 edge 請求播放時, SRS 在跟 nginx 要
然後讓 nginx 這邊處理 redirect 的問題16F 03/01 17:44
※ 編輯: xxoo1122 (1.34.50.183), 03/01/2017 20:49:01
※ 編輯: xxoo1122 (1.34.50.183), 03/01/2017 20:49:36
xxoo1122: s25g5d4大大,SRS有Rtmp Cluster的模式
https://goo.gl/WUyysZ28F 03/01 22:18
v3_CN_SampleRTMPCluster ·  ossrs/srs Wiki ·  GitHub
[圖]
srs - SRS is an industrial-strength live cluster, with simple code and best conceptual integrity. ...

 
s25g5d4: TWNIC 那邊有 IP 網段列表 分發的公司也都有寫出來
撈 IP 分析的時候可以直接參考網段分配表30F 03/01 22:38
jjwei: push!!32F 03/02 12:10
licson: 除了Wowza以外nginx-RTMP也是個很可以的解決方案,不過統計的部分我建議用Logstash把log匯入去如ElasticSearch等平台再分析會方便很多
我也試過做這種串流,當初是痛心買下去Akamai的方案,現在看到你這邊我也想自建串流CDN了33F 03/02 13:20
sky791127: 用cluster的方式架的話HLS要另外處理
不然edge沒pull rtmp進來的話HLS沒辦法切片38F 03/02 16:00
xxoo1122: licson大,akamai真心好貴...nginx-rtmp一台大概可稱3k左右連線,srs官方是寫可承載9k左右,目前我們打出去一個
連線大該是1Mb左右,9k的話剛好能撐滿一個10G port
sky大,看起來srs可以一併處理,拉流近來後,可以轉hls40F 03/02 16:58
sky791127: Cluster的模式是有人要收看的時候才從origin拉流
但如果收看的人是用HLS那edge並不會主動去拉RTMP流來切我指的是這部分
所以每台edge上必須要有一個rtmp收看者
這樣才會去拉rtmp流回來切HLS44F 03/02 17:07
xxoo1122: 了解,哎呀!沒有想到這部分49F 03/02 17:52
matthewka: 有分享有推50F 03/02 18:07
s25g5d4: 感謝 sky791127 大大點破盲點51F 03/02 18:56
genius945: 推 感謝分享52F 03/03 00:27
rsom: 推原po 。曾經因為工作上提案需要而自行摸索過這個,但是沒有資源和基礎底而做罷。53F 03/03 09:08

--
作者 xxoo1122 的最新發文: