クラスター機能録画

クラスターにおける録画機能

レガシー録画機能録画(セッション単位)機能 はクラスター機能でも利用できます。

録画(セッション単位)機能

録画(セッション単位)機能はどのノードで録画を開始しても、セッション存在するノードで録画が行われます。 これはリレー機能を使い複数のノードにセッションがまたがっていても同様です。

全てのノードでセッションが破棄されたタイミングで録画も終了します。

レガシー録画機能

レガシー録画機能はどのノードで録画を開始しても、 録画開始時に指定したチャネル名であれば、全てのノードで録画が行われます。

警告

全てのノードでセッションが破棄されても、 録画の期限が切れるか、StopRecording API が呼ばれるまで録画は続きます。

録画ファイルの出力ノード

archive-<connection_id>.json, archive-<connection_id>.webm の録画ファイルは、接続を担当するノードで 出力されます。

次のような場合には同一の recording_id に属する録画ファイルが、 複数ノードにまたがって出力されることがありますのでご注意ください。

  1. 録画機能(セッション単位) でチャネル ID を指定して録画開始

  2. ノード A に指定したチャネル ID の接続が来てしばらくして切断、録画ファイルがノード A に作られる

  3. ノード A が停止

  4. ノード B に指定したチャネル ID に接続が来てしばらくして切断、録画ファイルがノード B に作られる

report-<recording_id>.json ファイルの出力ノード

あるチャネルに対して、 StopRecording API を実行した場合には録画が終了し、 report-<recording_id>.json ファイルが出力されます。

このファイルの出力ノードは次のとおりです。

  • そのチャネルに接続したクライアントがひとつもなかった場合はどのノードで出力されるかは未定です

    • ただし、クラスター内のいずれかのノードで出力されます

  • そのチャネルに接続中のクライアントがいる場合は、チャネルの担当ノードで出力されます

  • そのチャネルに接続したクライアントが過去にいた場合は 2 パターンがありえます

    • クライアントが接続したノードが生存し続けている場合はそのノードで出力されます

    • ノードが落ちている、または停止した後に再起動した場合にはどのノードで出力されるかは未定です

      • ただし、クラスター内のいずれかのノードで出力されます

report-<recording_id>.json ファイルが一時的に出力されない場合

全ノードが半数以下に所属した場合には report-<recording_id>.json ファイルが出力されません。

5 ノードのクラスターがあるとして、いくつか例を示します。

  • ネットワーク障害が発生し、2 + 2 + 1 に分断された場合

  • ノード障害(運用での停止も含む)が発生し、3 ノードが停止した場合

  • ノード障害で 1 ノードが停止した状態でネットワーク障害が発生し、 2 + 2 に分断された場合

このあとに分断が解消し、過半数のグループができたあとに StopRecording API を 実行すると report-<recording_id>.json ファイルが出力されます。

report-<recording_id>.json ファイルの archives の内容と実際に出力される録画ファイルが一致しない場合

録画中のノードがクラスターから分離された場合に report-<recording_id>.json ファイルの archives に全ての録画ファイルが含まれないケースがあります。

録画中のノードがクラスターから分離された場合は別のノードが report-<recording_id>.json ファイルを出力しますが、クラスター分離前に共有された録画情報の内容で出力し、 分離直後に作成された録画ファイルは含まれないためです。

© Copyright 2024, Shiguredo Inc Created using Sphinx 8.1.3