クラスター機能録画

注意

クラスター機能を利用する場合は事前にサポートまでご連絡ください

警告

クラスター機能は 実験的機能 のため、正式版では仕様が変更される可能性があります

録画情報の共有

録画の情報はクラスター内部で共有されます。 たとえばレガシー録画の StartRecording API をあるノードまたに対して実行した後にそのノードが停止しても 録画情報は他のノードに残り続けます。 また指定したチャネル ID に接続がない状態であれば、 StopRecording API はどのノードに対しても実行できます。

たとえば、あるチャネル ID でレガシー録画の StartRecording API が実行された後に、 ノード A に接続がきて録画が開始したとします。 このノード A がノード障害等で終了した後に、同じチャネル ID で別の接続がノード B に来た場合には ノード B で録画が進行します。

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

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 7.3.7