[心得] 自建串流Edge CDN Server

看板Soft_Job作者 (魯魯打工仔)時間9年前 (2017/03/01 00:58), 9年前編輯推噓24(24032)
留言56則, 20人參與, 最新討論串1/1
大家好,這一年網紅直播非常熱門,商機也非常大帶動了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://www.ptt.cc/bbs/Soft_Job/M.1488301100.A.141.html

03/01 01:34, , 1F
沒研究這塊,有分享有推
03/01 01:34, 1F

03/01 08:35, , 2F
無私分享給推
03/01 08:35, 2F

03/01 08:58, , 3F
推推
03/01 08:58, 3F

03/01 09:20, , 4F
03/01 09:20, 4F

03/01 09:43, , 5F
給推,很久沒看到技術文了
03/01 09:43, 5F

03/01 10:11, , 6F
03/01 10:11, 6F

03/01 10:53, , 7F
給推~我也是自架CDN XDDD
03/01 10:53, 7F

03/01 11:53, , 8F
大神!!!!!!
03/01 11:53, 8F

03/01 12:56, , 9F
03/01 12:56, 9F

03/01 12:59, , 10F
Wowza 不是要錢嗎 可惜 SRS 不支援 redirect
03/01 12:59, 10F

03/01 16:20, , 11F
直接用 nginx-rtmp 打到 edge cdn 就可以惹
03/01 16:20, 11F

03/01 16:21, , 12F
03/01 16:21, 12F

03/01 16:26, , 13F
哈哈,我比較懶一點,wowza是很方便簡單使用的
03/01 16:26, 13F

03/01 16:27, , 14F
youtube跟facebook推流就交給wowza處理
03/01 16:27, 14F

03/01 16:29, , 15F
因為Edge端的數量多,所以就不用wowza了,授權費會有點高
03/01 16:29, 15F

03/01 17:44, , 16F
很久以前有簡單 google 過 發現免費且 open source
03/01 17:44, 16F

03/01 17:44, , 17F
的解決方案只有 nginx-rtmp, 那時候沒看到 SRS
03/01 17:44, 17F

03/01 17:45, , 18F
後來因緣際會下看到 SRS 但是隔一陣子整個 repo 被砍掉
03/01 17:45, 18F

03/01 17:45, , 19F
最近又突然出現在我眼前... orz
03/01 17:45, 19F

03/01 17:46, , 20F
以前有做過一個類似 twitch 註冊帳號拿 token 作 stream
03/01 17:46, 20F

03/01 17:47, , 21F
播放的時候由 http hooks 去跟伺服器要 redirect 位址
03/01 17:47, 21F

03/01 17:48, , 22F
不過沒做到 server-edge 分離, 也沒有 load balance
03/01 17:48, 22F

03/01 17:49, , 23F
剛好前陣子看到 SRS 又研究了一下 但是卡在無法作
03/01 17:49, 23F

03/01 17:50, , 24F
redirect, 後來想到讓 nginx-rtmp 收上傳 stream 進來
03/01 17:50, 24F

03/01 17:50, , 25F
edge 採用 srs 並且不採用 nginx 主動推流
03/01 17:50, 25F

03/01 17:51, , 26F
而是當用戶端向 edge 請求播放時, SRS 在跟 nginx 要
03/01 17:51, 26F

03/01 17:51, , 27F
然後讓 nginx 這邊處理 redirect 的問題
03/01 17:51, 27F
※ 編輯: xxoo1122 (1.34.50.183), 03/01/2017 20:49:01 ※ 編輯: xxoo1122 (1.34.50.183), 03/01/2017 20:49:36

03/01 22:18, , 28F
s25g5d4大大,SRS有Rtmp Cluster的模式
03/01 22:18, 28F

03/01 22:19, , 29F
03/01 22:19, 29F

03/01 22:38, , 30F
TWNIC 那邊有 IP 網段列表 分發的公司也都有寫出來
03/01 22:38, 30F

03/01 22:38, , 31F
撈 IP 分析的時候可以直接參考網段分配表
03/01 22:38, 31F

03/02 12:10, , 32F
push!!
03/02 12:10, 32F

03/02 13:20, , 33F
除了Wowza以外nginx-RTMP也是個很可以的解決方案,不過統
03/02 13:20, 33F

03/02 13:20, , 34F
計的部分我建議用Logstash把log匯入去如ElasticSearch等平
03/02 13:20, 34F

03/02 13:20, , 35F
台再分析會方便很多
03/02 13:20, 35F

03/02 13:23, , 36F
我也試過做這種串流,當初是痛心買下去Akamai的方案,現在
03/02 13:23, 36F

03/02 13:23, , 37F
看到你這邊我也想自建串流CDN了
03/02 13:23, 37F

03/02 16:00, , 38F
用cluster的方式架的話HLS要另外處理
03/02 16:00, 38F

03/02 16:02, , 39F
不然edge沒pull rtmp進來的話HLS沒辦法切片
03/02 16:02, 39F

03/02 16:58, , 40F
licson大,akamai真心好貴...nginx-rtmp一台大概可稱3k左
03/02 16:58, 40F

03/02 17:00, , 41F
右連線,srs官方是寫可承載9k左右,目前我們打出去一個
03/02 17:00, 41F

03/02 17:00, , 42F
連線大該是1Mb左右,9k的話剛好能撐滿一個10G port
03/02 17:00, 42F

03/02 17:04, , 43F
sky大,看起來srs可以一併處理,拉流近來後,可以轉hls
03/02 17:04, 43F

03/02 17:07, , 44F
Cluster的模式是有人要收看的時候才從origin拉流
03/02 17:07, 44F

03/02 17:08, , 45F
但如果收看的人是用HLS那edge並不會主動去拉RTMP流來切
03/02 17:08, 45F

03/02 17:10, , 46F
我指的是這部分
03/02 17:10, 46F

03/02 17:11, , 47F
所以每台edge上必須要有一個rtmp收看者
03/02 17:11, 47F

03/02 17:11, , 48F
這樣才會去拉rtmp流回來切HLS
03/02 17:11, 48F

03/02 17:52, , 49F
了解,哎呀!沒有想到這部分
03/02 17:52, 49F

03/02 18:07, , 50F
有分享有推
03/02 18:07, 50F

03/02 18:56, , 51F
感謝 sky791127 大大點破盲點
03/02 18:56, 51F

03/03 00:27, , 52F
推 感謝分享
03/03 00:27, 52F

03/03 09:08, , 53F
推原po 。曾經因為工作上提案需要而自行摸索過這個,但是沒
03/03 09:08, 53F

03/03 09:08, , 54F
有資源和基礎底而做罷。
03/03 09:08, 54F

06/09 23:31, , 55F
優質好文推 謝謝分享
06/09 23:31, 55F

06/06 14:48, , 56F
推 謝謝分享
06/06 14:48, 56F
文章代碼(AID): #1OjQmi51 (Soft_Job)