映像制作 eラーニングのことならビズバレー

eランチーム

HTTP Live Streaming 代替ストリームを設定する

今回は、HLSで代替ストリーミングをやってみようと思います。これはどういうものかというと、HLSを配信するサーバーが、障害などで停止して配信できなくなった時、バックアップのサーバーに自動的に切り替えを行うものです。とくに、こういった自動的な切り替えを「フェイルオーバー」と言います。

簡単にできるので、さっそく設定してみようと思います。

今回の想定は、配信サーバー2台(プライマリサーバー、バックアップサーバー)に、接続用サーバー1台です。そして、プライマリサーバー上から映像を配信している最中に、サーバーが停止して、バックアップサーバーに切り替わるというシナリオです。

代替ストリームの設定は、マスタインデックスファイルで行います。前回、アダプティブストリームの話をしたときに出てきたファイルと同じもので、記述は、下記のようになります。

BANDWIDTHの値は同じで、プライマリとバックアップで接続先の違うアドレスを追加します。設定はこれだけです。

動画の切り替わりが分かりやすいように、プライマリとバックアップの文字を書いておきます。

用意した動画

(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org

では、実際に確認をしてみましょう。

動画解説
(開始時)
ブラウザからは接続用サーバーにアクセスを行います、そうするとマスタインデックスファイルの記述順から、プライマリサーバーに接続され映像が再生されます。この状態では、バックアップサーバーは、何もせず待機しているだけです。

再生開始時は、読み込み順によりプライマリサーバーに接続

(0分25秒)
次に、プライマリサーバーに異常が発生したと想定して、Webサーバーを停止させます。
※ちなみにWebサーバーは、LinuxのDebianです。

(1分20秒)
しばらくすると、映像がバックアップサーバー側に切り替わります。これがフェイルオーバーです。

映像が止まることなく切り替る

サーバーが停止しても、クライアント側は、バッファに溜まっている映像データがあるので、すぐには止まりません。その間にバックアップサーバーに接続が切り替わると、停止することなく再生が続きます。

プライマリサーバーは、停止状態から起動状態に復帰させても、再生中に切り替わったバックアップサーバーから戻ることはありません。再度 接続し直す必要があります。

このような代替ストリームの設定は、簡単にできる1つの保険みたいなものです。バックアップサーバーは、普段は接続されない予備機にあたるため、費用を考慮する必要があるでしょう。

そして、サーバーの負荷分散がされているわけではないので、基本は1台のサーバーでストリームを行います。負荷分散させるには、ロードバランサーやCDN(コンテンツデリバリネットワーク)を利用する必要があります。

ページトップ