Kurento サーバーのクラスターを構築して、少数 (約 10) のビデオおよびオーディオ ストリームを多数の視聴者 (最大 1000 レシーバー) にストリーミングできるようにするタスクがあります。そうそう、合計10,000ストリーム。明らかに、どの種類のサーバーでも単一の Kurento インスタンスではそれほど処理できないため、クラスタリングが必要です。
これが私がやろうとしていることです:
1) プレゼンターから「マスター」サーバーへの接続を受け入れます。パイプラインが作成され、WebRtcEndpoint が作成され、プレゼンター クライアントからの SDP オファーが供給され、SDP 回答がそれに配信され、MediaStateChanged にサブスクライブしてストリームの開始を待ちます。イベント。
2) それが発生した場合、いくつかの RtpEndpoints を作成し、それらのそれぞれにフィードします。手作業でハッキングされた SDP オファーは次のようになります。
v=0
o=- 0 0 IN IP4 $slave_ip
s=
c=IN IP4 $slave_ip
t=0 0
m=video $slave_port RTP/AVP 100
a=rtpmap:100 H264/90000
a=recvonly
各スレーブサーバーのIPを毎回置換し、Kurentoに割り当てられた範囲外の空きUDPポートをいくつか使用します。そのエンドポイントをプレゼンターの WebRtcEndpoint に接続します。
3) ????? (ステップ2でRtpEndpointによって送信されたストリームを受信するスレーブサーバーにRtpEndpointを作成する必要があります-しかし、どのように?どのSDPにフィードするのですか?おそらく、ステップ2でsdpAnswerを受信し、スレーブKurentoでSDPオファーとして再利用します?不明)
4) ラウンド ロビン負荷分散アルゴリズムによって各スレーブ サーバーにビューアーを接続し、RtpEndpoint を受信 WebRtcEndpoint に供給します。
ステップ3で誰か助けてくれませんか?また、私の計画は正しいですか?
ご提案ありがとうございます。
ミハイル
PS また、大きな大きな問題は、 $slave_port がどうなるかです