(57)【要約】      （修正有）【課題】負荷に応じて仮想計算機を追加又は削除が可能な計算機システムにおいて、仮想計算機の追加又は削除に伴って、サーバ側にパケットを振り分けるロードバランサ技術を提供する。【解決手段】サーバ及びロードバランサを備える計算機システムであって、計算機システムは、仮想計算機の追加又は削除を指示する管理部を備え、管理部は、クライアント計算機に関する識別情報、提供されるサービスの識別情報、及び、パケットを振り分けるための振り分け情報を保持し、サービスを提供する仮想計算機を追加する必要があると判定された場合、新たな仮想計算機を追加するサーバを特定し、クライアント計算機に関する識別情報、クライアント計算機に提供されるサービスの識別情報、及び特定されたサーバに対応する振り分け情報を含む仮想ＭＡＣアドレスを生成する。【選択図】図１
2014048900.tif 000002
【特許請求の範囲】
【請求項１】
クライアント計算機に一つ以上のサービスを提供するサーバ及び前記クライアント計算機又は前記サーバから送信されるパケットを転送するロードバランサを備える計算機システムであって、
前記サーバは、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ及び前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、
前記ロードバランサは、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ及び前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、
前記サーバ上では、一つ以上の仮想計算機が稼働し、
前記仮想計算機は、前記仮想計算機に割り当てられる仮想ＭＡＣアドレスを含むパケットを送信することによって、他の前記仮想計算機と通信し、
前記クライアント計算機には、サービスを提供する前記仮想計算機が一つ以上割り当てられ、
前記計算機システムは、
前記クライアント計算機毎に、前記仮想計算機の負荷を監視し、前記監視の結果に基づいて、前記仮想計算機の追加又は削除を指示する管理部を備え、
前記管理部は、
前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び、前記クライアント計算機から送信されたパケットを振り分けるための振り分け情報を保持し、
前記監視の結果に基づいて、前記クライアント計算機に前記サービスを提供する仮想計算機を追加する必要があると判定された場合、新たな仮想計算機を追加する前記サーバを特定し、
前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び前記特定されたサーバに対応する前記振り分け情報を含む前記仮想ＭＡＣアドレスを生成し、
前記特定されたサーバに、前記生成された仮想ＭＡＣアドレスを含む前記仮想計算機の生成指示を送信することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記ロードバランサは、前記クライアント計算機から送信された前記パケットを前記仮想計算機に転送するために用いる分散管理情報を保持し、
前記分散管理情報は、前記クライアント計算機におけるネットワークの識別情報、前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び前記クライアント計算機に割り当てられた前記仮想計算機毎の前記振り分け情報が対応づけられたエントリを一つ以上含み、
前記ロードバランサは、
前記新たな仮想計算機から送信された前記パケットを受信した場合、前記受信したパケットに含まれる前記仮想ＭＡＣアドレスから、前記クライアント計算機の識別子、前記サービスの識別子を取得し、
前記分散管理情報を参照して、前記取得されたクライアント計算機の識別子及び前記取得されたサービスの識別子に対応するエントリを検索し、
前記検索されたエントリに前記受信したパケットに含まれる前記振り分け情報を反映させることを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記ロードバランサは、
前記クライアント計算機から前記パケットを受信した場合、当該パケットを解析して、前記クライアント計算機におけるネットワークの識別情報を取得し、
前記分散管理情報を参照して、前記取得されたクライアント計算機におけるネットワークの識別情報に対応するエントリを検索し、
前記検索されたエントリに含まれる前記振り分け情報を用いて、前記受信したパケットを転送する前記仮想計算機を決定し、
前記決定された仮想計算機の前記仮想ＭＡＣアドレス及び前記ロードバランサのＭＡＣアドレスを含む仮想ＭＡＣヘッダを生成し、
前記受信したパケットに前記生成された仮想ＭＡＣヘッダが付与し、
前記決定された仮想計算機に、前記仮想ＭＡＣヘッダが付与されたパケットを転送することを特徴とする計算機システム。
【請求項４】
請求項２又は請求項３に記載の計算機システムであって、
前記ロードバランサが、
前記仮想計算機から当該仮想計算機の削除を示すパケットを受信した場合、当該パケットを解析して、前記クライアント計算機に関する識別情報及び前記クライアント計算機に提供されるサービスの識別情報を取得し、
前記分散管理情報を参照して、前記取得されたクライアント計算機に関する識別情報及び前記取得されたクライアント計算機に提供されるサービスの識別情報に対応するエントリを検索し、
前記検索されたエントリから、削除される前記仮想計算機に対応する前記振り分け情報を削除することを特徴とする計算機システム。
【請求項５】
クライアント計算機に一つ以上のサービスを提供するサーバ及び前記クライアント計算機又は前記サーバから送信されるパケットを転送するロードバランサを備える計算機システムにおけるパケット転送方法であって、
前記サーバは、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ及び前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、
前記ロードバランサは、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ及び前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、
前記サーバ上では、一つ以上の仮想計算機が稼働し、
前記仮想計算機は、前記仮想計算機に割り当てられる仮想ＭＡＣアドレスを含むパケットを送信することによって、他の前記仮想計算機と通信し、
前記クライアント計算機には、サービスを提供する前記仮想計算機が一つ以上割り当てられ、
前記計算機システムは、
前記クライアント計算機毎に、前記仮想計算機の負荷を監視し、前記監視の結果に基づいて、前記仮想計算機の追加又は削除を指示する管理部を備え、
前記管理部は、
前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び、前記クライアント計算機から送信されたパケットを振り分けるための振り分け情報を保持し、
前記方法は、
前記管理部が、前記監視の結果に基づいて、前記クライアント計算機に前記サービスを提供する仮想計算機を追加する必要があると判定された場合、新たな仮想計算機を追加する前記サーバを特定するステップと、
前記管理部が、前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び前記特定されたサーバに対応する前記振り分け情報を含む前記仮想ＭＡＣアドレスを生成するステップと、
前記管理部が、前記特定されたサーバに、前記生成された仮想ＭＡＣアドレスを含む前記仮想計算機の生成指示を送信するステップと、
を含むことを特徴とするパケット転送方法。
【請求項６】
請求項５に記載のパケット転送方法であって、
前記ロードバランサは、前記クライアント計算機から送信された前記パケットを前記仮想計算機に転送するために用いる分散管理情報を保持し、
前記分散管理情報は、前記クライアント計算機におけるネットワークの識別情報、前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び前記クライアント計算機に割り当てられた前記仮想計算機毎の前記振り分け情報が対応づけられたエントリを一つ以上含み、
前記方法は、
前記ロードバランサが、前記新たな仮想計算機から送信された前記パケットを受信した場合、前記受信したパケットに含まれる前記仮想ＭＡＣアドレスから、前記クライアント計算機の識別子、前記サービスの識別子を取得するステップと、
前記ロードバランサが、前記分散管理情報を参照して、前記取得されたクライアント計算機の識別子及び前記取得されたサービスの識別子に対応するエントリを検索するステップと、
前記ロードバランサが、前記検索されたエントリに前記受信したパケットに含まれる前記振り分け情報を反映させるステップと、
を含むことを特徴とするパケット転送方法。
【請求項７】
請求項６に記載のパケット転送方法であって、
前記方法は、
前記ロードバランサが、前記クライアント計算機から前記パケットを受信した場合、当該パケットを解析して、前記クライアント計算機におけるネットワークの識別情報を取得するステップと、
前記ロードバランサが、前記分散管理情報を参照して、前記取得されたクライアント計算機におけるネットワークの識別情報に対応するエントリを検索するステップと、
前記ロードバランサが、前記検索されたエントリに含まれる前記振り分け情報を用いて、前記受信したパケットを転送する前記仮想計算機を決定するステップと、
前記ロードバランサが、前記決定された仮想計算機の前記仮想ＭＡＣアドレス及び前記ロードバランサのＭＡＣアドレスを含む仮想ＭＡＣヘッダを生成するステップと、
前記ロードバランサが、前記受信したパケットに前記生成された仮想ＭＡＣヘッダが付与するステップと、
前記ロードバランサが、前記決定された仮想計算機に、前記仮想ＭＡＣヘッダが付与されたパケットを転送するステップと、
を含むことを特徴とするパケット転送方法。
【請求項８】
請求項６又は請求項７に記載のパケット転送方法であって、
前記方法は、
前記ロードバランサが、前記仮想計算機から当該仮想計算機の削除を示すパケットを受信した場合、当該パケットを解析して、前記クライアント計算機に関する識別情報及び前記クライアント計算機に提供されるサービスの識別情報を取得するステップと、
前記ロードバランサが、前記分散管理情報を参照して、前記取得されたクライアント計算機に関する識別情報及び前記取得されたクライアント計算機に提供されるサービスの識別情報に対応するエントリを検索するステップと、
前記ロードバランサが、前記検索されたエントリから、削除される前記仮想計算機に対応する前記振り分け情報を削除するステップと、
を含むことを特徴とするパケット転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、仮想計算機の追加及び削除に伴うロードバランサのパケットの振り分け方法に関する。
【背景技術】
【０００２】
クラウド型サービスが台頭しているように、クライアント・サーバ型通信が拡大に伴い、トラフィックは年々急増している。
【０００３】
サーバ自身の処理能力は改善されているが、処理要求されるトラフィック量に対応できていない。そこで、クライアントとサーバとの間にロードバランサを設置し、サーバの負荷に応じてトラフィックを振り分けることによって、負荷分散を行い方式が採用されている（例えば、特許文献１及び特許文献２参照）。
【０００４】
特許文献１には、「同一機能／構成の複数台のサーバと、サーバロードバランサとを含むネットワークを、ルータを介してＷＡＮやインターネットに接続されており、このような構成のネットワークのスループットは、サーバロードバランサなどの、ソフトウェア的な処理が必要な高位レイヤ処理装置によって定まることになる。このため、既存の高位レイヤ処理装置（サーバロードバランサ、ファイアウォール等）が用いられたネットワークのスループットを向上する場合には、通常、高位レイヤ処理装置をより高機能なものに置き換えるといったことが行われている。」ことが記載されている。
【０００５】
また、特許文献２には、「システム内で負荷分散のために必要とされる相互通信をできるだけ少なくすること、負荷分散装置の台数に比例した性能を得ることを実現する負荷分散処理システムを提供するため、受信パケットに含まれる高位レイヤ情報を解析して該受信パケットの属性情報を生成し、該属性情報を付加したパケットを送出する第１の負荷分散装置と、パケットのトラフィック状況情報と第１の負荷分散装置から送出された前記属性情報とに基づいて、各パケットを振り分けるべき最適な前記サーバを決定して前記パケットを送出する第２の負荷分散装置を備え、さらに好ましくは、前記受信パケットを、複数の第１の負荷分散装置のうちのいずれかに振り分ける第３の負荷分散装置を備えるネットワークを実現する」ことが記載されている。
【０００６】
従来の負荷分散の方式では、クライアントは、ロードバランサに対して処理要求を発行するだけでよいため、サーバの構成を意識する必要がない。このようにロードバランサがサーバ側の構成を隠ぺいすることによって、サーバの追加等によるサーバ側の構成変更の影響をクライアント側に及ぼさないようにする効果がある。
【０００７】
従来のロードバランサは、ＮＡＴの動作を行う方式が一般的である。ロードバランサは、クライアントから送信されたイーサネットパケット等（イーサネットは、登録商標以下同じ）のパケットを受信すると、当該パケットからサーバとの関連を示す情報を抽出する。さらに、ロードバランサは、コネクションテーブルを参照して、ＩＰヘッダ及びＭＡＣアドレスヘッダを書き換え、該当するサーバにパケットを送信する。
【０００８】
また、同様の手順で、ロードバランサは、サーバから送信されたパケットを受信すると、当該パケットからクライアントとの関連を示す情報を抽出する。さらに、ロードバランサは、コネクションテーブルを参照して、ＩＰヘッダ及びＭＡＣアドレスヘッダを書き換え、該当するクライアントにパケットを送信する。
【０００９】
なお、ロードバランサは、パケットの転送時に、参照したコネクションテーブルに対応するエントリが存在しなかった場合、予め設定されたコンフィグ情報にしたがって、新しいコネクションエントリをコネクションテーブルに追加する。
【００１０】
コンフィグ情報には、クライアント側の情報として、クライアントのＩＰアドレス、ポート番号等のクライアント側の端末及びネットワーク情報が含まれ、サーバ側の情報として、サーバのＩＰアドレス、受信ポート番号及びサーバの処理能力に応じた振り分け配分率等のサーバ側のネットワーク情報及びサーバに関する情報が含まれる。
【００１１】
クライアント側の情報又はサーバ側の情報が変更された場合、コンフィグ情報も変更する必要がある。例えば、負荷の増大に対応するためにサーバを追加する場合、サーバのＩＰアドレス、受信ポート番号、サーバの処理能力に応じた振り分け配分率等が再設定される。このとき、ロードバランサを再起動させることによって変更された情報を反映させるため、サービスを中断する必要がある。
【００１２】
前記のとおり、サーバ増減設にはロードバランサの設定、反映に伴うサービス中断などが発生し、トラフィックに柔軟に対応するための、ダイナミックなサーバ構成変更はできない。
【００１３】
一方、企業又は個人に対して様々なサービスを展開すると同時に、さらなるセキュリティが求められる。そのため、サーバ側では、一つのサーバ上に複数の仮想マシンを構築する仮想化技術が用いられており、近年、サーバのハードウェアの性能の向上、及び仮想化ソフトウェアの進化によって、サーバ上に複数の仮想化マシンを構築することができるようになった。
【００１４】
仮想化技術を用いることによって、ユーザごとに様々なサービスをセキュアに提供する基盤を提供できる。
【００１５】
サーバ上に、各クライアントのサービスごとに仮想マシンを設置し、付加価値処理を実行する。各クライアントのサービスごとに仮想マシンを設置することによって、クライアントのデータがセキュアに分離される。
【００１６】
以上のような背景から、今後も仮想化マシンを活用するニーズは増大するものと考える。
【００１７】
しかし、仮想マシン数の増大に伴い、その管理コストも増大する。具体的には、仮想マシンを一つ追加するたびに、当該仮想マシンにクライアントデータを転送するネットワークを設定する必要がある。また、負荷にリアルタイムに対応するために、仮想マシンの追加又は削除に追従した、ダイナミックなネットワーク構成変更は不可能である。
【００１８】
すなわち、負荷に応じて仮想化マシンを柔軟に追加又は削除可能な技術は提供されているが、ロードバランサが、仮想マシンの追加又は削除によるサーバのダイナミックな構成の変更に対応する技術が提供されていない。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開２００６−３１１４７０号公報
【特許文献２】特開２００４−１５８９７７号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
特許文献１及び特許文献２には、ロードバランサを備えたネットワークにおいて、ロードバランサのボトルネックを回避する技術は記載されているが、サーバ側の構成を動的に変更した場合における、ロードバランサのパケット振り分けの設定を動的に変更する技術については提供されていない。
【００２１】
また、仮想化マシンの追加によって、コネクションテーブルのデータが肥大化する。コネクションテーブルのデータ量が大きくなると、ロードバランサは、パケットの転送先を検索する時間も大きくなり、転送時間に遅延が生じる。そのため、サーバ側の処理能力は向上しているが、ロードバランサがシステム全体のボトルネックになっている。
【００２２】
そのため、特許文献２に記載されているような技術を用いることも考えられるが、負荷増大によるボトルネックを解消するためにロードバランサを追加すると、ロードバランサを追加するための作業が必要となり、ロードバランサに対する設定を反映させるためにサービスを中断させる必要がある。したがって、トラフィックに柔軟に対応するためのダイナミックなサーバ構成変更はできない。
【００２３】
本発明は、負荷に応じて仮想化マシンを柔軟に追加又は削除できる計算機システムにおいて、サーバ側に構成変更に即時かつ柔軟に対応可能なロードバランサ技術を提供するものである。
【課題を解決するための手段】
【００２４】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、クライアント計算機に一つ以上のサービスを提供するサーバ及び前記クライアント計算機又は前記サーバから送信されるパケットを転送するロードバランサを備える計算機システムであって、前記サーバは、第１のプロセッサ、前記第１のプロセッサに接続される第１のメモリ及び前記第１のプロセッサに接続される第１のネットワークインタフェースを有し、前記ロードバランサは、第２のプロセッサ、前記第２のプロセッサに接続される第２のメモリ及び前記第２のプロセッサに接続される第２のネットワークインタフェースを有し、前記サーバ上では、一つ以上の仮想計算機が稼働し、前記仮想計算機は、前記仮想計算機に割り当てられる仮想ＭＡＣアドレスを含むパケットを送信することによって、他の前記仮想計算機と通信し、前記クライアント計算機には、サービスを提供する前記仮想計算機が一つ以上割り当てられ、前記計算機システムは、前記クライアント計算機毎に、前記仮想計算機の負荷を監視し、前記監視の結果に基づいて、前記仮想計算機の追加又は削除を指示する管理部を備え、前記管理部は、前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び、前記クライアント計算機から送信されたパケットを振り分けるための振り分け情報を保持し、前記監視の結果に基づいて、前記クライアント計算機に前記サービスを提供する仮想計算機を追加する必要があると判定された場合、新たな仮想計算機を追加する前記サーバを特定し、前記クライアント計算機に関する識別情報、前記クライアント計算機に提供されるサービスの識別情報、及び前記特定されたサーバに対応する前記振り分け情報を含む前記仮想ＭＡＣアドレスを生成し、前記特定されたサーバに、前記生成された仮想ＭＡＣアドレスを含む前記仮想計算機の生成指示を送信することを特徴とする。
【発明の効果】
【００２５】
本発明の一側面によれば、仮想計算機が追加された場合に、当該追加された仮想計算機にパケットを転送するために必要な情報を含む仮想ＭＡＣアドレスを割り当てることができる。したがって、ロードバランサは、自動的に、パケットの受信時に当該仮想ＭＡＣアドレスから必要な情報を取得することができるため、外部装置から手動で設定を行う必要がなく、また、ロードバランサを停止する必要がない。そのため、ロードバランサは、サーバの構成変更に、即時かつ柔軟に対応できる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施例における計算機システムの一例を示すブロック図である。
【図２】本発明の実施例における仮想ＭＡＣアドレスの構成例を示す説明図である。
【図３】本発明の実施例におけるＶＭ管理計算機のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【図４】本発明の実施例におけるロードバランサのハードウェア構成及びソフトウェア構成の一例を説明するブロック図である。
【図５】本発明の実施例におけるプロセッサ負荷監視テーブルの一例を示す説明図である。
【図６】本発明の実施例におけるクライアント管理テーブルの一例を示す説明図である。
【図７】本発明の実施例におけるサービス種別管理テーブルの一例を示す説明図である。
【図８】本発明の実施例における物理サーバ管理テーブルの一例を示す説明図である。
【図９】本発明の実施例におけるＶＭ管理テーブルの一例を示す説明図である。
【図１０】本発明の実施例における分散管理テーブルの一例を示す説明図である。
【図１１】本発明の実施例におけるＶＭ管理計算機が実行する処理の詳細を説明するフローチャートである。
【図１２】本発明の実施例における処理の概要を示す説明図である。
【図１３】本発明の実施例における新たなＶＭに割り当てる仮想ＭＡＣアドレスの一例を示す説明図である。
【図１４】本発明の実施例における仮想ＭＡＣアドレスの通知方法の一例を示す説明図である。
【図１５】本発明の実施例におけるＭＡＣテーブルの一例を示す説明図である。
【図１６】本発明の実施例におけるサービスネットワーク内イーサネットパケットの一例を示す説明図である。
【図１７Ａ】本発明の実施例におけるロードバランサが実行する処理の詳細を説明するフローチャートである。
【図１７Ｂ】本発明の実施例におけるロードバランサが実行する処理の詳細を説明するフローチャートである。
【発明を実施するための形態】
【００２７】
以下、本発明の実施例について添付図面を用いて説明する。各図における同一符号は同一物又は相当物を示す。説明の都合上、符号に添え字を追加して区別することがある。
【００２８】
図１は、本発明の実施例における計算機システムの一例を示すブロック図である。
【００２９】
本実施例の計算機システムは、ＶＭ管理計算機１００、サーバ１１０−１、サーバ１１０−２、Ｌ２スイッチ１４０、ロードバランサ１５０及び複数のクライアント計算機１６０から構成される。
【００３０】
ＶＭ管理計算機１００、サーバ１１０−１、サーバ１１０−２、Ｌ２スイッチ１４０、ロードバランサ１５０及び複数のクライアント計算機１６０は、所定のネットワークによって互いに接続される。本発明は、ネットワークの種別によって限定されず、ＷＡＮ、ＬＡＮ及びＳＡＮのいずれであってもよく、また、接続方式は、無線及び有線のいずれであってもよい。
【００３１】
ＶＭ管理計算機１００は、サーバ１１０−１及びサーバ１１０−２上で稼働する仮想計算機（以下、ＶＭと記載する）を管理する。なお、ＶＭ管理計算機１００のハードウェア構成及びソフトウェア構成については、図３を用いて後述する。
【００３２】
サーバ１１０−１は、ＶＭ１２０が稼働する計算機であり、プロセッサ（図示省略）、メモリ（図示省略）、記憶媒体（図示省略）及びネットワークインタフェース（図示省略）を備える。
【００３３】
サーバ１１０−１は、ＶＭ１２０を管理する仮想化ソフトウェア１３０−１を実行する。これによって、一つのサーバ上に複数のＶＭ１２０を稼働させることができる。図１に示す例では、サーバ１１０−１上では、ＶＭ１２０−１及びＶＭ１２０−２が稼働する。
【００３４】
仮想化ソフトウェア１３０−１は、サーバ１１０−１が備える物理リソースを論理的に分割することによって、仮想的プロセッサ、仮想的メモリ、仮想記憶媒体及び仮想ネットワークインタフェースをＶＭ１２０に割り当てる。
【００３５】
ＶＭ１２０−１では、ゲストＯＳ１２２−１が稼働しており、当該ゲストＯＳ１２２−１上でアプリケーション１２１−１が実行される。また、ＶＭ１２０−１には、仮想ＭＡＣアドレス１２３−１が割り当てられる。アプリケーション１２１−１は、クライアント計算機１６０から送信されたパケットを処理することによって、所定のサービスを提供する。
【００３６】
ＶＭ１２０−２は、ゲストＯＳ１２２−２が実行されており、当該ゲストＯＳ１２２−２上でアプリケーション１２１−２が実行される。また、ＶＭ１２０−２には、仮想ＭＡＣアドレス１２３−２が割り当てられる。
【００３７】
ＶＭ１２０−１及びＶＭ１２０−２は、仮想ＭＡＣアドレス１２３−１及び仮想ＭＡＣアドレス１２３−２を用いて互いに通信を行う。なお、本発明では、ＶＭ管理計算機１００によって、仮想ＭＡＣアドレスが割り当てられる。
【００３８】
サーバ１１０−２も同様に、ＶＭ１２０が稼働する計算機であり、プロセッサ（図示省略）、メモリ（図示省略）、記憶媒体（図示省略）及びネットワークインタフェース（図示省略）を備える。
【００３９】
サーバ１１０−２は、仮想化ソフトウェア１３０−２を実行することによって、ＶＭ１２０−３及びＶＭ１２０−４が稼働する。なお、サーバ１１０−２の構成はサーバ１１０−１と同一であるため説明を省略する。
【００４０】
以下では、サーバ１１０−１及びサーバ１１０−２を区別しない場合、サーバ１１０と記載する。また、ＶＭ１２０−１、ＶＭ１２０−２、ＶＭ１２０−３及びＶＭ１２０−４を区別しない場合、ＶＭ１２０と記載し、仮想化ソフトウェア１３０−１及び仮想化ソフトウェア１３０−２を区別しない場合、仮想化ソフトウェア１３０と記載する。また、アプリケーション１２１−１、アプリケーション１２１−２、アプリケーション１２１−３及びアプリケーション１２１−４を区別しない場合、アプリケーション１２１と記載し、ゲストＯＳ１２２−１、ゲストＯＳ１２２−２、ゲストＯＳ１２２−３及びゲストＯＳ１２２−４を区別しない場合、ゲストＯＳ１２２と記載し、仮想ＭＡＣアドレス１２３−１、仮想ＭＡＣアドレス１２３−２、仮想ＭＡＣアドレス１２３−３及び仮想ＭＡＣアドレス１２３−４を区別しない場合、仮想ＭＡＣアドレス１２３と記載する。
【００４１】
クライアント計算機１６０は、サーバ１１０に対して処理パケットを送信する計算機であり、プロセッサ（図示省略）、メモリ（図示省略）、記憶媒体（図示省略）及びネットワークインタフェース（図示省略）を備える。
【００４２】
本実施例では、クライアント計算機１６０を操作するクライアント（ユーザ）に対して、一つサービスに、一つ以上のＶＭ１２０を割り当てる。すなわち、クライアント毎、かつ、サービス毎に、一つの業務システムが提供される。クライアント計算機１６０は、業務システムに対して処理パケットを送信することによって、所定のサービスの提供を受けることができる。
【００４３】
ロードバランサ１５０は、クライアント計算機１６０から送信されたパケットを適切なサーバ１１０に振り分ける。ロードバランサ１５０のハードウェア構成及びソフトウェア構成については、図４を用いて後述する。
【００４４】
Ｌ２スイッチ１４０は、ロードバランサ１５０から送信されたパケットをサーバ１１０に転送し、サーバ１１０から送信されたパケットをサーバ１１０又はロードバランサ１５０に転送する。後述するように、Ｌ２スイッチ１４０は、ロードバランサ１５０によって付与された仮想ＭＡＣヘッダにしたがって、所定のサーバ１１０にパケットを転送する。
【００４５】
なお、本実施例では、ＶＭ管理計算機１００、サーバ１１０、Ｌ２スイッチ１４０及びロードバランサ１５０間を接続するネットワークをサービスネットワークと記載し、ロードバランサ１５０及びクライアント計算機１６０間を接続するネットワークをクライアントネットワークと記載する。
【００４６】
クライアントネットワーク内では、イーサネットパケット１７０を用いて通信が行われ、サービスネットワーク内では、サービスネットワーク内イーサネットパケット１８０を用いて通信が行われる。
【００４７】
イーサネットパケット１７０は、ペイロード１７１及びＭＡＣヘッダ１７２の二つのフィールドから構成され、サービスネットワーク内イーサネットパケット１８０は、ペイロード１７１、ＭＡＣヘッダ１７２及び仮想ＭＡＣヘッダ１８１の三つのフィールドから構成される。
【００４８】
ここで、ＶＭ１２０に割り当てられる仮想ＭＡＣアドレス１２３について説明する。
【００４９】
図２は、本発明の実施例における仮想ＭＡＣアドレス１２３の構成例を示す説明図である。
【００５０】
仮想ＭＡＣアドレス１２３は、仮想ネットワーク上におけるＶＭ１２０を識別するための６バイトの識別子であり、３バイトのクライアント番号フィールド２０１、１バイトのサービス種別フィールド２０２、０．５バイトの重み情報フィールド２０３、１バイトのＶＭ番号フィールド２０４、及び、０．５バイトの制御フィールド２０５の五つのフィールドから構成される。
【００５１】
クライアント番号フィールド２０１は、クライアント計算機１６０を一意に識別するための３識別子を含む。サービス種別フィールド２０２は、クライアント計算機１６０がＶＭ１２０を用いて行っているサービスの種別を識別するための情報を含む。重み情報フィールド２０３は、パケットを振り分けに用いられる重み係数を含む。
【００５２】
ＶＭ番号フィールド２０４は、所定のクライアントの所定のサービスに対して割り当てられるＶＭ１２０の数を含む。制御フィールド２０５は、ロードバランサ１５０に対する制御種別を含む。
【００５３】
従来のＭＡＣアドレスは、ネットワークインタフェースカードの製造メーカを示す３バイトの情報及び当該製造メーカ内で一意な番号である３バイトの情報から構成される。したがって、従来のＭＡＣアドレスは、イーサネットワーク内の情報端末を識別子としてのみ用いられ、その他の付加的情報を持たない。
【００５４】
従来は、仮想ＭＡＣアドレス１２３は、サービスネットワーク内で各ＶＭ１２０を一意に識別できればよいため、各ＶＭにランダムに割り当てられていた。しかし、本発明では、クライアント番号フィールド２０１及びサービス種別フィールド２０２を含む仮想ＭＡＣアドレス１２３を割り当てることによって、クライアント計算機１６０から送信される処理パケットに対するロードバランサ１５０の振分処理に活用する点に特徴がある。
【００５５】
図３は、本発明の実施例におけるＶＭ管理計算機１００のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【００５６】
ＶＭ管理計算機１００は、プロセッサ３１０、メモリ３２０及びネットワークインタフェース３３０を備える。
【００５７】
プロセッサ３１０は、メモリ３２０に格納されるプログラムを実行する。プロセッサ３１０がプログラムを実行することによって、ＶＭ管理計算機１００が有する機能を実現することができる。なお、以下の説明において、プログラムを主語にする場合には、プロセッサ３１０によって当該プログラムが実行されていることを表すものとする。
【００５８】
ネットワークインタフェース３３０は、ネットワークを介して他の装置と通信するためのインタフェースであり、例えばＮＩＣ等が考えられる。
【００５９】
メモリ３２０は、プロセッサ３１０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。
【００６０】
本実施例では、メモリ３２０は、プロセッサ負荷監視部３２１、仮想ＭＡＣアドレス生成部３２２及び仮想化ソフトウェア通信部３２３を実現するプログラムを格納する。また、メモリ３２０は、情報として、プロセッサ負荷監視テーブル３２４、クライアント管理テーブル３２５、サービス種別管理テーブル３２６、物理サーバ管理テーブル３２７及びＶＭ管理テーブル３２８を格納する。
【００６１】
プロセッサ負荷監視部３２１は、サーバ１１０が備えるプロセッサの負荷及びＶＭ１２０に割り当てられた仮想プロセッサの負荷を監視する。仮想ＭＡＣアドレス生成部３２２は、ＶＭ１２０に割り当てる仮想ＭＡＣアドレス１２３を生成する。仮想化ソフトウェア通信部３２３は、仮想化ソフトウェア１３０と通信を行う。
【００６２】
プロセッサ負荷監視テーブル３２４は、サーバ１１０が備えるプロセッサの負荷の監視結果及びＶＭ１２０に割り当てられた仮想プロセッサの負荷の監視結果を格納する。プロセッサ負荷監視テーブル３２４の詳細については、図５を用いて後述する。
【００６３】
クライアント管理テーブル３２５は、クライアント計算機１６０の管理情報を格納する。クライアント管理テーブル３２５の詳細については、図６を用いて後述する。サービス種別管理テーブル３２６は、ＶＭ１２０を用いて実行されるサービスの種別に関する情報を格納する。サービス種別管理テーブル３２６の詳細については、図７を用いて後述する。
【００６４】
物理サーバ管理テーブル３２７は、サーバ１１０と、当該サーバ１１０に対する処理パケットの転送比率を表す重み情報とを対応づけた情報を格納する。物理サーバ管理テーブル３２７の詳細については、図８を用いて後述する。ＶＭ管理テーブル３２８は、ＶＭ１２０の管理情報を格納する。ＶＭ管理テーブル３２８の詳細については、図９を用いて後述する。
【００６５】
図４は、本発明の実施例におけるロードバランサ１５０のハードウェア構成及びソフトウェア構成の一例を説明するブロック図である。
【００６６】
ロードバランサ１５０は、プロセッサ４１０、メモリ４２０及びネットワークインタフェース４３０を備える。
【００６７】
プロセッサ４１０は、メモリ４２０に格納されるプログラムを実行する。プロセッサ４１０がプログラムを実行することによって、ロードバランサ１５０が有する機能を実現することができる。なお、以下の説明において、プログラムを主語にする場合には、プロセッサ４１０によって当該プログラムが実行されていることを表すものとする。
【００６８】
ネットワークインタフェース４３０は、ネットワークを介して他の装置と通信するためのインタフェースであり、例えばＮＩＣ等が考えられる。
【００６９】
メモリ４２０は、プロセッサ４１０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。
【００７０】
本実施例では、メモリ４２０は、ＡＲＰパケット受信部４２１、データパケットヘッダ検査部４２２及びデータパケットヘッダ生成部４２３を実現するプログラムを格納する。また、メモリ４２０は、情報として、分散管理テーブル４２４を格納する。
【００７１】
ＡＲＰパケット受信部４２１は、ＡＲＰパケットを受信する。データパケットヘッダ検査部４２２は、受信したパケットのヘッダを検査する。データパケットヘッダ生成部４２３は、パケットのヘッダを生成する。
【００７２】
分散管理テーブル４２４は、受信したパケットを転送する場合に用いる情報を格納する。分散管理テーブル４２４の詳細については、図１０を用いて後述する。
【００７３】
なお、図示しないがメモリ４２０には、過去の転送履歴も格納される。
【００７４】
図５は、本発明の実施例におけるプロセッサ負荷監視テーブル３２４の一例を示す説明図である。
【００７５】
プロセッサ負荷監視テーブル３２４は、列が仮想プロセッサ負荷率５０１及び物理プロセッサ負荷率５０２である、行がＶＭ追加５０３及びＶＭ削除５０４である行列形式の情報である。
【００７６】
ＶＭ追加５０３は、ＶＭ１２０を追加する必要がある場合を示し、ＶＭ削除５０４は、ＶＭ１２０を削減する必要がある場合を示す。また、仮想プロセッサ負荷率５０１は、ＶＭ１２０に割り当てられた仮想プロセッサの負荷率を示し、物理プロセッサ負荷率５０２は、サーバ１１０が備えるプロセッサの負荷率を示す。
【００７７】
例えば、プロセッサの負荷の監視の結果、仮想プロセッサの負荷率が８５％である場合、仮想プロセッサ負荷率５０１のエントリを参照すると、ＶＭ追加５０３に該当するため、ＶＭ１２０が追加される。
【００７８】
以下の説明では、ＶＭ１２０を追加する必要がある場合をＶＭ１２０の追加イベントと記載し、ＶＭ１２０を削除する必要がある場合をＶＭ１２０の削除イベントと記載する。
【００７９】
図６は、本発明の実施例におけるクライアント管理テーブル３２５の一例を示す説明図である。図７は、本発明の実施例におけるサービス種別管理テーブル３２６の一例を示す説明図である。図８は、本発明の実施例における物理サーバ管理テーブル３２７の一例を示す説明図である。
【００８０】
クライアント管理テーブル３２５は、クライアント名６０１及びクライアント番号６０２を含む。クライアント名６０１は、クライアント計算機１６０を操作するクライアント（ユーザ）を識別するための識別名を格納する。クライアント番号６０２は、クライアント計算機１６０を操作するクライアント（ユーザ）を一意に識別するための識別番号を格納する。
【００８１】
サービス種別管理テーブル３２６は、サービス種別７０１及びサービス番号７０２を含む。サービス種別７０１は、提供されるサービスを識別するための情報を格納する。例えば、アプリケーション１２１の識別番号又は名称等が格納される。サービス番号７０２は、アプリケーション１２１を用いて提供されるサービスを識別するための識別番号を格納する。
【００８２】
なお、クライアント管理テーブル３２５及びサービス種別管理テーブル３２６は、クライアントとの契約時に、サービスネットワークのオペレータによって設定される情報である。
【００８３】
物理サーバ管理テーブル３２７は、サーバ名８０１及び重み情報８０２を含む。サーバ名８０１は、サーバ１１０を識別するための情報を格納する。例えば、サーバ１１０に設定されたサーバ名又は識別番号が考えられる。重み情報８０２は、パケットを振り分ける場合に用いられる重み係数を格納する。
【００８４】
重み係数は、同一のクライアントの同一のサービス種別のサービスを提供するＶＭ１２０が複数存在する場合に、当該複数のＶＭ１２０に対するパケットの振り分け率を算出する場合に用いられる数値である。なお、サービスネットワークの管理者が、サーバ１１０の処理能力等のパラメータに基づいて重み係数数を設定する。
【００８５】
図９は、本発明の実施例におけるＶＭ管理テーブル３２８の一例を示す説明図である。
【００８６】
ＶＭ管理テーブル３２８は、クライアント番号９０１、サービス番号９０２及びＶＭ番号９０３を含む。
【００８７】
クライアント番号９０１及びサービス番号９０２は、クライアント番号６０２及びサービス番号７０２と同一のものである。ＶＭ番号９０３は、クライアント番号９０１に対応するクライアントに、サービス番号７０２に対応するサービスを提供するＶＭ１２０の数を格納する。
【００８８】
本実施例では、クライアント番号９０１及びサービス番号９０２の組み合わせに対して、一つのエントリが生成される。
【００８９】
所定のクライアントにサービスを提供するＶＭ１２０が新たに追加された場合、対応するエントリのＶＭ番号９０３には、現在の値に「１」加算した値が格納される。また、所定のクライアントにサービスを提供するＶＭ１２０が削除された場合、対応するエントリのＶＭ番号９０３には、現在の値に「１」減算した値が格納される。
【００９０】
図９に示す例では、クライアント番号９０１が「ａ１」のクライアントに、サービス番号９０２が「ｂ１」であるサービスを提供するＶＭ１２０が二つ割り当てられていることを表す。
【００９１】
図１０は、本発明の実施例における分散管理テーブル４２４の一例を示す説明図である。
【００９２】
分散管理テーブル４２４は、ソースＩＰアドレス１００１、ＶＬＡＮ番号１００２、クライアント番号１００３、サービス番号１００４及びＶＭ情報１００５を含む。
【００９３】
ソースＩＰアドレス１００１は、クライアントネットワークから送信されたパケットのヘッダに設定されたＩＰアドレスを格納する。ＶＬＡＮ番号１００２は、クライアントネットワークから送信されたパケットのヘッダに設定されたＶＬＡＮの識別番号を格納する。
【００９４】
ソースＩＰアドレス１００１及びＶＬＡＮ番号１００２に格納される情報は、クライアントとのサービス契約時に、サービスネットワークのオペレータによって設定される情報である。また、ソースＩＰアドレス１００１及びＶＬＡＮ番号１００２は、クライアントネットワークの識別情報である。
【００９５】
クライアント番号１００３は、ソースＩＰアドレス１００１及びＶＬＡＮ番号１００２に対応するクライアントの識別番号であり、クライアント番号６０２と同一のものである。サービス番号１００４は、ソースＩＰアドレス１００１及びＶＬＡＮ番号１００２に対応するクライアントに提供されるサービスの識別番号であり、サービス番号７０２と同一のものである。
【００９６】
クライアント番号１００３及びサービス番号１００４に格納される情報は、クライアントとのサービス契約時に、サービスネットワークのオペレータによって設定される情報である。また、クライアント番号１００３及びサービス番号１００４は、サービスネットワークにおける管理情報である。
【００９７】
ＶＭ情報１００５は、ソースＩＰアドレス１００１、ＶＬＡＮ番号１００２、クライアント番号１００３及びサービス番号１００４に対応するパケットが送信されたＶＭ１２０に関する情報を格納する。ＶＭ情報１００５には、ＶＭ１２０毎にＶＭ番号１０１１及び重み情報１０１２から構成される列情報が含まれる。すなわち、ＶＭ１２０が追加された場合、新たな列情報がＶＭ情報１００５に追加され、ＶＭ１２０が削除された場合、対応する列情報がＶＭ情報１００５から削除される。
【００９８】
図１１は、本発明の実施例におけるＶＭ管理計算機１００が実行する処理の詳細を説明するフローチャートである。図１２は、本発明の実施例における処理の概要を示す説明図である。図１３は、本発明の実施例における新たなＶＭ１２０に割り当てる仮想ＭＡＣアドレス１２３の一例を示す説明図である。
【００９９】
ＶＭ管理計算機１００は、周期的に以下で説明する処理を実行する。また、ＶＭ管理計算機１００は、クライアント毎に以下で説明する処理を実行する。
【０１００】
本実施例では、クライアント名６０１が「ＡＡＡ社」であるクライアント計算機１６０から送信される処理要求パケットが増加した場合を例に説明する。なお、図１２に示すように、当該クライアントにサービスを提供するＶＭ１２０として、サーバ１１０−１のＶＭ１２０−１及びＶＭ１２０−２が割り当てられているものとする。
【０１０１】
まず、ＶＭ管理計算機１００は、ＶＭ１２０−１及びＶＭ１２０−２の仮想プロセッサの負荷率を監視する（ステップＳ１１０１）。
【０１０２】
具体的には、図１２に示すように、ＶＭ管理計算機１００は、サーバ１１０−１の仮想化ソフトウェア１３０−１から、ＶＭ１２０−１及びＶＭ１２０−２の仮想プロセッサの負荷率を取得する（ステップＳ１２０１）。このとき、ＶＭ管理計算機１００は、サーバ１１０−１自身のプロセッサの負荷率も取得する。なお、ＶＭ１２０−１及びＶＭ１２０−２の仮想プロセッサの負荷率の監視方法は、前述したものに限定されない。
【０１０３】
ＶＭ管理計算機１００は、取得された仮想プロセッサの負荷率に基づいて、クライアントに割り当てるＶＭ１２０の数を変更する必要があるか否かを判定する（ステップＳ１１０２）。
【０１０４】
具体的には、ＶＭ管理計算機１００は、プロセッサ負荷監視テーブル３２４を参照して、ＶＭ１２０−１に割り当てられた仮想プロセッサの負荷率、ＶＭ１２０−２に割り当てられた仮想プロセッサの負荷率及びサーバ１１０自身のプロセッサの負荷率の少なくともいずれかが条件に合致するか否かを判定する。
【０１０５】
本実施例では、ＶＭ１２０−１の仮想プロセッサの負荷率が８０％以上であるものとする。この場合、ＶＭ１２０の追加が必要であるため、ＶＭ管理計算機１００は、クライアントに割り当てるＶＭ１２０の数を変更する必要があると判定する。
【０１０６】
クライアントに割り当てるＶＭ１２０の数を変更する必要があると判定された場合、ＶＭ管理計算機１００は、ステップＳ１１０２の判定結果に基づいて、ＶＭ１２０の追加イベントであるか否かを判定する（ステップＳ１１０３）。
【０１０７】
ＶＭ１２０の追加イベントであると判定された場合、ＶＭ管理計算機１００は、新たに追加するＶＭ１２０に割り当てる仮想ＭＡＣアドレス１２３を生成するための処理を実行する（ステップＳ１１０４〜ステップＳ１１０８）。このとき、ＶＭ管理計算機１００は、仮想化ソフトウェア１３０−１に問い合わせることによって、ＶＭ１２０−１上で実行されるアプリケーション１２１−１の識別情報を取得する。
【０１０８】
まず、ＶＭ管理計算機１００は、クライアント管理テーブル３２５及びサービス種別管理テーブル３２６から、ＶＭ１２０の追加対象のクライアントのクライアント番号６０２及び当該クライアントに対応するサービス番号７０２を取得する（ステップＳ１１０４）。具体的には、以下のような処理が実行される。
【０１０９】
ＶＭ管理計算機１００は、クライアント管理テーブル３２５のクライアント名６０１を参照して、処理対象のクライアントのクライアント名と一致するエントリを検索する。ＶＭ管理計算機１００は、検索されたエントリからクライアント番号６０２を取得する。
【０１１０】
また、ＶＭ管理計算機１００は、サービス種別管理テーブル３２６のサービス種別７０１を参照して、ＶＭ１２０上で実行されるアプリケーション１２１−１の識別情報と一致するエントリを検索する。ＶＭ管理計算機１００は、検索されたエントリからサービス番号７０２を取得する。
【０１１１】
本実施例では、クライアント番号６０２として「ａ１」、サービス番号７０２として「ｂ１」が取得される。
【０１１２】
以上がステップＳ１１０４の処理である。
【０１１３】
次に、ＶＭ管理計算機１００は、取得されたクライアント番号６０２及びサービス番号７０２に基づいて、ＶＭ管理テーブル３２８を参照して、対応するエントリを検索する（ステップＳ１１０５）。
【０１１４】
本実施例では、ＶＭ管理計算機１００は、クライアント番号９０１が「ａ１」かつサービス番号９０２が「ｂ１」であるエントリを検索する。ＶＭ管理計算機１００は、検索されたエントリのＶＭ番号９０３を参照することによって、クライアントにサービスを提供するＶＭ１２０の数を把握することができる。
【０１１５】
図９に示す例では、クライアントにサービスを提供するＶＭ１２０が二つ割り当てられていることが分かる。
【０１１６】
ＶＭ管理計算機１００は、検索されたエントリのＶＭ番号９０３を更新する（ステップＳ１１０６）。
【０１１７】
具体的には、ＶＭ管理計算機１００は、検索されたエントリのＶＭ番号９０３の値に「１」を加算した値を格納する。本実施例では、ＶＭ番号９０３が「２」から「３」に更新される。
【０１１８】
ＶＭ管理計算機１００は、新たなＶＭ１２０を生成するサーバ１１０を決定する（ステップＳ１１０７）。
【０１１９】
新たなＶＭ１２０を生成するサーバ１１０の決定方法は、公知の技術を用いればよいため説明を省略するが、例えば、割り当て可能な物理リソースを最も多く有するサーバ１１０を選択する方法、又は、プロセッサの等の負荷が最も低いサーバ１１０を選択する方法が考えられる。なお、本発明は、新たなＶＭ１２０を生成するサーバ１１０の決定方法に限定されない。
【０１２０】
本実施例では、サーバ１１０−２に新たなＶＭ１２０−３が生成されるものとする。また、ＶＭ１２０−３は、ＶＭ１２０−１又はＶＭ１２０−２のコピーであるものとする。
【０１２１】
ＶＭ管理計算機１００は、物理サーバ管理テーブル３２７から、新たなＶＭ１２０を生成するサーバ１１０−２の重み係数を取得する（ステップＳ１１０８）。
【０１２２】
具体的には、ＶＭ管理計算機１００は、物理サーバ管理テーブル３２７を参照して、サーバ名８０１がサーバ１１０−２の識別名と一致するエントリを検索する。ＶＭ管理計算機１００は、検索されたエントリの重み情報８０２から重み係数を取得する。本実施例では、重み係数として「ｃ２」が取得される。
【０１２３】
ＶＭ管理計算機１００は、各テーブルから取得された情報に基づいて、新たなＶＭ１２０に割り当てる仮想ＭＡＣアドレス１２３−３を生成する（ステップＳ１１０９）。
【０１２４】
具体的には、ＶＭ管理計算機１００は、図１３に示すように、クライアント番号フィールド２０１に「ａ１」、サービス種別フィールド２０２に「ｂ１」、重み情報フィールド２０３に「ｃ２」、ＶＭ番号フィールド２０４に「３」を含め、さらに、制御フィールド２０５に制御コード「Ｓｅｔ」を含めた仮想ＭＡＣアドレス１２３−３を生成する。
【０１２５】
ここで、制御コード「Ｓｅｔ」は、仮想ＭＡＣアドレス１２３が有効であることを示し、ロードバランサ１５０に当該仮想ＭＡＣアドレス１２３を用いて転送処理を実行させるための制御コードである。
【０１２６】
ＶＭ管理計算機１００は、仮想化ソフトウェア１３０−２に対して、生成された仮想ＭＡＣアドレス１２３−３を含むＶＭ生成指示を送信し（ステップＳ１１１０、ステップＳ１２０２）、処理を終了する。
【０１２７】
仮想化ソフトウェア１３０−２は、受信したＶＭ生成指示にしたがって、ＶＭ１２０−３を生成する。このとき、ＶＭ１２０−３には、生成された仮想ＭＡＣアドレス１２３−３が割り当てられる。なお、ＶＭ１２０が削除されるまでの間、制御フィールド２０５に「Ｓｅｔ」が設定された仮想ＭＡＣアドレス１２３−３が使用される。
【０１２８】
ステップＳ１１０３において、ＶＭ１２０の追加イベントでない、すなわち、ＶＭ削除イベントであると判定された場合、ＶＭ管理計算機１００は、クライアント管理テーブル３２５及びサービス種別管理テーブル３２６から、ＶＭ１２０の削除対象のクライアントのクライアント番号６０２及び当該クライアントに対応するサービス番号７０２を取得する（ステップＳ１１１１）。ステップＳ１１１１の処理は、ステップＳ１１０４と同一である。
【０１２９】
ＶＭ管理計算機１００は、取得されたクライアント番号６０２及びサービス番号７０２に基づいて、ＶＭ管理テーブル３２８を参照して、対応するエントリを検索する（ステップＳ１１１２）。ステップＳ１１１２の処理は、ステップＳ１１０５と同一である。
【０１３０】
ＶＭ管理計算機１００は、検索されたエントリのＶＭ番号９０３を更新する（ステップＳ１１１３）。
【０１３１】
具体的には、ＶＭ管理計算機１００は、検索されたエントリのＶＭ番号９０３の値に「１」を減算した値を格納する。
【０１３２】
ＶＭ管理計算機１００は、仮想化ソフトウェア１３０に、ＶＭ１２０の削除指示を送信し（ステップＳ１１１４）、処理を終了する。
【０１３３】
例えば、ＶＭ１２０−２を削除する場合、ＶＭ管理計算機１００は、仮想化ソフトウェア１３０−１に対してＶＭ１２０−２の削除指示を送信する。このとき、仮想化ソフトウェア１３０−１は、ＶＭ１２０−２に対してシャットダウン指示を送信する。ＶＭ１２０−２は、シャットダウン指示を受信すると、自身に割り当てられた仮想ＭＡＣアドレス１２３−２の制御フィールド２０５に制御コード「Ｄｅｌ」を格納したＧｒａｔｕｉｔｏｕｓ  ＡＲＰパケットを送信する。ＶＭ１２０−２は、シャットダウン処理終了後、サーバ１１０−１から削除される。
【０１３４】
なお、制御コード「Ｄｅｌ」は、仮想ＭＡＣアドレス１２３が無効であることを示し、ロードバランサ１５０に当該仮想ＭＡＣアドレス１２３に関する情報の削除を指示するための制御コードである。
【０１３５】
図１４は、本発明の実施例における仮想ＭＡＣアドレス１２３の通知方法の一例を示す説明図である。
【０１３６】
本実施例では、Ｇｒａｔｕｉｔｏｕｓ  ＡＲＰパケットを用いてＶＭ１２０に割り当てられた仮想ＭＡＣアドレス１２３が通知される。
【０１３７】
新たに生成されたＶＭ１２０−３は、起動後、割り当てられた仮想ＭＡＣアドレス１２３−３を用いて、Ｇｒａｔｕｉｔｏｕｓ  ＡＲＰパケットを生成し、生成されたＧｒａｔｕｉｔｏｕｓ  ＡＲＰパケットを送信する。
【０１３８】
ここで、Ｇｒａｔｕｉｔｏｕｓ  ＡＲＰパケットは、ブロードキャストパケットであり、Ｌ２スイッチ１４０及びロードバランサ１５０に、装置自身のＭＡＣアドレス（ここでは、ＶＭ１２０−３の仮想ＭＡＣアドレス１２３−３）を通知するために用いられる。
【０１３９】
Ｌ２スイッチ１４０は、ＶＭ１２０−３から送信されたＧｒａｔｕｉｔｏｕｓ  ＡＲＰパケットを「ポートＹＹ」から受信し、「ポートＸＸ」及び「ポートＺＺ」から当該パケットを送信する。
【０１４０】
ロードバランサ１５０は、Ｌ２スイッチ１４０の「ポートＺＺ」を介して、Ｇｒａｔｕｉｔｏｕｓ  ＡＲＰパケットを受信する。また、サーバ１１０−１は、「ポートＸＸ」を介して、Ｇｒａｔｕｉｔｏｕｓ  ＡＲＰパケットを受信する。
【０１４１】
前述したようにロードバランサ１５０は、Ｌ２スイッチ１４０を介して受信したＧｒａｔｕｉｔｏｕｓ  ＡＲＰパケットに基づいて、新たに生成されたＶＭ１２０の仮想ＭＡＣアドレスを取得することができる。
【０１４２】
また、ＶＭ１２０−３はクライアント名が「ＡＡＡ社」であるクライアント計算機１６０へパケットを送信する場合、ゲストＯＳ１２２−３が、サービスネットワークイーサネットワークヘッダにてカプセル化を行い、Ｌ２スイッチ１４０に送信する。サービスネットワークイーサネットワークヘッダの宛先ＭＡＣアドレスにはロードバランサ１５０のＭＡＣアドレス１４１０が用いられ、サービスネットワークイーサネットワークヘッダの送信元ＭＡＣアドレスにはＶＭ１２０−３の仮想ＭＡＣアドレス１２３−３が用いられる。
【０１４３】
また、ＶＭ１２０−３はクライアント名が「ＡＡＡ社」であるクライアント計算機１６０へパケットを送信する場合、ゲストＯＳ１２２−３が、サービスネットワーク内のイーサネットパケットを生成し、Ｌ２スイッチ１４０に送信する。サービスネットワーク内のイーサネットパケットの宛先ＭＡＣアドレスには、ロードバランサ１５０のＭＡＣアドレス１４１０が用いられ、サービスネットワーク内のイーサネットパケットの送信元ＭＡＣアドレスにはＶＭ１２０−３の仮想ＭＡＣアドレス１２３−３が用いられる。
【０１４４】
Ｌ２スイッチ１４０は、前述したパケットを受信すると、当該パケットをポートＺＺから送信する。Ｌ２スイッチ１４０のポートＺＺから送信されたパケットは、ロードバランサ１５０が受信する。
【０１４５】
なお、Ｌ２スイッチ１４０は、図１５に示すようなＭＡＣテーブル１５００を用いて、受信したパケットを転送する。
【０１４６】
図１５は、本発明の実施例におけるＭＡＣテーブル１５００の一例を示す説明図である。図１５では、ＶＭ１２０−３から送信されたＧｒａｔｕｉｔｏｕｓ  ＡＲＰパケットが転送された後のＭＡＣテーブル１５００を示している。
【０１４７】
ＭＡＣテーブル１５００は、Ｌ２スイッチポート１５０１及びＭＡＣアドレス１５０２を含む。Ｌ２スイッチポート１５０１は、Ｌ２スイッチ１４０が備えるポートの識別情報を格納する。ＭＡＣアドレス１５０２は、Ｌ２スイッチ１４０のポートを介して接続される装置のＭＡＣアドレスを格納する。
【０１４８】
例えば、Ｌ２スイッチ１４０は、ＶＭ１２０−３に割り当てられた仮想ＭＡＣアドレス１２３−３を宛先とするパケットを受信した場合、ＭＡＣテーブル１５００を参照して、「ポートＹＹ」からサーバ１１０−２に当該パケットを転送する。これによって、ＶＭ１２０−３は、パケットを受信することができる。
【０１４９】
なお、図１５に示すように、ＶＭ１２０−１及びＶＭ１２０−２に割り当てられた仮想ＭＡＣアドレス１２３も、図１３に示すような構造となっている。
【０１５０】
また、ＶＭ１２０が削除される場合、ＭＡＣテーブル１５００には、削除対象のＶＭ１２０の仮想ＭＡＣアドレス１２３として、制御フィールド２０５が「Ｓｅｔ」である仮想ＭＡＣアドレス１２３と、制御フィールド２０５が「Ｄｅｌ」である仮想ＭＡＣアドレス１２３とが格納される。この場合、Ｌ２スイッチ１４０は、所定の期間経過後に、ＭＡＣテーブル１５００から当該エントリは自動的に削除する。
【０１５１】
ここで、サービスネットワーク内イーサネットパケット１８０について説明する。
【０１５２】
図１６は、本発明の実施例におけるサービスネットワーク内イーサネットパケット１８０の一例を示す説明図である。
【０１５３】
サービスネットワーク内イーサネットパケット１８０は、ペイロード１７１、ＭＡＣヘッダ１７２及び仮想ＭＡＣヘッダ１８１から構成される。
【０１５４】
ペイロード１７１は、具体的なデータが格納されるフィールドである。ＭＡＣヘッダ１７２は、クライアントネットワーク内のクライアント計算機１６０のＭＡＣアドレスが格納されるフィールドである。
【０１５５】
仮想ＭＡＣヘッダ１８１は、サービスネットワーク内で用いられるヘッダ情報であり、ロードバランサＭＡＣアドレス１７０１及び仮想ＭＡＣアドレス１７０２から構成される。後述するように、仮想ＭＡＣヘッダ１８１は、ロードバランサ１５０によって付与され、また、削除される。
【０１５６】
図１７Ａ及び図１７Ｂは、本発明の実施例におけるロードバランサ１５０が実行する処理の詳細を説明するフローチャートである。
【０１５７】
ロードバランサ１５０は、パケットを受信すると（ステップＳ１７０１）、当該パケットがサービスネットワークから送信されたＡＲＰパケットであるか否かを判定する（ステップＳ１７０２）。具体的には、以下のような処理が実行される。
【０１５８】
ロードバランサ１５０は、受信したパケットに仮想ＭＡＣヘッダ１８１が付与されているか否かを判定する。受信したパケットに仮想ＭＡＣヘッダ１８１が付与されている場合、ロードバランサ１５０は、さらに、当該パケットのＭＡＣヘッダ１７２を参照して、ＡＲＰプロトコルの制御コードが含まれるか否かを判定する。
【０１５９】
受信したパケットのＭＡＣヘッダ１７２にＡＲＰプロトコルの制御コードが含まれる場合、ロードバランサ１５０は、受信したパケットがサービスネットワークから送信されたＡＲＰパケットであると判定する。
【０１６０】
受信したイーサネットパケットがサービスネットワークから送信されたＡＲＰパケットであると判定された場合、ロードバランサ１５０は、当該ＡＲＰパケットからクライアント番号及びサービス番号を取得する（ステップＳ１７０３）。
【０１６１】
具体的には、ロードバランサ１５０は、仮想ＭＡＣヘッダ１８１の仮想ＭＡＣアドレス１７０４から、クライアント番号フィールド２０１及びサービス種別フィールド２０２の値を取得する。
【０１６２】
ロードバランサ１５０は、分散管理テーブル４２４を参照して、クライアント番号フィールド２０１及びサービス種別フィールド２０２の値に一致するエントリを検索する（ステップＳ１７０４）。
【０１６３】
具体的には、ロードバランサ１５０は、クライアント番号１００３及びサービス番号１００４が取得されたクライアント番号フィールド２０１及びサービス種別フィールド２０２の値と一致するエントリを検索する。
【０１６４】
ロードバランサ１５０は、仮想ＭＡＣヘッダ１８１の仮想ＭＡＣアドレス１７０４を参照し、制御フィールド２０５に「Ｓｅｔ」が設定されているか否かを判定する（ステップＳ１７０５）。
【０１６５】
制御フィールド２０５に「Ｓｅｔ」が設定されていると判定された場合、ロードバランサ１５０は、分散管理テーブル４２４を更新し（ステップＳ１７０６）、処理を終了する。具体的には、以下のような処理が実行される。
【０１６６】
ロードバランサ１５０は、ステップＳ１７０４において検索されたエントリのＶＭ情報１００５に新たな列情報を追加する。さらに、ロードバランサ１５０は、追加された列情報のＶＭ番号１０１１にＶＭ番号フィールド２０４に設定された値を格納し、重み情報１０１２に重み情報フィールド２０３に設定された値を格納する。
【０１６７】
制御フィールド２０５に「Ｓｅｔ」が設定されていないと判定された場合、すなわち、制御フィールド２０５に「Ｄｅｌ」が設定されていると判定された場合、ロードバランサ１５０は、分散管理テーブル４２４を更新し（ステップＳ１７０７）、処理を終了する。具体的には、以下のような処理が実行される。
【０１６８】
ロードバランサ１５０は、受信したパケットの仮想ＭＡＣヘッダ１８１を参照して、クライアント番号フィールド２０１、サービス種別フィールド２０２及びＶＭ番号フィールド２０４に設定された値を取得する。ロードバランサ１５０は、分散管理テーブル４２４を参照して、クライアント番号フィールド２０１及びサービス種別フィールド２０２の値に一致するエントリを検索する。
【０１６９】
さらに、ロードバランサ１５０は、検索されたエントリのＶＭ情報１００５を参照して、ＶＭ番号１０１１が取得されたＶＭ番号フィールド２０４の値と一致する列情報を検索する。ロードバランサ１５０は、検索された列情報を削除する。
【０１７０】
受信したパケットがサービスネットワークから送信されたＡＲＰパケットではないと判定された場合、ロードバランサ１５０は、データパケットを受信したものとして、以下の処理を実行する。
【０１７１】
まず、ロードバランサ１５０は、受信したパケットがクライアントネットワークから送信されたパケットであるか否かを判定する（ステップＳ１７５１）。
【０１７２】
具体的には、ロードバランサ１５０は、受信したパケットに仮想ＭＡＣヘッダ１８１が付与されているか否かを判定する。受信したパケットに仮想ＭＡＣヘッダ１８１が付与されていない場合、当該パケットはクライアントネットワークから送信されたパケットであると判定される。
【０１７３】
受信したパケットがクライアントネットワークから送信されたパケットであると判定された場合、ロードバランサ１５０は、当該パケットからソースＩＰアドレス及びＶＬＡＮ番号を取得する（ステップＳ１７５２）。
【０１７４】
具体的には、ロードバランサ１５０は、受信したパケットのＭＡＣヘッダ１７２を解析することによって、ソースＩＰアドレス及びＶＬＡＮ番号を取得する。
【０１７５】
ロードバランサ１５０は、分散管理テーブル４２４から、取得されたソースＩＰアドレス及びＶＬＡＮ番号と一致するエントリを検索する（ステップＳ１７５３）。
【０１７６】
具体的には、ロードバランサ１５０は、ソースＩＰアドレス１００１及びＶＬＡＮ番号１００２が、取得されたソースＩＰアドレス及びＶＬＡＮ番号と一致するエントリを検索する。
【０１７７】
ロードバランサ１５０は、検索されたエントリのＶＭ情報１００５に複数のＶＭ１２０の情報が存在するか否かを判定する（ステップＳ１７５４）。
【０１７８】
具体的には、検索されたエントリのＶＭ情報１００５に、ＶＭ１２０の列情報が複数含まれるか否かを判定する。当該ＶＭ情報１００５に、ＶＭ１２０の列情報が複数含まれる場合、検索されたエントリにＶＭ情報１００５に複数のＶＭ１２０の情報が存在すると判定される。
【０１７９】
検索されたエントリのＶＭ情報１００５に一つのＶＭ１２０の列情報のみ存在すると判定された場合、ロードバランサ１５０は、転送先のＶＭ番号を「１」に決定して（ステップＳ１７５８）、ステップＳ１７５６に進む。
【０１８０】
検索されたエントリにＶＭ情報１００５に複数のＶＭ１２０の情報が存在すると判定された場合、ロードバランサ１５０は、ＶＭ情報１００５から、全てのＶＭ１２０の重み情報１０１２を取得し、取得された重み情報１０１２に基づいて、受信したパケットの転送先のＶＭ１２０を決定する（ステップＳ１７５５）。
【０１８１】
例えば、ロードバランサ１５０は、取得された重み情報１０１２に基づいて、各ＶＭ１２０へ転送するパケットの配分を算出し、算出されたパケットの配分及び過去の転送履歴に基づいて、受信したパケットを転送するＶＭ１２０を決定する。なお、本発明は、前述したＶＭ１２０の決定方法に限定されず、その他の方法を用いてもよい。
【０１８２】
ロードバランサ１５０は、仮想ＭＡＣヘッダ１８１を生成する（ステップＳ１７０８）。具体的には、以下のような処理が実行される。
【０１８３】
ロードバランサ１５０は、仮想ＭＡＣヘッダ１８１のロードバランサＭＡＣアドレス１７０１に自身のＭＡＣアドレスを設定する。
【０１８４】
また、ロードバランサ１５０は、ステップＳ１７０５において検索されたエントリからクライアント番号１００３、サービス番号１００４を取得する。さらに、ロードバランサ１５０は、当該エントリのＶＭ情報１００５からパケットの転送先に決定されたＶＭ１２０に対応する列情報のＶＭ番号１０１１及び重み情報１０１２を取得する。
【０１８５】
ロードバランサ１５０は、取得されたクライアント番号１００３、サービス番号１００４、ＶＭ番号１０１１及び重み情報１０１２に基づいて、仮想ＭＡＣアドレス１２３を生成し、仮想ＭＡＣアドレス１７０２に生成された仮想ＭＡＣアドレス１２３を設定する。なお、制御フィールド２０５には「Ｓｅｔ」が格納される。
【０１８６】
例えば、受信したパケットの転送先がＶＭ１２０−３である場合、図１３に示すような仮想ＭＡＣアドレスが生成される。
【０１８７】
以上のようにして、仮想ＭＡＣヘッダ１８１が生成される。
【０１８８】
次に、ロードバランサ１５０は、受信したパケットをサービスネットワーク内イーサネットパケット１８０にカプセル化し、当該パケットを送信する（ステップＳ１７０９）。その後、ロードバランサ１５０は、処理を終了する。
【０１８９】
具体的には、ロードバランサ１５０は、受信したパケットに生成された仮想ＭＡＣヘッダ１８１を付与することによって、サービスネットワーク内イーサネットパケット１８０にカプセル化する。
【０１９０】
Ｌ２スイッチ１４０は、ロードバランサ１５０から送信されたパケットから宛先ＭＡＣアドレスを取得し、取得した宛先ＭＡＣアドレスに基づいてＭＡＣテーブル１５００を参照する。Ｌ２スイッチ１４０は、当該参照の結果から、受信したパケットの送信先が、ポートＹＹを介して接続されるＶＭ１２０−３であることが分かる。Ｌ２スイッチ１４０のポートＹＹから送信されたパケットは、サーバ１１０−２の仮想化ソフトウェア１３０−２によって受信され、ＶＭ１２０−３に転送される。
【０１９１】
ステップＳ１７５１において、受信したパケットがクライアントネットワークから送信されたパケットでない、すなわち、受信したパケットがサービスネットワークから送信されたパケットであると判定された場合、ロードバランサ１５０は、当該パケットの仮想ＭＡＣヘッダ１８１を削除した後、クライアントネットワークに送信する（ステップＳ１７５９）。
【０１９２】
本発明の一実施例によれば、クライアント計算機１６０から送信される処理パケットの増減に応じて、ＶＭ１２０を自動的に追加又は削除する場合に、振り分けるための情報が含まれる仮想ＭＡＣアドレス１２３をロードバランサ１５０に通知することができる。これによって、ロードバランサ１５０は、即時かつ柔軟に、クライアント計算機１６０から送信されたパケットを振り分けることができる。
【０１９３】
なお、本実施例では、サービスネットワーク内のパケット転送にＬ２スイッチ１４０を用いた構成であったが、本発明はこれに限定されない。パケットを転送する装置として、Ｌ２スイッチ１４０の代わりに、Ｌ３スイッチを用いても同様の効果を奏することが可能である。
【０１９４】
なお、本実施例では、ＶＭ管理計算機１００を一つのハードウェアとして実現したが、本発明はこれに限定されず、ソフトウェアとして実装することも可能である。この場合、例えば、一つのサーバ１１０が当該ソフトウェアを実行することによって、ＶＭ管理計算機１００と同様の機能を提供することが可能である。
【０１９５】
なお、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体（例えば、非一時的な記憶媒体）に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０１９６】
さらに、本実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
【０１９７】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０１９８】
１００  ＶＭ管理計算機
１１０  サーバ
１２０  ＶＭ
１２１  アプリケーション
１２２  ゲストＯＳ
１２３  仮想ＭＡＣアドレス
１３０  仮想化ソフトウェア
１４０  Ｌ２スイッチ
１５０  ロードバランサ
１６０  クライアント計算機
１７０  イーサネットパケット
１７１  ペイロード
１７２  ＭＡＣヘッダ
１８０  サービスネットワーク内イーサネットパケット
１８１  仮想ＭＡＣヘッダ
２０１  クライアント番号フィールド
２０２  サービス種別フィールド
２０３  重み情報フィールド
２０４  ＶＭ番号フィールド
２０５  制御フィールド
３１０  プロセッサ
３２０  メモリ
３２１  プロセッサ負荷監視部
３２２  仮想ＭＡＣアドレス生成部
３２３  仮想化ソフトウェア通信部
３２４  プロセッサ負荷監視テーブル
３２５  クライアント管理テーブル
３２６  サービス種別管理テーブル
３２７  物理サーバ管理テーブル
３２８  ＶＭ管理テーブル
３３０  ネットワークインタフェース
４１０  プロセッサ
４２０  メモリ
４２１  ＡＲＰパケット受信部
４２２  データパケットヘッダ検査部
４２３  データパケットヘッダ生成部
４２４  分散管理テーブル
４３０  ネットワークインタフェース
【図１】
2014048900.tif 000003
【図２】
2014048900.tif 000004
【図３】
2014048900.tif 000005
【図４】
2014048900.tif 000006
【図５】
2014048900.tif 000007
【図６】
2014048900.tif 000008
【図７】
2014048900.tif 000009
【図８】
2014048900.tif 000010
【図９】
2014048900.tif 000011
【図１０】
2014048900.tif 000012
【図１１】
2014048900.tif 000013
【図１３】
2014048900.tif 000014
【図１４】
2014048900.tif 000015
【図１５】
2014048900.tif 000016
【図１６】
2014048900.tif 000017
【図１７Ａ】
2014048900.tif 000018
【図１７Ｂ】
2014048900.tif 000019
【図１２】
2014048900.tif 000020