(58)【調査した分野】(Int.Cl.,DB名)
外部ネットワークと接続する複数の配信サーバと内部ネットワークを介して接続し、前記複数の配信サーバ間を移動可能な複数の仮想マシンの移動先配信サーバを決定する仮想マシン割当装置であって、
各仮想マシンから取得した、前記外部ネットワークを介して接続している通信装置との配信処理における現在接続数と、各配信サーバが前記外部ネットワークを介して接続している通信装置との配信処理における最大接続数とに基づき、
前記配信サーバに所属したときの前記各仮想マシンの現在接続数の合計が当該配信サーバの最大接続数以下、かつ、前記仮想マシンが所属しない新たな配信サーバを捻出するように、前記仮想マシンそれぞれの移動先配信サーバを決定する決定処理手段を有する
ことを特徴とする仮想マシン割当装置。
【発明を実施するための形態】
【0013】
以下、図面を参照して、本発明の実施の形態(以下、「本実施形態」と称する)につき詳細に説明する。なお、各図は、本発明について概略的に示してあるに過ぎない。よって、本発明は、図示例のみに限定されるものではない。また、各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
【0014】
《第1の実施形態》
(配信システム1)
図1に示すように、配信システム1は、複数の配信サーバ2(2a,2b,2c)と、仮想マシン管理サーバ3と、蓄積サーバ4と、仮想マシン割当サーバ5と、複数の外部装置9(9a,9b,9c)と、内部ネットワークNW1と、外部ネットワークNW2とで構成される。
複数の配信サーバ2と、仮想マシン管理サーバ3と、蓄積サーバ4と、仮想マシン割当サーバ5とは、内部ネットワークNW1を介して通信可能に接続される。また、複数の配信サーバ2と、複数の外部装置9とは、外部ネットワークNW2を介して通信可能に接続される。
図1では、配信サーバ2および外部装置9はそれぞれ3台で図示しているが、本発明は最大台数を制限しない。特に、配信サーバ2は2台以上あればよい。
【0015】
なお、配信サーバ2、仮想マシン管理サーバ3、蓄積サーバ4、仮想マシン割当サーバ5および、外部装置9は、図示を省略したCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disc Drive)などを備えた一般的なコンピュータで構成することができ、コンピュータを前記した各手段として機能させるプログラムにより実現することができる。
【0016】
また、第1の実施形態における配信サーバ2には、予めVMware社の“VMware(登録商標) ESXi”がインストールされている。また、仮想マシン管理サーバ3には、予めVMware社の“VMware(登録商標) vCenter Server”がインストールされている。そして、配信サーバ2には、仮想マシン管理サーバ3から内部ネットワークNW1を介して、“VMware(登録商標) vCenter Serverエージェント”がインストールされている。
その他の構成として、Citrix社の“XenServer”、Red Hat社の“Red Hat Enterprise Virtualization for Servers”がある。
さらに、配信サーバ2には、予め仮想マシン追加機能アプリケーション(以下、“仮想マシン追加AP”とする)がインストールされている。
【0017】
(内部ネットワークNW1)
内部ネットワークNW1は、例えば、有線/無線LAN(Local Area Network)などを介して、インターネットプロトコル(Internet Protocol)技術を利用して相互接続されるコンピュータネットワークである。また、LAN以外にも、ZigBee(登録商標)やBluetooth(登録商標)であってもよい。
【0018】
(外部ネットワークNW2)
外部ネットワークNW2は、例えば、WAN(Wide Area Network)や有線/無線LANなどを介して、インターネットプロトコル技術を利用して相互接続されるコンピュータネットワークである。また、LAN以外にも、ZigBee(登録商標)やBluetooth(登録商標)であってもよい。
【0019】
また、配信サーバ2(2a,2b,2c)は互いに図示しない共有ストレージを介して、vMotion専用のギガビット・イーサネット(登録商標)で接続されている。本発明は、仮想マシンVMの移動先を決定することを目的としているものであるため、その後の仮想マシンVMを移動する処理の説明について省略する。
【0020】
(外部装置9)
外部装置9(9a,9b,9c)は、例えば、PC(Personal Computer)などであり、利用者(視聴者)が外部装置9の操作部(不図示)を介して、映像の視聴要求を入力することで、外部装置9は配信サーバ2との通信を開始し、配信サーバ2からストリーミング配信されるメディアデータ(映像データ)を受信して、ディスプレイなどの表示部(不図示)に映像を表示させる。
【0021】
(配信サーバ2)
配信サーバ2(2a,2b,2c)は、仮想マシンVM(VM1,VM2,VM3,・・・)として動作させる仮想マシン制御部と、配信状態記録部21と、電力制御部22とを備える。
配信状態記録部21は、データを記憶する構成部であって、例えば、HDD、RAM、光ディスクなどの記憶手段である。
電力制御部22は、不図示の外部電源と接続し、配信サーバ2内部への電力供給量を制限する構成部であり、図示しないCPUによるプログラム実行処理や専用回路などにより実現される。
【0022】
前記したように、配信サーバ2には、予めVMware社の“VMware(登録商標) ESXi”や“VMware(登録商標)vCenter Serverエージェント”、“仮想マシン追加AP”がインストールされており、不図示の仮想マシン制御部(CPUなど)により、それらのアプリケーションが実行されることで、配信サーバ2は仮想マシンVMとして動作する。
図1では、第1の実施形態において、配信サーバ2aに仮想マシンVM1と仮想マシンVM2とが所属することが示されている。これは、配信サーバ2aは、仮想マシンVM1として動作すると共に、仮想マシンVM2としても動作することを示している。
同様に、
図1に示すように、配信サーバ2bには、仮想マシンVM3と仮想マシンVM4とが所属し、配信サーバ2cには、仮想マシンVM5が所属している。
これら仮想マシンVMには、それぞれを識別する番号(仮想マシンID)が付与されており、仮想マシンVM1には“VM−ID01”、仮想マシンVM2には“VM−ID02”、仮想マシンVM3には“VM−ID03”、仮想マシンVM4には“VM−ID04”、仮想マシンVM5には“VM−ID05”がそれぞれ仮想マシンIDとして付与されている。
【0023】
配信サーバ2は、外部ネットワークNW2を介して接続された外部装置9からの要求に応じて、内部ネットワークNW1を介して接続された(後記する)蓄積サーバ4からメディアデータ(映像データ)を取得して、外部装置9とのストリーミング配信(配信処理)を行う。
また、配信サーバ2は、内部ネットワークNW1を介して接続された仮想マシン割当サーバ5と通信を行う。詳細は後記する。
【0024】
配信サーバ2は、“Session_ID”で識別されるセッションで接続される外部装置9との配信状態が記録される配信状態記録部21を備える。この配信状態記録部21に記録される配信状態は、セッションが接続されているものの配信データをまだ配信できない状態(待機中)であれば「0」であり、一方、セッションが接続されており配信データを配信できる状態(配信中)であれば「1」である。例えば、配信状態記録部21には“Session_ID”と配信状態とが(Session_ID,1)のように記録される。また、セッションが開放された場合、配信サーバ2は、そのセッションに係る“Session_ID”のデータを配信状態記録部21から削除する。
【0025】
また、配信サーバ2は、仮想マシンVMとして動作して、内部ネットワークNW1を介して接続された仮想マシン管理サーバ3からの指示(vMotion機能)に応じて、仮想マシンVMが外部装置9と確立したセッションを切断することなく、自装置に所属する仮想マシンVMを別の配信サーバ2に移動させる処理を行ったり、別の配信サーバ2から移動してきた仮想マシンVMを所属させたりする。
【0026】
(仮想マシンVM)
図2に示すように、仮想マシンVMは、VODシステム部201と、RTSP監視部202とを有する。
仮想マシンVMは、配信サーバ2の制御部(CPU)により、VMware社のアプリケーションが実行されることでvMotion機能を有する。このvMotion機能は、配信サーバ2(例えば、配信サーバ2a)で稼働中の当該仮想マシンVMを、オンライン状態のまま別の配信サーバ2(例えば、配信サーバ2b)に移動することができるという機能である。
VODシステム部201は、ビデオオンデマンド(Video On Demand)を実現する構成部であり、外部装置9からの要求に応じて、蓄積サーバ4から要求されるメディアデータを取得して、外部装置9とのストリーミング配信を行う。
【0027】
また、仮想マシンVMは、配信サーバ2の制御部(CPU)により仮想マシン追加APが実行されることで、以下の機能を実行するRTSP監視部202を有する。
(1)セッションID記録機能
(2)配信開始記録機能
(3)配信停止記録機能
このRTSP監視部202は、配信サーバ2(仮想マシンVM)と外部装置9との間で通信されるRTSPパケットを監視し、各機能を実行する。以下に、各機能の詳細について説明する。
【0028】
(1)セッションID記録機能
配信サーバ2(仮想マシンVM)は、外部装置9から送信されるSETUPメッセージ(リクエストメッセージ)に対して、送信元の外部装置9と接続するセッションを識別する“Session_ID”を含むレスポンスメッセージを送信する。このとき、RTSP監視部202は、配信状態記録部21に“Session_ID”の配信状態を「0」(待機中)で記録させる。
【0029】
(2)配信開始記録機能
配信サーバ2(仮想マシンVM)は、外部装置9から送信される(初回の)PLAYメッセージ(リクエストメッセージ)に対して、送信元の外部装置9と接続するセッションを識別する“Session_ID”を含むレスポンスメッセージを送信する。このレスポンスメッセージに含まれる“Status_Code”が“200 OK”の場合、RTSP監視部202は、該当する“Session_ID”の配信状態を「1」(配信中)で配信状態記録部21に記録させる。このとき、記録している全データについて、配信状態のカウンタが「1」である個数(接続数)を求め、仮想マシンVMの識別番号(仮想マシンID)と接続数とを含めた配信状態通知メッセージを生成し、仮想マシン割当サーバ5に送信する。
ここで接続数とは、仮想マシンVM(配信サーバ2)が外部ネットワークNW2を介して、外部装置9と現在確立しているセッションの数である。配信サーバ2は、外部装置9にメディアコンテンツをストリーミング配信するごとに、外部装置9と新たにセッションを確立する。
【0030】
(3)配信停止記録機能
配信サーバ2(仮想マシンVM)は、外部装置9から送信されるTEARDOWNメッセージ(リクエストメッセージ)に対して、送信元の外部装置9と接続するセッションを識別する“Session_ID”を含むレスポンスメッセージを送信する。そして、RTSP監視部202は、このレスポンスメッセージに含まれる“Session_ID”に係るデータを配信状態記録部21から削除する。
さらに、RTSP監視部202は、配信状態記録部21に記録されている全てのデータに対して、配信状態が「1」であるデータ数(接続数)を求め、仮想マシンVMの識別番号(仮想マシンID)と接続数とを含めた配信状態通知メッセージを生成し、仮想マシン割当サーバ5に送信する。
【0031】
(仮想マシン管理サーバ3)
仮想マシン管理サーバ3は、内蔵する制御部(CPU)がVMware社のアプリケーション“VMware(登録商標) vCenter Server”を実行することで一般的な機能として、仮想マシン監視手段31と、仮想マシン移動手段32と、配信サーバ電源管理手段33とを実現する装置である。
【0032】
(仮想マシン監視手段31)
仮想マシン監視手段31は、仮想マシンVMが所属する配信サーバ2(所属中配信サーバ)の情報を取得する。
【0033】
(仮想マシン移動手段32)
仮想マシン移動手段32は、仮想マシンVMを、所属中配信サーバ2から別の配信サーバ2(所属先配信サーバ)に移動させる。
【0034】
(配信サーバ電源管理手段33)
配信サーバ電源管理手段33は、配信サーバ2に電力供給量を制限させる指示をする。例えば、配信サーバ電源管理手段33は、電源のON/OFFを切り替える指示をする。また、配信サーバ2が「通常モード」と、通常モードより少ない電力で駆動する「省電力モード(スタンバイモード)」とを備える場合、配信サーバ電源管理手段33は、配信サーバ2に対して、「通常モード」または「省電力モード」に切り替える指示をする。
【0035】
(蓄積サーバ4)
蓄積サーバ4は、配信データを蓄積するサーバである。例えば、ストリーミング配信される音楽や映像などのメディアデータである。蓄積サーバ4は、配信サーバ2(仮想マシンVM)からの要求に応じて、要求された配信データを配信サーバ2に出力する。
【0036】
(仮想マシン割当サーバ5)
仮想マシン割当サーバ5は、仮想マシンVMの移動先の配信サーバ2を決定する仮想マシン集約手段51と、配信サーバ最大接続数管理テーブル52(
図3)と、仮想マシン接続数管理テーブル53(
図4)とを備える。
【0037】
(配信サーバ最大接続数管理テーブル52)
配信サーバ最大接続数管理テーブル52は、配信サーバ2を識別する“配信サーバID”と、その配信サーバIDに該当する配信サーバ2が確立可能なセッションの最大数を示す“最大接続数”とを記憶する。
図3に、
図1の状態であるときの配信サーバ最大接続数管理テーブル52の一例を示す。配信サーバ最大接続数管理テーブル52には、配信サーバID“NS−ID2a”で識別される配信サーバ2aの最大接続数が“10”であること、配信サーバID“NS−ID2b”で識別される配信サーバ2bの最大接続数が“9”であること、配信サーバID“NS−ID2c”で識別される配信サーバ2cの最大接続数が“6”であることが記憶されている。
ここで、“最大接続数”は、配信サーバ2が確立可能なセッションの最大数でなくてもよく、余裕をもたせた数値であってもよい。例えば、最大数の80%の数値であってもよい。
【0038】
(仮想マシン接続数管理テーブル53)
仮想マシン接続数管理テーブル53は、仮想マシンVMを識別する“仮想マシンID”と、その仮想マシンIDに該当する仮想マシンVMが現在確立しているセッションの数を示す“接続数”とを記憶する。
図4に、
図1の状態であるときの仮想マシン接続数管理テーブル53の一例を示す。仮想マシン接続数管理テーブル53には、仮想マシンID“VM−ID01”で識別される仮想マシンVM1の接続数が“6”であること、仮想マシンID“VM−ID02”で識別される仮想マシンVM2の接続数が“2”であること、仮想マシンID“VM−ID03”で識別される仮想マシンVM3の接続数が“4”であること、仮想マシンID“VM−ID04”で識別される仮想マシンVM4の接続数が“1”であること、仮想マシンID“VM−ID05”で識別される仮想マシンVM5の接続数が“3”であることが記憶されている。
【0039】
(仮想マシン集約手段51)
仮想マシン集約手段51は、配信サーバ2(仮想マシンVM)から配信状態通知メッセージを受信したことを契機に、配信サーバ2間で仮想マシンVMを移動させて、仮想マシンVMが所属しない配信サーバ2が存在するような、配信サーバ2(2a〜2c)と仮想マシンVM(VM1〜VM5)との組み合わせを探索し、その組み合わせを抽出する構成部である。
【0040】
仮想マシン集約手段51は、配信サーバ2(仮想マシンVM)から送信された配信状態通知メッセージに基づき、仮想マシン接続数管理テーブル53における仮想マシンVMの接続数の数値を更新する。この仮想マシン集約手段51は、配信状態通知メッセージに含まれる「仮想マシンID」と「接続数」とを取得して、仮想マシン接続数管理テーブル53の「仮想マシンID」に対応する「接続数」の数値を、取得した「接続数」で更新する。
【0041】
仮想マシン集約手段51は、仮想マシン管理サーバ3に、仮想マシンVMそれぞれが所属する配信サーバ2の情報の提供を要求する。これにより、どの配信サーバ2にどの仮想マシンVMが所属しているのか(配信サーバ2がどの仮想マシンVMとして動作しているのか)という情報を、仮想マシン集約手段51は仮想マシン管理サーバ3から取得することができる。第1の実施形態において、この情報は、仮想マシン管理サーバ3にインストールされたVMware社の“VMware(登録商標) vCenter Server”がデフォルトの構成で提供しているvSphere APIの機能を利用して得られる情報である。すなわち、どの配信サーバ2にどの仮想マシンVMが所属しているのかという情報は、仮想マシン集約手段51が仮想マシン管理サーバ3に要求することで容易に得られる。
【0042】
仮想マシン集約手段51は、仮想マシン接続数管理テーブル53を参照して、仮想マシンVMそれぞれの「接続数」を取得し、配信サーバ最大接続数管理テーブル52を参照して、配信サーバ2の「最大接続数」を取得する。
そして、仮想マシン集約手段51は、仮想マシン管理サーバ3から取得した「仮想マシンVMがどの配信サーバ2に所属しているかを示す情報」と、「仮想マシンVMの接続数」と、「配信サーバ2の最大接続数」との3つの情報から、配信サーバ2間で仮想マシンVMを移動させて、仮想マシンVMが所属しない配信サーバ2が存在するような、配信サーバ2(2a〜2c)と仮想マシンVM(VM1〜VM5)との組み合わせを探索し、その組み合わせを抽出する。
【0043】
仮想マシン集約手段51が探索する組み合わせの例を、
図1,
図3,
図4を用いて説明する。
図1に示すように、最大接続数が“10”の配信サーバ2aには、接続数が“6”の仮想マシンVM1と、接続数が“2”の仮想マシンVM2とが所属している。また、最大接続数が“9”の配信サーバ2bには、接続数が“4”の仮想マシンVM3と、接続数が“1”の仮想マシンVM4とが所属している。そして、最大接続数が“8”の配信サーバ2cには、接続数が“3”の仮想マシンVM5が所属している。
【0044】
この状態において、仮想マシン集約手段51は、配信サーバ2と仮想マシンVMとの組み合わせを探索する。この探索において、最大接続数が“9”の配信サーバ2bの残り接続数が“4”であることを算出し、配信サーバ2cに所属する仮想マシンVM5(接続数“3”)を移動させて、配信サーバ2bに所属させることで、仮想マシンVMが所属しない配信サーバ2cを捻出する組み合わせ(パターン1)を抽出する。
【0045】
また、この探索において、最大接続数が“8”の配信サーバ2cの残り接続数が“5”であることを算出し、配信サーバ2bに所属する仮想マシンVM3(接続数“4”)と仮想マシンVM4(接続数“1”)を移動させて、配信サーバ2cに所属させることで、仮想マシンVMが所属しない配信サーバ2bを捻出する組み合わせ(パターン2)を抽出する。
また、この探索において、最大接続数が“10”の配信サーバ2aの残り接続数が“2”であることを算出し、配信サーバ2bに所属する仮想マシンVM4(接続数“1”)を移動させ、さらに最大接続数が“8”の配信サーバ2cの残り接続数が“5”であることを算出し、配信サーバ2bに所属する仮想マシンVM3(接続数“4”)を移動させて、配信サーバ2cに所属させることで、仮想マシンVMが所属しない配信サーバ2bを捻出する組み合わせ(パターン3)を抽出する。
仮想マシン集約手段51は、抽出した組み合わせパターンより、移動コストが最も低い(移動する回数が少ない)組み合わせを選択する。
ここで、パターン1は、1つの配信サーバに対して1つの仮想マシンVMを移動するものであり、パターン2は、1つの配信サーバに対して2つの仮想マシンVMを移動するものであり、パターン3は、2つの各配信サーバに対して1つずつの仮想マシンVMを移動するものである。
よって、仮想マシン集約手段51は、最終的に、抽出した組み合わせのパターン1〜パターン3からパターン1を選択し、配信サーバ2cに所属する仮想マシンVM5を移動させて、配信サーバ2bに所属させることで、仮想マシンVMが所属しない配信サーバ2cを捻出する組み合わせを抽出する。
【0046】
以上のように、仮想マシン集約手段51は、仮想マシンVM5を配信サーバ2bに所属させる組み合わせを抽出する。
【0047】
<RTSPのシーケンス>
第1の実施形態において、配信サーバ2(仮想マシンVM)と、外部装置9との間でやりとりされるRTSPのシーケンスの一例を
図5に示す。そして、
図6〜
図11にRTSPのシーケンスにおけるメッセージの一例を示す。例えば、利用者(視聴者)が以下、外部装置9の操作部(不図示)を介して、映像の視聴要求を入力することで、外部装置9は配信サーバ2との通信処理を開始する。
【0048】
まず、外部装置9は、DESCRIBEメソッドを含むリクエストメッセージを配信サーバ2に送信する(ステップS101)。これに対して、配信サーバ2は、外部装置9にレスポンスメッセージ(description)を送信する(ステップS102)。
【0049】
次に、外部装置9は、配信サーバ2にSETUPメッセージ(
図6)を送信する(ステップS103)。受信した配信サーバ2は、リソースを確保し、レスポンスメッセージ(
図7)を外部装置9に送信して、外部装置9とのセッションを開始する(ステップS104)。
次に、外部装置9は、PLAYメッセージ(
図8)を配信サーバ2に送信する(ステップS105)。受信した配信サーバ2は、外部装置9に、レスポンスメッセージ(
図9)を送信する(ステップS106)。その後、配信サーバ2は、外部装置9に対して、メディアデータ(映像データ)のストリーミング配信を開始する。
これにより、外部装置9と、配信サーバ2との間で、RTP(Real-time Transport Protocol)やRTCP(RTP Control Protocol)に準じたストリーミング配信(データの送受信)が行われる。
【0050】
その後、外部装置9は、PAUSEメッセージを配信サーバ2に送信する(ステップS107)。受信した配信サーバ2は、ストリーミング配信を中断し、レスポンスメッセージを外部装置9に送信する(ステップS108)。
次に、外部装置9は、TEARDOWNメッセージ(
図10)を配信サーバ2に送信する(ステップS109)。受信した配信サーバ2は、終了させるセッションの“Session_ID”を含めたレスポンスメッセージ(
図11)を外部装置9に送信してから、リソースを解放し、外部装置9とのセッションを終了する(ステップS110)。
【0051】
<集約処理>
第1の実施形態において仮想マシン割当サーバ5が実行する集約処理について、
図12Aを用いて、配信サーバ2(仮想マシンVM)と、仮想マシン管理サーバ3と、仮想マシン割当サーバ5との間で行われるシーケンスとともに説明する。ここでは、例として、前記パターン1の組み合わせが選択され、
図1に示す配信サーバ2cに所属する仮想マシンVM5が配信サーバ2bに移動する処理を説明する。
【0052】
まず、配信サーバ2cに所属する仮想マシンVM5が、外部装置9aと、Session_IDが“Session1001”で識別されるセッションで接続されているとする。このとき、仮想マシンVM5のRTSP監視部202により、配信状態記録部21には〔Session1001,0〕が記録されている。
そして、配信サーバ2cに所属する仮想マシンVM5は、外部装置9から受信したPLAYメッセージに対してレスポンスメッセージを送信する。このレスポンスメッセージに含まれるStatus_Codeが“200 OK”である場合(ステップS201)に、RTSP監視部202は、配信状態記録部21に〔Session1001,1〕を記録する(ステップS202)。
【0053】
RTSP監視部202は、配信状態記録部21に「1」で記録されたセッションIDの数を数え、その総数である仮想マシンVM5の接続数を算出する(ステップS203)。そして、RTSP監視部202は、仮想マシンVM5の「仮想マシンID」と「接続数」とを含む配信状態通知メッセージを作成し、配信サーバ2cの通信部を介して、仮想マシン割当サーバ5に送信する(ステップS204)。
【0054】
仮想マシン割当サーバ5は、配信サーバ2cから配信状態通知メッセージを受信する。仮想マシン集約手段51は、配信状態通知メッセージに含まれる「仮想マシンID」と「接続数」とを取得して、仮想マシン接続数管理テーブル53にて仮想マシンVM5の接続数の数値を更新する(ステップS205)。
【0055】
配信サーバ2から配信状態通知メッセージを受信した仮想マシン割当サーバ5の仮想マシン集約手段51は、仮想マシン管理サーバ3に仮想マシンVMが所属する配信サーバ情報を要求する(ステップS206)。
仮想マシン管理サーバ3の仮想マシン監視手段31は、監視する全ての仮想マシンVMの「仮想マシンID」と、その仮想マシンVMが所属する配信サーバ2の「配信サーバID」とを含む仮想マシンが所属する配信サーバ情報を、仮想マシン割当サーバ5に送信する(ステップS207)。
【0056】
仮想マシン集約手段51は、仮想マシン管理サーバ3から取得した配信サーバ情報と、仮想マシン接続数管理テーブル53に記憶されたデータとに基づき、配信サーバ2それぞれの接続数を算出する(ステップS208)。
【0057】
仮想マシン集約手段51は、配信サーバ最大接続数管理テーブル52を参照して、配信サーバ2の最大接続数を取得する。そして、最大接続数から、ステップS208で算出した接続数を差分して、配信サーバ2の残り接続可能数を算出する(ステップS209)。それらの算出処理を、配信サーバ最大接続数管理テーブル52に記録された全ての配信サーバ2に対して行い、配信サーバ2それぞれの残り接続可能数を算出する。
【0058】
仮想マシン集約手段51は、仮想マシン接続数管理テーブル53に記憶された仮想マシンVMの接続数と、ステップS209で算出した配信サーバ2の残り接続可能数と、配信サーバ情報に含まれる仮想マシンVMの所属先配信サーバとの3つの情報から、仮想マシンVMを移動(集約)して、配信サーバ2の稼動数を減らすことが可能な組み合わせがあるか否かを探索する(ステップS210)。
探索の結果、組み合わせがあれば、仮想マシン集約手段51は、移動させる仮想マシンVM(VM5)の「仮想マシンID」(VM−ID05)と、所属中の配信サーバ2の「配信サーバID」(NS−ID2c)と、移動先の配信サーバ2の「配信サーバID」(NS−ID2b)とを含めた移動要求メッセージを作成し、仮想マシン管理サーバ3に送信する(ステップS211)。
一方、ステップS210の探索の結果、組み合わせがなければ、次の配信状態通知メッセージ(ステップS204)を受信するまで待機する。
【0059】
ステップS211の後、仮想マシン管理サーバ3は、仮想マシン割当サーバ5から移動要求メッセージを受信する。
仮想マシン移動手段32は、移動要求メッセージを解析して、vMotion機能を利用して、仮想マシンVM5を所属中の配信サーバ2cから、移動先の配信サーバ2bに移動させる処理(仮想マシン移動処理)を行う(ステップS212)。この仮想マシン移動処理により、仮想マシンVM5の移動が完了する。
【0060】
ステップS212の処理後、仮想マシン移動処理の完了確認を行う(ステップS213)。そして、ステップS213の処理後、仮想マシン集約手段51は、ステップS211の処理で、仮想マシン管理サーバ3に送信した仮想マシン移動要求メッセージに含めた所属中の配信サーバ2cに対する電源オフ要求メッセージを、仮想マシン管理サーバ3に送信する(ステップS214)。その後、仮想マシン集約手段51は、次に配信状態通知メッセージ(ステップS204)を受信するまで待機する。
【0061】
ここで、ステップS213の処理(仮想マシン移動処理の完了確認)は、ステップS211の処理で送信した仮想マシン移動要求メッセージが、同期メッセージなのか非同期メッセージなのかによって、電源オフ要求メッセージを送るタイミングが変わる。そのため、仮想マシン移動要求メッセージが、同期メッセージである場合と非同期メッセージである場合とに分けて説明する。
【0062】
<仮想マシン移動要求メッセージが同期メッセージである場合>
仮想マシン移動要求メッセージが同期メッセージである場合の処理について、
図12Bを用いて、配信サーバ2(仮想マシンVM)と、仮想マシン管理サーバ3と、仮想マシン割当サーバ5との間で行われるシーケンス(ステップS2131〜ステップS2132)とともに説明する。
【0063】
ステップS212(
図12A)により、所属中の配信サーバ2cから、移動先の配信サーバ2bに移動させる処理(仮想マシン移動処理)が完了すると、所属中の配信サーバ2cと移動先の配信サーバ2bは、仮想マシン管理サーバ3の仮想マシン移動手段32に、ステップS212(仮想マシン移動処理実行)に対するレスポンスメッセージとしてACKメッセージを送信する(ステップS2131)。
仮想マシン管理サーバ3の仮想マシン移動手段32は、仮想マシン割当サーバ5の仮想マシン集約手段51に、ステップS211(仮想マシン移動要求メッセージ送信)に対するレスポンスメッセージとしてACKメッセージを送信する(ステップS2132)。
【0064】
<仮想マシン移動要求メッセージが非同期メッセージである場合>
一方、仮想マシン移動要求メッセージが非同期メッセージである場合の処理について、
図12Cを用いて、配信サーバ2(仮想マシンVM)と、仮想マシン管理サーバ3と、仮想マシン割当サーバ5との間で行われるシーケンス(ステップS2133〜ステップS2135)とともに説明する。
【0065】
仮想マシン割当サーバ5の仮想マシン集約手段51は、ステップS211(仮想マシン移動要求メッセージ送信)の処理から所定時間後に、仮想マシン管理サーバ3に配信サーバ情報を要求する(ステップS2133)。
仮想マシン管理サーバ3の仮想マシン監視手段31は、監視する全ての仮想マシンVMの「仮想マシンID」と、その仮想マシンVMが所属する配信サーバ2の「配信サーバID」とを含めた、つまり、仮想マシンVMが所属する配信サーバの情報(配信サーバ情報)を、仮想マシン割当サーバ5の仮想マシン集約手段51に送信する(ステップS2134)。
【0066】
仮想マシン割当サーバ5の仮想マシン集約手段51は、仮想マシン管理サーバ3の仮想マシン監視手段31から取得した配信サーバ情報に基づき、ステップS211で送信した移動要求メッセージに含めた「仮想マシンID」と「配信サーバID」との組み合わせと、配信サーバ情報から得られるその「仮想マシンID」に該当する仮想マシンVMが現在所属する配信サーバ2の「配信サーバID」とが一致するか否かにより、ステップS211で移動対象の仮想マシンVMが、移動先として指示した「配信サーバID」に該当する配信サーバ2への仮想マシン移動処理が完了したか否かを判定する(ステップS2135)。
【0067】
ここで、ステップS211の処理に基づく仮想マシン移動処理が完了していない場合(ステップS2135,No)、仮想マシン割当サーバ5の仮想マシン集約手段51は、ステップS2133に戻り、再び、仮想マシン管理サーバ3に仮想マシンVMが所属する配信サーバ情報を要求する。
一方、ステップS211の処理に基づく仮想マシン移動処理が完了した場合(ステップS2135,Yes)、仮想マシン割当サーバ5の仮想マシン集約手段51は、次の処理(ステップS214,
図12A)を行う。
【0068】
図12Aに戻る。
ステップS214の後、配信サーバ2cに対する電源オフ要求メッセージを受信した仮想マシン管理サーバ3の配信サーバ電源管理手段33は、配信サーバ2cに対して、電源オフ指示を送信する(ステップS215)。指示を受けた配信サーバ2の電力制御部22は、電源をOFFする処理を行う(ステップS216)。以上のように集約処理が行われる。
【0069】
この例では、便宜上、配信状態通知メッセージを送信した仮想マシンVM5が移動対象となっているが、配信状態通知メッセージの送信元の配信サーバ2の仮想マシンVMが必ずしも移動対象となるわけではない。
【0070】
《第2の実施形態》
図13に示す第2の実施形態の配信システム1Aは、仮想マシンVMの配信ビットレートを用いて、仮想マシンVMが所属しない配信サーバ2が存在するような、配信サーバ2と仮想マシンVMとの組み合わせを探索する。第2の実施形態の配信システム1Aは、「接続数」の代わりに、「配信ビットレート」を用いる点で第1の実施形態の配信システム1と異なる。
【0071】
第2の実施形態の配信システム1Aは、配信サーバ2Aと、仮想マシン割当サーバ5の一部機能が異なる仮想マシン割当サーバ5Aとを備える。
ここで、配信サーバ2A自体は、第1の実施形態における配信サーバ2と変わらない。しかしながら、仮想マシンVMAには、第1の実施形態にて配信サーバ2にインストールした仮想マシン追加APとは一部機能が異なる、仮想マシン追加APAが予め配信サーバ2Aにインストールされている。そのため、配信サーバ2Aは、仮想マシン追加APAを実行することで、仮想マシンVMの一部機能が異なる仮想マシンVMAとして動作することとなる。そこで、便宜上、第2の実施形態において配信サーバ2Aとする。
【0072】
(仮想マシンVMA)
仮想マシンVMAは、第1の実施形態における仮想マシンVMと同様に、配信サーバ2Aの制御部(CPU)により、VMware社のアプリケーションが実行されることでvMotion機能を有する。
【0073】
また、仮想マシンVMAは、配信サーバ2Aの制御部(CPU)により仮想マシン追加APAが実行されることで、以下の機能を実行するRTSP監視部202A(不図示)を有する。
(1α)ビットレート特定機能
(2α)セッションID記録機能
(3α)配信開始記録機能
(4α)配信停止記録機能
ここで(2α)〜(4α)の機能は、第1の実施形態の仮想マシンVMのRTSP監視部202(
図2)が有する機能(1)〜(3)と同様であるが、接続数の代わりに、配信ビットレートを扱う点が異なる。
RTSP監視部202A(不図示)の各機能について、
図5および
図14〜
図15を用いて説明する。
【0074】
(1α)ビットレート特定機能
配信サーバ2A(仮想マシンVMA)は、外部装置9から送信されるDESCRIBEメソッドを含むリクエストメッセージ(
図14)に対して、レスポンスメッセージ(description)(
図15)を送信する(
図5のステップS101〜S102を参照)。
このとき、RTSP監視部202A(不図示)(仮想マシンVMA)は、DESCRIBEメッセージに含まれる“rtsp_URL”と、descriptionメッセージに含まれるSDP(
図15の破線枠内)に記述された“bitrate”のビットレート値とを取得する。そして、配信状態記録部21に“rtsp_URL”とビットレート値とを対応付けて記録し、“Session_ID”の配信状態を「0」(待機中)で記録させる。
【0075】
(2α)セッションID記録機能
配信サーバ2A(仮想マシンVMA)は、外部装置9から送信されるSETUPメッセージ(リクエストメッセージ)に対して、送信元の外部装置9と接続するセッションを識別する“Session_ID”を含むレスポンスメッセージを送信する(
図5のステップS103〜S104を参照)。
このとき、RTSP監視部202A(不図示)(仮想マシンVMA)は、SETUPメッセージに含まれる“rtsp_URL”と、レスポンスメッセージに含まれる“Session_ID”とを、配信状態記録部21に記録された同じ“rtsp_URL”と対応付けて記録させる。これにより、配信状態記録部21には、“Session_ID”とビットレート値と“rtsp_URL”との3つが対応付けられて記録される。
【0076】
(3α)配信開始記録機能
配信サーバ2A(仮想マシンVMA)は、外部装置9から送信される(初回の)PLAYメッセージ(リクエストメッセージ)に対して、送信元の外部装置9と接続するセッションを識別する“Session_ID”を含むレスポンスメッセージを送信する(
図5のステップS105〜S106を参照)。
このレスポンスメッセージに含まれる“Status_Code”が“200 OK”の場合、RTSP監視部202A(不図示)(仮想マシンVMA)は、該当する“Session_ID”の配信状態を「1」(配信中)で配信状態記録部21に記録させる。このとき、記録している全データについて、配信状態のカウンタが「1」であるビットレート値の総和(総配信ビットレート値)を求め、仮想マシンVMAの識別番号(仮想マシンID)と総配信ビットレート値とを含めた配信状態通知メッセージを生成し、仮想マシン割当サーバ5Aに送信する。
【0077】
(4α)配信停止記録機能
配信サーバ2A(仮想マシンVMA)は、外部装置9から送信されるTEARDOWNメッセージ(リクエストメッセージ)に対して、送信元の外部装置9と接続するセッションを識別する“Session_ID”を含むレスポンスメッセージを送信する(
図5のステップS109〜S110を参照)。
そして、RTSP監視部202A(不図示)(仮想マシンVMA)は、このレスポンスメッセージに含まれる“Session_ID”に係るデータを配信状態記録部21から削除する。
さらに、RTSP監視部202A(不図示)(仮想マシンVMA)は、配信状態記録部21に記録されている全てのデータに対して、配信状態が「1」であるビットレート値の総和(総配信ビットレート値)を求め、仮想マシンVMAの識別番号(仮想マシンID)と総配信ビットレート値と総配信ビットレート値とを含めた配信状態通知メッセージを生成し、仮想マシン割当サーバ5Aに送信する。
【0078】
(仮想マシン割当サーバ5A)
仮想マシン割当サーバ5Aは、仮想マシンVMAの移動先の配信サーバ2Aを決定する仮想マシン集約手段51Aと、最大配信ビットレート値管理テーブル52A(
図16)と、配信ビットレート値管理テーブル53A(
図17)とを備える。
【0079】
(最大配信ビットレート値管理テーブル52A)
最大配信ビットレート値管理テーブル52Aは、
図16に示すように、配信サーバ2Aを識別する“配信サーバID”と、その配信サーバIDに該当する配信サーバ2Aが配信可能な最大ビットレート値を示す“最大配信ビットレート値”とを記憶する。
ここで、“最大配信ビットレート値”は、配信サーバ2Aが配信可能な最大ビットレート値でなくてもよく、余裕をもたせた数値であってもよい。例えば、最大ビットレート値の80%の数値であってもよい。
【0080】
(配信ビットレート値管理テーブル53A)
配信ビットレート値管理テーブル53Aは、
図17に示すように、仮想マシンVMAを識別する“仮想マシンID”と、その仮想マシンIDに該当する仮想マシンVMAが現在の配信時のビットレート値を示す“配信ビットレート値”とを記憶する。
【0081】
(仮想マシン集約手段51A)
仮想マシン集約手段51Aは、配信サーバ2A(仮想マシンVMA)から配信状態通知メッセージを受信したことを契機に、配信サーバ2A間で仮想マシンVMAを移動させて、仮想マシンVMAが所属しない配信サーバ2Aが存在するような、配信サーバ2A(2Aa〜2Ac)と仮想マシンVMA(VMA1〜VMA5)との組み合わせを探索し、その組み合わせを抽出する構成部である。
【0082】
仮想マシン集約手段51Aは、配信サーバ2A(仮想マシンVMA)から送信された配信状態通知メッセージに基づき、配信ビットレート値管理テーブル53Aにおける仮想マシンVMAの配信ビットレート値を更新する。この仮想マシン集約手段51Aは、配信状態通知メッセージに含まれる「仮想マシンID」と「配信ビットレート値」とを取得して、配信ビットレート値管理テーブル53Aの「仮想マシンID」に対応する「配信ビットレート値」の数値を、取得した「配信ビットレート値」で更新する。
【0083】
仮想マシン集約手段51Aは、仮想マシン管理サーバ3に、仮想マシンVMAそれぞれが所属する配信サーバ2Aの情報の提供を要求する。これにより、どの配信サーバ2Aにどの仮想マシンVMAが所属しているのか(配信サーバ2Aがどの仮想マシンVMAとして動作しているのか)という情報を、仮想マシン集約手段51Aは仮想マシン管理サーバ3から取得することができる。第1の実施形態において、仮想マシン集約手段51が仮想マシン管理サーバ3に、VMware社のvSphere APIを利用して要求することで得られる情報と同様である。
【0084】
仮想マシン集約手段51Aは、配信ビットレート値管理テーブル53Aを参照して、仮想マシンVMAそれぞれの「配信ビットレート値」を取得し、最大配信ビットレート値管理テーブル52Aを参照して、配信サーバ2Aの「最大配信ビットレート値」を取得する。
そして、仮想マシン集約手段51Aは、仮想マシン管理サーバ3から取得した「仮想マシンVMAがどの配信サーバ2Aに所属しているかを示す情報」と、「仮想マシンVMAの配信ビットレート値」と、「配信サーバ2Aの最大配信ビットレート値」との3つの情報から、配信サーバ2A間で仮想マシンVMAを移動させて、仮想マシンVMAが所属しない配信サーバ2Aが存在するような、配信サーバ2A(2Aa〜2Ac)と仮想マシンVMA(VMA1〜VMA5)との組み合わせを探索し、その組み合わせを抽出する。
【0085】
《その他の実施形態》
以上、本発明の実施形態について説明したが、本発明は前記した実施形態に限定されず、適宜変更して実施することが可能である。
例えば、第1および第2の実施形態において配信システム1(1A)が備える、仮想マシン管理サーバ3と仮想マシン割当サーバ5(5A)とは、1つのサーバであってもよい。
【0086】
例えば、仮想マシン割当サーバ5(5A)は、第1の実施形態では「接続数」を用い、一方、第2の実施形態では「配信ビットレート値」を用いて、仮想マシンVM(VMA)が所属しない配信サーバ2(2A)が存在するような、配信サーバ2(2A)と仮想マシンVM(VMA)との組み合わせを探索した。しかし、仮想マシン割当サーバ5(5A)は、この「接続数」と「配信ビットレート値」との双方を用いて、探索を行ってもよい。
当該探索により、配信サーバ2(2A)の「接続数」と「配信ビットレート値」との双方に係る能力を考慮して、仮想マシンVM(VMA)の移動を行うことができる。そのため、残り接続数に余裕があるものの残り配信ビットレート値に余裕がない配信サーバ2(2A)や、逆に、残り配信ビットレート値に余裕があるものの残り接続数に余裕がない配信サーバ2(2A)を、仮想マシンVM(VMA)の移動先に選ぶことがない。これにより、配信サーバ2(2A)が過負荷状態に陥ることを回避することができる。
【0087】
例えば、第1および第2の実施形態において配信システム1(1A)は、蓄積サーバ4を備えなくてもよい。その代わり、同一の配信データを記憶する記憶部を配信サーバ2(2A)それぞれが備える。当該構成により、第1および第2の実施形態と異なり、配信サーバ2(2A)は、蓄積サーバ4にアクセスすることなく、自装置の記憶部からメディアデータ(映像データ)を取得してストリーミング配信すればよい。
【0088】
例えば、仮想マシン割当サーバ5は、配信サーバ2(2A)それぞれの電力消費量を示すテーブルを備えてもよい。仮想マシン割当サーバ5は、電力消費量の値も考慮して、仮想マシンVM(VMA)の集約処理を行う。これにより、配信システム1(1A)が電力消費量の異なる配信サーバ(新旧の配信サーバ)を備える場合に、節電効果が高いシステムを提供することができる。例えば、電力消費量が少ない配信サーバ2(2A)に優先的に仮想マシンVM(VMA)を割り当てる。これにより、電力消費量が高い配信サーバ2(2A)に仮想マシンVM(VMA)が割り当てられる優先順位が下がるため、節電効果が高くなる。特に、接続中の仮想マシンVM(VMA)の数が少ない場合に効果的である。