Nginx

Nginx-rtmp-module 邊緣節點如何從多個 Master 節點拉流

  • December 13, 2016

我有一個主攝取伺服器和多個邊緣節點,每個節點都從攝取伺服器中提取。但是現在我有 10000 個攝影機推送流到主攝取伺服器,恐怕它無法處理它。所以我計劃添加更多的主攝取伺服器(使用 LoadBalancer LVS 來處理這些攝影機將流推送到哪個主攝取伺服器)。但是對於多個主攝取伺服器,邊緣節點如何提取所有這些流。我也像這樣測試邊緣節點中的拉取選項

application live {
  notify_method get;
  idle_streams off;
  pull rtmp://master_server_1/live live=1;
  pull rtmp://master_server_2/live live=1;
}

但它只從 master_server_1 拉流。有什麼建議嗎?謝謝

順便說一句,我想我不需要更多的主伺服器,只需升級頻寬。這樣對嗎 ?謝謝

您可以將 DNS 記錄解析到多個源伺服器——您不僅可以將其用於簡單的 DNS 循環負載平衡,而且這將是您從多個源中提取 nginx-rtmp 的方式。

在某一點之後,擁有多個攝取伺服器是有意義的。除了其他實際考慮因素外,它還為您提供了更高的可靠性。只有一台伺服器,您就會遇到單點故障。

來源:https ://groups.google.com/forum/#!topic/nginx-rtmp/B2QqkwXxASk

注意 #1:NGINX 會記憶體 DNS 解析,直到它重新啟動。如果您希望 IP 發生變化(我使用的是 AWS ELB,因此它們會發生很大變化),您要麼需要弄亂 NGINX 中的 DNS 解析器,要麼將 exec_pull 指令與 ffmpeg 結合使用。

注意#2:所有被拉出的節點必須具有相同的流。它無法知道源上是否存在某個流。它將使用第一個可用的(連接方式)原點。

如果您想擁有具有不同流集的來源(對縮放有意義),您將不得不最終管理它。我已經使用一致的散列算法將流映射到不同的影片集群來解決這個問題,從而分散負載。例如:發佈到原點“1”的流只能在從原點“1”拉出的邊上播放。這樣一個系統的實現應該在你的應用層。

引用自:https://serverfault.com/questions/759091