サーバーのローテーションとセッションの移行
最新のクラウド自動スケーリングでは、サービスの最小回転時間を設定する必要がある。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以降で利用可能です。次のセクションを参照してください、 クライアントでのセッション移行を有効にする.
セッション移行を有効にする利点には、信頼性の向上、再接続時間の短縮、計画的なサーバー移行時の中断のないユーザーエクスペリエンスなどがあります。移行されるのはライブセッションのみです。進行中の録画は移行中に中断される可能性があり、手動で再開する必要があります。 サーバー・ローテーション・セッション通知イベントへの応答.
クライアントでのセッション移行を有効にする
Video API クライアント SDK でセッションを初期化する際、サーバーがローテーションしている間、クライアントをセッションに接続したままにするオプションを設定できます。
デフォルトでは、セッション移行オプションは false.に設定してください。 true を使用して、各クライアントのセッション移行を有効にする。
を設定する。 SetSessionMigration プロパティの Session.Builder 対象 true:
session = new Session.Builder(context, applicationId, sessionId){ SetSessionMigration = true }.Build();
に電話する。 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() メソッドを使用する。
に電話する。 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() メソッドを使用する。
を設定する。 sessionMigration プロパティ OTSessionSettings 対象 YES:
OTSessionSettings *settings = [[OTSessionSettings alloc] init];
settings.sessionMigration = YES;
を呼び出すときは、この OTsessionSettings オブジェクトを使用します。 [OTSession initWithApiKey:applicationId:delegate:settings:] メソッドを使用する。
パス true の中へ。 setSessionMigration() のメソッドを使用する。 Session.Builder オブジェクトを使用します:
mSession = new Session.Builder(this, applicationId, sessionId)
.setSessionMigration(true)
// other options
.build();
を呼び出すと OT.initSession() オプション・オブジェクトを sessionMigration プロパティを true:
const session = OT.initSession(
'12345abc', // your application ID
'1_MX40NzIwMzJ-clg1fn5-', // the session ID
{
sessionMigration: true,
},
);
を設定する。 sessionMigration プロパティの options OTSessionコンポーネントの true:
<OTSession
options={{
sessionMigration: true,
// other options
}}
/>
サービス中断とサーバーローテーション通知イベントへの対応
サーバーのローテーション後にセッションが移行する場合、次の表に示すように、多くのサービスは何もしなくても続行されます。ただし、アーカイブ、ライブ ストリーミング ブロードキャスト、およびセッションで実行中のエクスペリエンス コンポーザー インスタンスは、セッションの移行時に終了します。
| Service | Continues without interuption |
|---|---|
| Clients connected with the client SDKs | Yes 1 |
| SIP clients | Yes |
| Audio Connector | Yes |
| Archives | Requires restart 2 |
| Live streaming broadcasts | Requires restart |
| Live captions | Requires restart |
| Experience Composer | Requires restart |
| 1 See Enabling session migration in clients. | |
| 2 Automatic archives restart automatically when the session migrates. | |
あなたは セッションのサーバーローテーションを監視する を使用して、セッションのローテーションが発生するタイミングを知ることができます。セッションの移行時に、新しいセッションに対して新しいアーカイブ、ライブ ストリーミング放送、またはエクスペリエンス コンポーザー インスタンスを開始できます。
元のセッションで進行中のアーカイブやブロードキャストがある場合、新しいセッションで新しいアーカイブやブロードキャストを開始することができます。ブロードキャストの場合、ブロードキャストを消費するクライアントに新しいブロードキャストURLを送信する必要があります。
セッション内のクライアントがバージョン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 以降を使用しているクライアントは、サーバーのローテーション中にセッションに自動的に接続し続けることができます。以下を参照してください。 セッションの自動移行.
すべてのクライアントがバージョン2.30.0以降のクライアントSDKを使用できない場合は、セッションに再接続させることができます。新しいセッションを新しいサーバーインスタンスに確実に向けるには、新しいセッションIDを使用することをお勧めします。サーバーのローテーションによりセッションが切断されると、すべてのクライアントが切断されます。同じセッションIDを使用した場合、セッション終了後、再接続は セッション破棄イベント.