サーバーのローテーションとセッションの移行
Video APIサーバーのローテーションへの対応、およびローテーション発生時にクライアントが自動的に再接続するためのベストプラクティス。
最新のクラウド自動スケーリングでは、サービスの最小回転時間を設定する必要がある。8時間以上続くセッションは、スケールアウトまたはスケールインするサービスに存在する可能性があるため、切断される可能性がある。
このトピックには以下のセクションが含まれます:
サーバーローテーションの影響を受けるサービス
サーバーローテーションで稼働を続けるサービスは以下の通り:
- ライブセッション
- SIPコール
他のすべてのサービスは、ローテーション時に停止される。
サーバーローテーションの監視
コールバック URL を登録すると、セッション イベントがコールバック URL に送信されます。あるセッションの Video API サーバー群のローテーションが予定されているときに sessionNotification イベントが、登録済みのコールバックエンドポイントに送信されます。
詳しくは、 セッション監視 ドキュメンテーション
サーバーのローテーションにより一連のサーバーがシャットダウンした際、クライアントがセッションに接続したままの場合、 sessionDestroyed イベントがコールバックURLに送信されます。その reason プロパティの sessionDestroyed イベントが "serverRotation". 接続中の各クライアントはセッションから切断され、 sessionDestroyed イベントを開催する。
Video APIクライアントSDKのバージョン2.30.0以降を使用しているクライアントは、セッションのサーバーが交代しても、自動的にセッションに接続し続けることができます。次のセクションを参照してください、 セッションの自動移行.
旧バージョンのクライアントSDKを使用しているクライアントの場合、クライアントSDKのエラーメッセージが表示されたときに実行できる手順があります。 sessionNotification イベントでクライアントの接続を維持する。参照 サーバー・ローテーション・セッション通知イベントへの応答.)
自動セッション移行
セッション移行機能は、サーバーのローテーション中に、セッションの参加者全員を新しいサーバーにシームレスに移行します。この機能により、参加者の混乱を最小限に抑えながら、セッションの継続性を確保できます。
セッションの移行は、クライアントSDKのバージョン2.30.0以降で利用可能です。次のセクションを参照してください、 セッション移行の有効化.
セッション移行を有効にする利点には、信頼性の向上、再接続時間の短縮、計画的なサーバー移行時の中断のないユーザーエクスペリエンスなどがあります。移行されるのはライブセッションのみです。進行中の録画は移行中に中断される可能性があり、手動で再開する必要があります。 サーバー・ローテーション・セッション通知イベントへの応答.
詳細なセットアップ手順、コード例(SIP、Audio Connector、Video Connector、Migrate Session APIを含む)については、以下を参照してください。 セッションの移行セットアップと構成 を案内する。
セッション移行の有効化
Video API クライアント SDK でセッションを初期化する際、サーバーがローテーションしている間、クライアントをセッションに接続したままにするオプションを設定できます。
デフォルトでは、セッション移行オプションは false.に設定してください。 true を使用して、各クライアントのセッション移行を有効にする。
WebクライアントClient SDK(OpenTok.js)
電話 OT.initSession(), オプションオブジェクトを sessionMigration プロパティを true:
const session = OT.initSession(
'12345', // your application ID
'1_MX40NzIwMzJ-clg1fn5-', // the session ID
{
sessionMigration: true,
},
);
Android Client SDK
パス true の中へ。 setSessionMigration() のメソッドを使用する。 Session.Builder オブジェクトを使用します:
mSession = new Session.Builder(this, apiKey, sessionId)
.setSessionMigration(true)
// other options
.build();
iOS Client SDK
を設定する。 sessionMigration プロパティ OTSessionSettings 対象 YES:
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.sessionMigration = YES;
これを使ってください OTSessionSettings を呼び出す際の [OTSession initWithApiKey:sessionId:delegate:settings:] メソッドを使用する。
Windows クライアント SDK
を設定する。 SetSessionMigration プロパティの Session.Builder 対象 true:
session = new Session.Builder(context, apiKey, sessionId){ SetSessionMigration = true }.Build();
Linux および macOS クライアント用 SDK
に電話する。 otc_session_settings_set_session_migration() メソッドに OTC_TRUE を2番目のパラメータとして指定する:
otc_session_settings_set_session_migration(settings, OTC_TRUE);
を渡す。 otc_session_settings 構造体を settings への呼び出しにおけるパラメータ otc_session_new_with_settings() メソッドを使用する。
React Native Client SDK
を設定する。 sessionMigration プロパティの options OTSessionコンポーネントの true:
<OTSession
options={{
sessionMigration: true,
// other options
}}
/>
サービス中断とローテーション・イベントへの対応
サーバーのローテーション後にセッションが移行された場合、次の表に示すように、多くのサービスは特別な操作を必要とせずに継続されます。ただし、そのセッションに関連するアーカイブ、ライブストリーミング配信、および進行中のExperience Composerインスタンスは、セッションの移行と同時に終了します。
| サービス | 途切れることなく続く |
|---|---|
| クライアントSDKを介して接続されたクライアント | はい 1 |
| SIPクライアント | はい |
| オーディオ・コネクター | はい |
| アーカイブス | 再起動が必要です 2 |
| ライブ・ストリーミング放送 | 再起動が必要です |
| ライブキャプション | 再起動が必要です |
| エクスペリエンス・コンポーザー | 再起動が必要です |
| 1 参照 クライアントでのセッション移行を有効にする. | |
| 2 自動アーカイブ セッションが移行された際に自動的に再起動する。 |
あなたは セッションのサーバーローテーションを監視する を使用して、セッションのローテーションが発生するタイミングを知ることができます。セッションの移行時に、新しいセッションに対して新しいアーカイブ、ライブ ストリーミング放送、またはエクスペリエンス コンポーザー インスタンスを開始できます。
セッション内のクライアントがバージョン2.30.0以降を使用できない場合 セッション移行セッション移行が有効になっていないクライアントは、セッションから強制的に切断されます。セッションのサーバーがローテーションされると(セッション通知イベントが送信されてから1時間後)、セッション移行を有効にしていないセッションに接続しているクライアントは、強制的にセッションから切断されます。アプリケーションサーバーがサーバーローテーション セッション通知コールバックを受信すると、これらのクライアントを新しいセッションに再接続するためのアクションを実行できます:
-
Video API REST API または Video API サーバー SDK を使用して、新しい Video API セッションを作成します。
-
新しいセッションのセッション ID を、セッションに接続しているクライアントに送信する。Video REST API または Video API サーバー SDK を使用して、接続しているクライアントにシグナルを送信できます。参照 本書.
-
クライアントは、直ちに元のセッションから切断し、新しいセッションに再接続する必要があります。
セッション間の移行をよりスムーズにし、再接続にかかる時間を最小限に抑えるために、クライアントは最初のセッションへの接続を維持したまま、新しいセッションに接続した時点で、最初のセッションから切断する前にビデオ表示を切り替えることができます。
セッション移行のトリガー
セッション移行プロセスは セッション移行 REST APIを使用します。 このアプローチにより、セッション移行をより柔軟に制御できるようになり、バックエンドのメンテナンスやスケーリング運用時の中断を最小限に抑えることができます。 運用ニーズに最適なタイミングで移行を開始することで、セッション移行プロセス中に影響を受ける可能性のあるサービスの継続性をより確実にすることができます。中断が発生する可能性のあるサービスの詳細については サービスの中断 セクションを参照されたい。
セッションの移行が現在進行中でなく、セッションが最近作成または移行されていない場合にのみ、セッションを移行できます。
よくある質問
Video API サーバーローテーションとは何ですか?Video API サーバーの更新頻度は?
ソフトウェアのクラウドにおけるスケーラビリティを実現するには、サーバーを継続的にローテーションさせる能力が必要です。Vonageでは、長期にわたるセッションの過度なローテーションを避けるため、8時間の猶予期間を設けています。ローテーションは毎日行われる場合があります。
メディアサーバーがローテーションされる主な理由はいくつかある。主な理由は、メンテナンス、ソフトウェアアップデート、セキュリティパッチ適用、インフラ整備、弾力的なオートスケールである:
-
メンテナンス、セキュリティ、新しいソフトウェアの更新 - サービスは定期的に改善される。これは、頻度の低いソフトウェアの更新、セキュリティ・パッチ、インフラの更新などである。
-
問題が発生したシステムのクラウドサービス - インフラストラクチャーの警告、異常の可能性の検出、またはクラウドシステムをリフレッシュするためのインフラストラクチャーの手順の間に、問題が長引かないことを保証するために、8時間の制限を守ってシステムを自動的にサービス停止にすることができる。
-
弾力的な自動スケーリング - 地域内の負荷を処理し、「太陽に従う」キャパシティを処理するために、システムも定期的にスピンアップとダウンを行っている。そのため、長期的には、負荷の軽いサーバーをスケールインしてインフラを統合することもできる。
サーバーのローテーションによってセッションが切断された場合、同じセッションIDを使って再接続できますか?
Video API クライアント SDK のバージョン 2.30.0 以降を使用しているクライアントは、サーバーのローテーション中にセッションに自動的に接続し続けることができます。以下を参照してください。 セッションの自動移行.
すべてのクライアントがクライアントSDKのバージョン2.30.0以降を使用できない場合は、セッションへの再接続を行うことができます。 新しいセッションIDを使用することを推奨します。これにより、新しいセッションが新しいサーバーインスタンスに確実に割り当てられます。サーバーのローテーションによりセッションが切断された場合、すべてのクライアントが切断されます。同じセッションIDが使用された場合、セッションが終了した後、 セッション破棄イベント.