以下に、本願の開示するアドレス割当装置、管理装置、アドレス割当プログラムおよび管理プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。以下に説明する実施形態は、矛盾のない範囲で適宜組み合わせることができる。
[第1の実施形態]
(全体構成)
図1は、第1の実施形態に係るシステムの全体構成例を示す図である。図1に示すように、このシステムは、例えば企業の拠点間をネットワークで接続するシステムであり、それぞれデータセンタを有する拠点(札幌)1および拠点(福岡)11各々とWebサーバ50とがインターネットなどのネットワーク20で接続される。
Webサーバ50は、ユーザ端末10から、マイグレーションさせる仮想マシンの情報を受け付けるサーバ装置であり、物理装置で実現される。例えば、Webサーバ50は、拠点(札幌)1で動作するVM(B)を、拠点(福岡)11にマイグレーションさせるなどの指示を受け付けて、受け付けた指示内容を後述するクラウドコントローラ30に送信する。
例えば、Webサーバ50は、ユーザ端末10からマイグレーション要求を受信すると、Web画面などをユーザ端末10に表示させる。そして、Webサーバ50は、Web画面上で、マイグレーション対象およびマイグレーション先の入力を受け付けて、受け付けた情報をクラウドコントローラ30に送信する。
(拠点(札幌))
拠点(札幌)1は、ユーザ端末10とデータセンタ2とを有する。ユーザ端末10は、データセンタ2または拠点(福岡)11のデータセンタ12等で動作する仮想マシンにアクセスして、各種サービスを利用する端末装置であり、例えばノートパソコンやスマートフォンなどである。
データセンタ2は、1台以上の物理サーバが設置され、クラウドコントローラ30や物理サーバの物理リソースを用いて仮想マシンを動作させるデータセンタである。なお、物理リソースとしては、通信インタフェース、プロセッサ、メモリ、ハードディスクなどである。
具体的には、データセンタ2は、CE(Customer Edge)ルータ3、ルータ4、OVS(Open vSwitch)5、VM(A)、VM(B)、クラウドコントローラ30、DHCP(Dynamic Host Configuration Protocol)サーバ40を有する。CEルータ3は、インターネットなどの通信事業者ネットワーク1aと企業内LAN(Local Area Network)などの企業ネットワークとの境界に設置されたエッジルータであり、このCEルータ3は、物理装置で実現される。
ルータ4は、企業内ネットワークにおいて、拠点(札幌)1のデータセンタ2と拠点(福岡)11のデータセンタ12とを同じネットワークセグメント22で分割するルータである。すなわち、ルータ4は、ユーザ端末10と各データセンタの各VM等との通信を中継する。このルータ4のインタフェース4aは、CEルータ3と接続されるインタフェースであり、IPアドレス(Internet Protocol)として「IP(4a)」が設定される。また、ルータ4のインタフェース4bは、各VMと接続されるインタフェースであり、IPアドレスとして「IP(4b)」が設定される。
したがって、拠点(札幌)1で使用されるユーザ端末10には、デフォルトゲートウェイとして「IP(4a)」が設定される。このため、ユーザ端末10は、各VMにアクセスする場合は、ルータ4を経由してアクセスする。なお、このルータ4は、仮想マシンで実現されてもよく、物理装置で実現されてもよい。
OVS5は、各データセンタの各ルータと各VMとを中継するスイッチであり、データセンタ12のOVS15と協働して、データセンタ間を仮想L2ネットワーク21で接続する仮想スイッチである。例えば、OVS5は、ルータ4のインタフェース4b、VM(A)、VM(B)、データセンタ12のOVS15、クラウドコントローラ30、DHCPサーバ40のそれぞれと接続される。
VM(A)は、例えばWebサーバやDBサーバなどを実行する仮想マシンであり、IPアドレスとして「IP(A)」、MAC(Media Access Control)アドレスとして「MAC(A)」が設定される。VM(B)は、例えばWebサーバやDBサーバなどを実行する仮想マシンであり、IPアドレスとして「IP(B)」、MACアドレスとして「MAC(B)」が設定される。これらのVMは、OVS5を介して、ユーザ端末10と通信を実行する。
DHCPサーバ40は、各VMに対してIPアドレスを割り振るサーバ装置である。このDHCPサーバ40には、一例としてIPアドレス「IP(40)」、MACアドレス「MAC(40)」が設定されている。また、DHCPサーバ40は、仮想マシンで実現されてもよく、物理装置で実現されてもよい。
例えば、DHCPサーバ40は、VM(B)からDHCPディスカバーがブロードキャストで送信されると、当該メッセージに対してDHCPオファーをVM(B)に応答する。その後、DHCPサーバ40は、VM(B)からDHCPリクエストを受信すると、使用されていないIPアドレスをVM(B)に応答する。
このようなDHCPサーバ40は、IPアドレスをVMに送信する際に、VMが稼動する拠点のルータのアドレスをデフォルトゲートウェイアドレスに設定して送信する。この結果、各ルータは、同じ拠点内のルータを経由して通信することができる。なお、本実施形態では、拠点(札幌)1のデータセンタ2内にDHCPサーバ40を設置した例で説明したが、これに限定されるものではない。例えば、拠点(福岡)11のデータセンタ12内に設置されていてもよい。
なお、DHCPサーバ40がVM(B)等へ送信するネットワーク設定情報は、当該DHCPサーバ40の属する拠点に設置されるDNS(Domain Name System)サーバのIPアドレスを含んでいてもよい。これにより、データセンタ間でVM(B)等のマイグレーションが行われたとき、当該VM(B)等は、マイグレーション先の拠点に設置されるDNSサーバを利用することになる。よって、VM(B)等のマイグレーション後、当該VM(B)等が通信先のホスト名から、通信先のIPアドレスを特定するときの通信遅延を縮小化できる。
クラウドコントローラ30は、VMを管理するサーバ装置である。このクラウドコントローラ30は、物理装置で実現されてもよく、仮想マシンで実現されてもよい。例えば、クラウドコントローラ30は、各拠点で動作するVMのIPアドレスやMACアドレスを記憶する。
また、クラウドコントローラ30は、ユーザ操作、管理者操作、予め定められた所定契機などで、所望のVMを他の拠点にマイグレーションさせる。例えば、クラウドコントローラ30は、Webサーバ50から、データセンタ2で動作するVM(B)をデータセンタ12にマイグレーションさせる指示を受信する。すると、クラウドコントローラ30は、受信した指示にしたがって、VM(B)をデータセンタ12にマイグレーションさせる。また、クラウドコントローラ30は、Webサーバを介することなく、ネットワーク管理者や保守者からの操作を直接受け付けて、マイグレーションを開始してもよい。
なお、本実施形態では、拠点(札幌)1のデータセンタ2内にクラウドコントローラ30を設置した例で説明したが、これに限定されるものではない。例えば、拠点(福岡)11のデータセンタ12内に設置されていてもよい。また、クラウドコントローラ30とWebサーバ50とを統合したサーバをインターネット20に接続してもよい。
クラウドコントローラ30をインターネット20上に接続する場合、クラウドコントローラ30から各VMやDHCPサーバ40への通信は、ルータ4等でアドレス変換やポート変換が行われる。また、クラウドコントローラ30と各VM等との間を、暗号化トンネリング通信等で接続してもよい。
(拠点(福岡))
拠点(福岡)11は、データセンタ12を有する。データセンタ12は、1台以上の物理サーバが設置され、物理サーバの物理リソースを用いて仮想マシンを動作させるデータセンタである。
具体的には、データセンタ12は、CEルータ13、ルータ14、OVS15、VM(C)、VM(D)を有する。CEルータ13は、インターネットなどの通信事業者ネットワーク11aと企業内LANなどの企業ネットワークとの境界に設置されたエッジルータであり、このCEルータ13は、物理装置で実現される。
ルータ14は、企業内ネットワークにおいて、拠点(札幌)1のデータセンタ2と拠点(福岡)11のデータセンタ12とを同じネットワークセグメント22で分割するルータである。すなわち、ルータ14は、外部装置と各データセンタの各VMとの通信を中継する。このルータ14のインタフェース14aは、CEルータ13と接続されるインタフェースであり、IPアドレスとして「IP(14a)」が設定される。また、ルータ14のインタフェース14bは、各VMと接続されるインタフェースであり、IPアドレスとして「IP(14b)」が設定される。なお、このルータ14は、仮想マシンで実現されてもよく、物理装置で実現されてもよい。
OVS15は、各データセンタの各ルータと各VMとを中継するスイッチであり、データセンタ2のOVS5と協働して、データセンタ間を仮想L2ネットワーク21で接続する仮想スイッチである。例えば、OVS15は、ルータ14のインタフェース14b、VM(C)、VM(D)、データセンタ1のOVS5のそれぞれと接続される。
VM(C)は、例えばWebサーバやDBサーバなどを実行する仮想マシンであり、IPアドレスとして「IP(C)」、MACアドレスとして「MAC(C)」が設定される。VM(D)は、例えばWebサーバやDBサーバなどを実行する仮想マシンであり、IPアドレスとして「IP(D)」、MACアドレスとして「MAC(D)」が設定される。これらのVMは、OVS15を介して、データセンタ外の外部装置と通信を実行する。
(ネットワーク構成)
上述したように、各拠点にはルータ4とルータ14の異なるデフォルトゲートウェイが設けられている。図1の構成では、拠点(札幌)1で動作するVM(A)およびVM(B)のデフォルトゲートウェイには、ルータ4におけるインタフェース4bのIPアドレス「IP(4b)」が設定される。拠点(福岡)11で動作するVM(C)およびVM(D)のデフォルトゲートウェイには、ルータ14におけるインタフェース14bのIPアドレス「IP(14b)」が設定される。
また、各VMは、動作する拠点が異なるが、同じネットワークセグメントで動作する。つまり、ルータ4、ルータ14、OVS5、OVS15、VM(A)、VM(B)、VM(C)、VM(D)、DHCPサーバ40は、仮想L2ネットワーク21で接続され、同じネットワークセグメント22で動作する。したがって、拠点(福岡)11のルータ14とVM(A)、VM(B)、DHCPサーバ40が通信可能に接続されており、拠点(札幌)1のルータ4とVM(C)やVM(D)が通信可能に接続されている。
(階層構造)
図2は、VMを動作させる物理サーバの階層構造を示す図である。なお、ここでは、一例として1台の物理サーバでVMを動作させる例を説明するが、これに限定されるものではなく、複数台の物理サーバを用いて動作させることができる。
データセンタ2では、物理サーバ6が動作し、データセンタ12では、物理サーバ16が動作する。各物理サーバは、一般的なサーバ装置であり、ハードウェア、プロセッサ、メモリ等を有する。
データセンタ2の物理サーバ6は、ハードウェア6a上でハイパーバイザなどの仮想化ソフトウェア6bを動作させて、仮想環境を提供する。仮想化ソフトウェア6bは、仮想スイッチ6cを動作させる。
同様に、データセンタ12の物理サーバ16は、ハードウェア16a上でハイパーバイザなどの仮想化ソフトウェア16bを動作させて、仮想環境を提供する。仮想化ソフトウェア16bは、仮想スイッチ16cを動作させる。
ここで、仮想スイッチ6cと仮想スイッチ16cは、例えばOpen vSwitch、Open Flow、KVMなどを用いて実現され、仮想L2ネットワーク21を構築する。すなわち、異なるデータセンタ間を仮想ネットワークで通信可能に接続する。
そして、各物理サーバの各仮想化ソフトウェアは、仮想L2ネットワーク21を利用可能な状態で仮想マシンを動作させる。具体的には、仮想化ソフトウェア6bは、物理サーバ6の物理リソースを用いてVM(A)とVM(B)とDHCPサーバ40とを動作させ、仮想スイッチ6cを経由して、各VMを仮想L2ネットワーク21に接続する。同様に、仮想化ソフトウェア16bは、物理サーバ16の物理リソースを用いてVM(C)とVM(D)とを動作させ、仮想スイッチ16cを経由して、各VMを仮想L2ネットワーク21に接続する。
(クラウドコントローラの構成)
次に、図3に示したクラウドコントローラの構成について説明する。図3は、クラウドコントローラの機能構成を示す機能ブロック図である。図3に示すように、クラウドコントローラ30は、通信制御部31、記憶部32、制御部33を有する。ここでは、クラウドコントローラ30が物理装置である例で説明するが、クラウドコントローラ30がVMで実現されている場合でも、物理リソースを用いて同様の機能が実行される。
通信制御部31は、他の装置との通信を制御するインタフェースであり、例えばネットワークインタフェースカードなどである。例えば、通信制御部31は、Webサーバ50からマイグレーション指示およびマイグレーションに関する情報を受信し、DHCPサーバ40に各種情報を送信する。
記憶部32は、メモリやハードディスクなどの記憶装置であり、管理テーブル32aを保持する。なお、クラウドコントローラ30が仮想マシンである場合には、記憶部32は、クラウドコントローラ30に対して割り当てられた、物理サーバのメモリやハードディスクの所定領域などが該当する。
管理テーブル32aは、各データセンタで稼動するVMに関する情報を記憶するテーブルである。図4は、管理テーブルに記憶される情報の例を示す図である。図4に示すように、管理テーブル32aは、「拠点、デフォルトゲートウェイ:アドレス、仮想マシン:アドレス」を対応付けて記憶する。ここで記憶される「拠点」は、VMが稼動する拠点を示す。「デフォルトゲートウェイ:アドレス」は、VMに設定されるデフォルトゲートウェイを特定する情報およびデフォルトゲートウェイのIPアドレスである。「仮想マシン:アドレス」は、VMを特定する情報およびVMのIPアドレスやMACアドレスなどのアドレス情報である。
図4の場合、IP(A)およびMAC(A)が設定されるVM(A)と、IP(B)およびMAC(B)が設定されるVM(B)には、拠点(札幌)1で動作するルータ4のIPアドレス「IP(4b)」をデフォルトゲートウェイとして設定することを示している。
同様に、IP(C)およびMAC(C)が設定されるVM(C)と、IP(D)およびMAC(D)が設定されるVM(D)には、拠点(福岡)11で動作するルータ14のIPアドレス「IP(14b)」をデフォルトゲートウェイとして設定することを示している。
制御部33は、プロセッサなどの電子回路であり、要求受付部34、管理情報更新部35、マイグレーション実行部36、DHCP更新部37、更新指示部38を有する。つまり、各処理部は、プロセッサなどが実行するプロセスやプロセッサが有する電子回路などである。クラウドコントローラ30が仮想マシンである場合には、制御部33は、クラウドコントローラ30に対して割り当てられた、物理サーバのプロセッサが実行する処理部である。
要求受付部34は、Webサーバ50がユーザ端末10から受け付けたVMのマイグレーション指示を受信する処理部である。例えば、要求受付部34は、拠点1のVM(B)を拠点11にマイグレーションさせる指示を受信し、受信した情報を管理情報更新部35やマイグレーション実行部36に出力する。
管理情報更新部35は、VMのマイグレーション等に伴って、管理テーブル32aを更新する処理部である。具体的には、管理情報更新部35は、要求受付部34によって受け付けられた情報に基づいて、管理テーブル32aを更新する。
例えば、管理情報更新部35は、拠点(札幌)1で動作するVM(B)を拠点(福岡)11へマイグレーションさせる要求が受け付けられた場合、図4に示す管理テーブル32aにおいて、拠点(札幌)1に対応付けられる「VM(B):IP(B)/MAC(B)」を拠点(福岡)11に対応付けるように更新する。
マイグレーション実行部36は、要求されたマイグレーションを実行する処理部である。具体的には、マイグレーション実行部36は、要求受付部34によって受け付けられた情報に基づいて、VMのマイグレーションを実行する。
例えば、マイグレーション実行部36は、拠点(札幌)1で動作するVM(B)を拠点(福岡)11へマイグレーションさせる要求が受け付けられた場合、VM(B)を動作させる物理サーバからマイグレーション先の物理サーバへ、メモリコピーなどを実行して、VM(B)のマイグレーションを実行する。
DHCP更新部37は、要求されたマイグレーションに伴って、DHCPサーバ40のアドレス割り当てテーブル42aを更新する処理部である。具体的には、DHCP更新部37は、管理情報更新部35による管理テーブル32aの更新によって、拠点間を跨ったマイグレーションが発生したことを検出した場合に、DHCPサーバ40のテーブルを更新する。
例えば、DHCP更新部37は、管理テーブル32aを監視し、拠点(札幌)1に対応付けられる「VM(B):IP(B)/MAC(B)」が、拠点(福岡)11に対応付けられたことを検出する。すると、DHCP更新部37は、VM(B)について拠点間マイグレーションが発生したと検出する。
そして、DHCP更新部37は、DHCPサーバ40に対して、「VM(B):IP(B)/MAC(B)」を拠点(福岡)のルータ14に対応付ける指示を送信する。このとき、DHCP更新部37は、DHCPサーバ40のアドレス割り当てテーブル42aを直接更新してもよく、DHCPサーバ40に更新させてもよい。
更新指示部38は、マイグレーションしたVMに対して、デフォルトゲートウェイのアドレス更新を指示する処理部である。具体的には、更新指示部38は、マイグレーション実行部36によって拠点間マイグレーションが実行された場合、マイグレーションされたVMに対して、DHCPリクエストの送信を指示する。例えば、上記例で説明すると、更新指示部38は、拠点(札幌)1から拠点(福岡)11へ移動したVM(B)に対して、DHCPリクエストの送信を指示する。
VM(B)は、更新指示部38からの指示にしたがって、DHCPサーバ40へIPアドレスの払い出しをリクエストする。その後、VM(B)は、DHCPサーバ40からIPアドレス「IP(B)」とともにデフォルトゲートウェイのアドレス「IP(14b)」を受信する。そして、VM(B)は、受信したIPアドレスおよびデフォルトゲートウェイをコンフィグに設定する。この結果、VM(B)は、デフォルトゲートウェイ「IP(14b)」を介して、外部との通信を実行できる。
なお、VM(B)は、DHCPサーバ40のアドレス等を把握していない場合、一般的なDHCPシーケンスでDHCPサーバ40を検出した後に、上記処理を実行する。例えば、VM(B)は、DHCPディスカバーをブロードキャストで送信し、DHCPオファーを応答したDHCPサーバ40に対して、DHCPリクエストを送信する。
(DHCPサーバの構成)
次に、図1に示したDHCPサーバ40の構成について説明する。ここでは、DHCPサーバ40が物理装置である例で説明するが、DHCPサーバ40がVMで実現されている場合でも、物理リソースを用いて同様の機能が実行される。
図5は、DHCPサーバの機能構成を示す機能ブロック図である。図5に示すように、DHCPサーバ40は、通信制御部41、記憶部42、制御部43を有する。
通信制御部41は、他の装置の通信を制御する処理部である。なお、この実施形態では、通信制御部41には、IPアドレス「IP(40)」が設定されている。例えば、通信制御部41は、各VMとの間でIPアドレスの割り当てに関する各パケットを送受信し、クラウドコントローラ30からVMの更新情報を受信する。
記憶部42は、メモリやハードディスクなどの記憶装置であり、アドレス割り当てテーブル42aを保持する。なお、DHCPサーバ40が仮想マシンである場合には、記憶部42は、DHCPサーバ40に対して割り当てられた、物理サーバのメモリやハードディスクの所定領域などが該当する。
アドレス割り当てテーブル42aは、VMに割り当てるIPアドレスやデフォルトゲートウェイのアドレス情報を記憶するテーブルである。図6は、アドレス割り当てテーブルに記憶される情報の例を示す図である。
図6に示すように、アドレス割り当てテーブル42aは、「割り当て可能アドレス、割り当てゲートウェイ、対象アドレス情報」を対応付けて記憶する。ここで記憶される「割り当て可能アドレス」は、ネットワークセグメント22において未使用のIPアドレスを示す。「割り当てゲートウェイ」は、VMに割り当てるデフォルトゲートウェイのアドレスを示す。「対象アドレス情報」は、割り当てゲートウェイに設定されるデフォルトゲートウェイを割り当てる対象のVMのアドレス情報を示す。
図6の場合、IP(F)、IP(G)、IP(H)・・・が未使用のIPアドレスであることを示す。また、MACアドレスが「MAC(A)」でIPアドレスが「IP(A)」であるVMと、MACアドレスが「MAC(B)」でIPアドレスが「IP(B)」であるVMとには、デフォルトゲートウェイとしてルータ4のIPアドレス「IP(4b)」を割り当てることを示す。
同様に、MACアドレスが「MAC(C)」でIPアドレスが「IP(C)」であるVMと、MACアドレスが「MAC(D)」でIPアドレスが「IP(D)」であるVMとには、デフォルトゲートウェイとしてルータ14のIPアドレス「IP(14b)」を割り当てることを示す。
制御部43は、プロセッサなどの電子回路であり、テーブル更新部44、リクエスト受信部45、応答部46を有する。つまり、各処理部は、プロセッサなどが実行するプロセスやプロセッサが有する電子回路などである。DHCPサーバ40が仮想マシンである場合には、制御部43は、DHCPサーバ40に対して割り当てられた、物理サーバのプロセッサが実行する処理部である。
テーブル更新部44は、クラウドコントローラ30から受信したVMの情報に基づいて、アドレス割り当てテーブル42aを更新する処理部である。具体的には、テーブル更新部44は、新たなVMが起動した場合、VMが終了した場合、VMのマイグレーションが発生した場合などの契機で、クラウドコントローラ30からVMの情報を受信し、受信した情報にしたがってアドレス割り当てテーブル42aを更新する。
例えば、「VM(B):IP(B)/MAC(B)」が拠点(福岡)11に移動したことがクラウドコントローラ30から通知されたとする。この場合、テーブル更新部44は、アドレス割り当てテーブル42aにおいて「IP(B)/MAC(B)」と「ルータ4/IP(4b)」との対応付けを、「IP(B)/MAC(B)」と「ルータ14/IP(14b)」に更新する。
リクエスト受信部45は、VMからDHCPリクエストを受信する処理部である。また、リクエスト受信部45は、DHCPリクエストを受信したことを応答部46に通知する。なお、リクエスト受信部45は、VMからDHCPディスカバーを受信した場合、送信元のVMに対してDHCPオファーを応答する。
応答部46は、リクエスト受信部45によって受信されたDHCPリクエストに対して、DHCP ACKを応答する処理部である。具体的には、応答部46は、VMからVMのMACアドレスを受信し、当該MACアドレスに対応するIPアドレスおよび割り当てゲートウェイのIPアドレスをアドレス割り当てテーブル42aから特定して応答する。
例えば、応答部46は、受信されたDHCPリクエストからMACアドレス「MAC(B)」を抽出する。そして、応答部46は、抽出したMAC(B)に対応付けられるIPアドレス「IP(B)」とルータ4のIPアドレス「IP(4b)」を、アドレス割り当てテーブル42aから特定する。その後、応答部46は、MACアドレス「MAC(B)」に対して、つまり、送信元のVM(B)に対して、IPアドレス「IP(B)」およびデフォルトゲートウェイのIPアドレス「IP(4b)」を設定したDHCP ACKを応答する。
(クラウドコントローラの処理)
図7は、クラウドコントローラが実行する処理の流れを示すフローチャートである。ここでは、一例として、VMを起動させてからマイグレーションさせるまでの一連の流れを例にして説明する。
図7に示すように、クラウドコントローラ30の管理情報更新部35は、管理者等から、各データセンタで動作するVMの情報を受信すると(S101:Yes)、受信した情報に基づいて管理テーブル32aを生成する(S102)。
例えば、クラウドコントローラ30は、VMがどこの拠点で動作するか、どのようなアドレスを割り当てるか、どのようなMACアドレスを有しているかなどの情報を受け付けて、管理テーブル32aに格納する。
続いて、クラウドコントローラ30のDHCP更新部37は、管理テーブル32aの情報に基づいて、DHCPサーバ40のアドレス割り当てテーブル42aを更新する(S103)。例えば、クラウドコントローラ30は、IPアドレス「IP(A)」およびMAC「MAC(A)」を有するVM(A)のデフォルトゲートウェイが拠点(札幌)1のルータAのIP(4a)であるなどの情報をDHCPサーバ40に送信する。
続いて、クラウドコントローラ30の更新指示部38は、各VMに対してIPアドレスの取得指示を送信する(S104)。この指示を受信した各VMは、DHCPサーバ40にIPアドレスの割り当てを要求し、IPアドレスやデフォルトゲートウェイのアドレスを取得して設定する。
その後、クラウドコントローラ30の要求受付部34が、Webサーバ50から、マイグレーション要求を受信すると(S105:Yes)、管理情報更新部35は、要求受付部34が受け付けたマイグレーション内容を取得する(S106)。
続いて、クラウドコントローラ30の管理情報更新部35は、取得したマイグレーション内容に基づいて、管理テーブル32aを更新する(S107)。
そして、クラウドコントローラ30のマイグレーション実行部36は、受け付けられた内容にしたがってマイグレーションを実行する(S108)。続いて、DHCP更新部37は、更新した管理テーブル32aの情報に基づいて、DHCPサーバ40のアドレス割り当てテーブル42aを更新する(S109)。
このとき、例えば、クラウドコントローラ30は、移動対象のVMが移動前に使用していたIPアドレスと、当該VMのMACアドレスとを対応付けて、DHCPサーバ40のアドレス割り当てテーブル42aを更新する。なお、S108とS109の処理はどちらを先に実行してもよい。
続いて、クラウドコントローラ30の更新指示部38は、マイグレーションさせたVMに対してIPアドレスの取得指示を送信し(S110)、当該VMのIPアドレスおよびデフォルトゲートウェイを更新させる。その後は、マイグレーションが発生するたびに、S101以降の処理が繰り返される。
(DHCPサーバの処理)
図8は、DHCPサーバが実行する処理の流れを示すフローチャートである。図8に示すように、DHCPサーバ40のテーブル更新部44は、クラウドコントローラ30からVMの更新情報を受信すると(S201:Yes)、当該更新情報に基づいて、アドレス割り当てテーブル42aを更新する(S202)。
その後、DHCPサーバ40のリクエスト受信部45が、VMからDHCPリクエストを受信した場合(S203:Yes)、応答部46は、受信したリクエストから、送信元であるVMのMACアドレスなどのアドレス情報を抽出する(S204)。
続いて、DHCPサーバ40の応答部46は、DHCPリクエストから抽出されたアドレス情報に対応するIPアドレスやデフォルトゲートウェイを、アドレス割り当てテーブル42aから特定する(S205)。
その後、DHCPサーバ40の応答部46は、アドレス割り当てテーブル42aから特定した、割り当て対象のIPアドレスおよびデフォルトゲートウェイのIPアドレスを、DHCPリクエストの送信元であるVMに応答する(S206)。
(具体例)
次に、ユーザ端末10のユーザが拠点(札幌)1から拠点(福岡)11へ出張するのに伴って、利便性向上のために、ユーザが利用するVM(B)をデータセンタ12へマイグレーションさせる例を説明する。図9は、VMのマイグレーション後にデフォルトゲートウェイを変更する具体例を説明する図である。図9は、図1と同様の構成を有する。
図9に示すように、ユーザ端末10は、Webサーバ50へアクセスして、Web画面等を用いて出張先の情報を登録し、サービス等の移動を要求する(S301)。図10は、出張先情報を登録する画面例を示す図である。Webサーバ50は、ユーザ端末10からのアクセスを受け付けると、図10に示す画面をユーザ端末10に応答する。
図10に示す画面は、「ユーザID、移動元、移動先、移動対象」を入力させる画面である。「ユーザID」は、出張するユーザの識別子である。「移動元」は、出張元を示す情報であり、「移動先」は、出張先を示す情報であり、「移動対象」は、出張先で使用するサービスやサーバを特定する情報である。この「移動元」、「移動先」、「移動対象」は、例えばプルダウンメニュー等で容易に選択することができる。
ここでは、図10に示すように、Webサーバ50は、ユーザID「U001」、移動元「札幌」、移動先「福岡」、移動対象「Webサーバ(VM(B))」の入力を受け付けたとする。
続いて、クラウドコントローラ30は、Webサーバ50が受け付けたマイグレーション内容に基づいて、管理テーブル32aを更新する(S302)。具体的には、クラウドコントローラ30は、Webサーバ50からマイグレーション内容を取得し、移動対象のVMを移動先のデフォルトゲートウェイに対応付けるように、管理テーブル32aを更新する。
図11は、管理テーブルの更新例を説明する図である。図11に示すように、クラウドコントローラ30は、拠点(札幌)1のデータセンタ2から拠点(福岡)11のデータセンタ12へVM(B)をマイグレーションさせる指示を受信した場合、管理テーブル32aにおいて拠点(札幌)に対応付けられるVM(B)のアドレス情報「IP(B)/MAC(B)」を拠点(福岡)に移動させる。
続いて、クラウドコントローラ30は、要求された指示通り、拠点(札幌)1のデータセンタ2で動作するVM(B)を拠点(福岡)11のデータセンタ12へマイグレーションさせる(S303)。
その後、クラウドコントローラ30は、VM(B)のマイグレーションに伴って、DHCPサーバ40のアドレス割り当てテーブル42aを更新する(S304)。具体的には、クラウドコントローラ30は、VM(B)が拠点間マイグレーションによってデフォルトゲートウェイの対応付けが変更されたことを、DHCPサーバ40に通知する。DHCPサーバ40は、この通知にしたがって、アドレス割り当てテーブル42aを更新する。
図12は、アドレス割り当てテーブルの更新例を説明する図である。クラウドコントローラ30が、VM(B)のアドレス「IP(B)/MAC(B)」とともに、VM(B)がデフォルトゲートウェイ「ルータ14/IP(14b)」に対応付けられたことをDHCPサーバ40に送信する。すると、図12に示すように、DHCPサーバ40は、VM(B)のアドレス「IP(B)/MAC(B)」に対応付けられるデフォルトゲートウェイを、「ルータ4/IP(4b)」から「ルータ14/IP(14b)」に変更する。
そして、クラウドコントローラ30は、VM(B)に対してIPアドレスの割り当て指示を送信し、VM(B)にデフォルトゲートウェイの更新を実行させる(S305)。具体的には、クラウドコントローラ30は、マイグレーションが完了したVM(B)に対してDHCPリクエストの送信を指示する。この指示を受信したVM(B)は、自身のMACアドレス「MAC(B)」を含めたDHCPリクエストを、DHCPサーバ40に送信する。
このDHCPリクエストを受信したDHCPサーバ40は、受信したDHCPリクエストから送信元のMACアドレス「MAC(B)」を抽出する。続いて、DHCPサーバ40は、アドレス割り当てテーブル42aを参照し、抽出したMACアドレス「MAC(B)」に対応するIPアドレス「IP(B)」を特定する。さらに、DHCPサーバ40は、アドレス割り当てテーブル42aを参照し、抽出したMACアドレス「MAC(B)」に対応付けられるデフォルトゲートウェイのIPアドレスが「IP(14b)」であることを特定する。
その後、DHCPサーバ40は、DHCPリクエストの送信元であるVM(B)に対して、IPアドレス「IP(B)」およびデフォルトゲートウェイのIPアドレス「IP(14b)」を含むDHCP ACKを応答する。
図13は、DHCP ACKの例を示す図である。図13に示すように、DHCP ACKは、送信元MAC、宛先MAC、送信元IP、宛先IP、DHCP ACK内容を含む。この具体例では、DHCPサーバは、送信元MACにDHCPサーバ40のMACアドレス「MAC(40)」、宛先MACにVM(B)のMACアドレス「MAC(B)」、送信元IPにDHCPサーバ40のIPアドレス「IP(40)」、宛先IPにVM(B)のIPアドレス「IP(B)」、DHCP ACK内容に「デフォルトゲートウェイのIPアドレス=IP(14b)」を設定して、VM(B)に送信する。
VM(B)は、このDHCP ACKを受信すると、宛先IPに設定される「IP(B)」を自身のIPアドレスとして設定し、DHCP ACK内容に設定される「IP(14b)」をデフォルトゲートウェイに設定する。
その後、ユーザ端末10は、拠点(福岡)11に移動し(S306)、拠点(福岡)11からVM(B)にアクセスする。このとき、VM(B)のデフォルトゲートウェイがルータ4からルータ14に更新されていることから、より通信遅延の少ない経路でアクセスすることができる。
図14は、マイグレーション後の経路が変更される例を説明する図である。図14は、VM(B)のマイグレーションおよびVM(B)のデフォルトゲートウェイの更新が完了した後、ユーザ端末10が出張先の拠点(福岡)11からVM(B)にアクセスした例を図示している。
図14に示すように、従来のように、VM(B)のデフォルトゲートウェイがルータ14に変更されずルータ4のままである場合は、ユーザ端末10は、VM(B)からの応答を、OVS15、仮想L2ネットワーク21、OVS5、ルータ4、CEルータ3を経由するルート51の経路で受信する。
一方で、上述した手法でVM(B)のデフォルトゲートウェイがルータ14に変更された場合は、ユーザ端末10は、VM(B)からの応答について、OVS15、ルータ14、CEルータ13を経由するルート52で受信する。
(効果)
上述したように、同一ネットワークセグメント内でVMのマイグレーションが発生した場合でも、VMが近くのルータをデフォルトゲートウェイに設定することができる。このため、図14に示したように、VMからユーザ端末10への通信を最短経路で実行することができるので、通信遅延を縮小化することができる。
また、ユーザが設定変更などの専門的な作業を行わずに、VMからユーザ端末10への通信を最短経路で実行することができるので、ユーザの負荷増加を低減しつつ、通信遅延を縮小化することができる。
また、VMのマイグレーション後も通信遅延を縮小化することができるので、VMのマイグレーションを頻繁に実行しても通信遅延が抑制でき、仮想環境のメンテナンスや物理サーバのメンテナンスを手軽に実行でき、システムの信頼性が向上する。さらには、仮想マシンを用いたシステム構築の汎用性が向上する。
また、DHCPサーバ40は、アドレス割り当てテーブル42aに、VMのMACアドレスとIPアドレスとデフォルトゲートウェイとを対応付けて記憶する。このため、DHCPサーバ40は、マイグレーションが完了したVMからDHCPリクエストを受信した場合でも、マイグレーション前後で同じIPアドレスを割り当てることができる。この結果、マイグレーション前後でルータ等の設定変更をする必要がないので、管理者等の作業負担を軽減することができ、設定ミスなどの人為的ミスを抑制することができる。また、人為的ミスを抑制できるので、システムの品質や信頼性も向上する。
なお、DHCPサーバ40は、VMのMACアドレスに対応するIPアドレスが対応付けられていない場合には、未使用のIPアドレスを割り当ててもよい。この場合、DHCPサーバ40は、マイグレーション前後でVMのIPアドレスが変更される場合があるので、NAT(Network Address Translation)変換等を行ってパケットを中継するルータ4やルータ14に、VMのアドレスが変更されたことを通知する。この結果、各ルータは、アドレス変換テーブル等を更新することができる。
[第2の実施形態]
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施形態を説明する。
(ルータ数)
例えば、上記実施形態では、同一ネットワークセグメント内でルータが2台である場合を説明したが、これに限定されるものではなく、3台以上のルータが存在してもよい。
(死活監視)
上記実施形態では、クラウドコントローラ30は、ルータ4とルータ14とを死活監視し、一方のルータの起動が確認できない場合には、各VMのデフォルトゲートウェイを起動中のルータに設定することができる。例えば、クラウドコントローラ30は、ルータ4の起動が確認できない場合には、管理テーブル32aにおいてルータ4に対応付けられているアドレス情報の対応付けを、ルータ14に変更する。
さらに、クラウドコントローラ30は、アドレス情報の対応付けが変更されたことをDHCPサーバ40に送信し、DHCPサーバ40は、アドレス割り当てテーブル42aを更新する。そして、上記実施形態と同様の手法を実行することで、各VMのデフォルトゲートウェイを、正常に稼動しているルータ14に変更することができる。なお、死活監視は、ルータ間で実行してもよく、VMやDHCPサーバ40が実行してもよい。
(DHCPリクエスト)
上記実施形態では、クラウドコントローラ30が、マイグレーションしたVMに対して、デフォルトゲートウェイなどを更新する指示を送信する例を説明したが、これに限定されるものではない。
例えば、クラウドコントローラ30は、DHCPサーバ40に対して、マイグレーションしたVMのデフォルトゲートウェイなどを更新させる指示を送信することもできる。この指示を受信したDHCPサーバ40は、マイグレーション後のVMに対して、DHCP force renewを送信し、VMにDHCP再取得を実行させる。
(ルータ)
上記実施形態のルータ4やルータ14は、NAT変換やルーティング等を実行して通信を中継する。例えば、ルータ4は、インタフェース4aにグローバルIPアドレスが設定され、インタフェース4bにプライベートIPアドレスが設定されている場合、一般的なNAT変換を用いて、グローバルIPアドレスからプライベートIPアドレスへの変換やプライベートIPアドレスからグローバルIPアドレスへの変換を実行して、通信を中継する。また、各ルータは、ルーティングテーブルを保持し、ルーティングテーブルに対して経路情報を静的または動的に設定し、ルーティングテーブルに記憶される経路情報に基づいて、通信を中継する。
(ネットワーク構成)
上記実施形態では、ユーザ端末10と各CEルータとがインターネットで接続される例を説明したが、これに限定されるものではない。例えば、ユーザ端末10と各CEルータとの接続には、インターネットの他に、VPN(Virtual Private Network)、広域イーサネット、モデムや専用線を用いることができる。
例えば、拠点から広告する経路をユーザがリアルタイムに制御できないネットワークでは、ユーザ端末10が出張先でVM(B)にアクセスする場合、札幌経由でアクセスするか、福岡経由でアクセスするかは、札幌や福岡の拠点にVM(B)にアクセスするためのグローバルIPアドレスを割り振り、ユーザ端末10がグローバルIPアドレスを切り替えて、アクセスする必要がある。このようなネットワークの一例としては、例えばインターネットや広告する経路のアドレスをネットワーク事業者に申し込まなければならないIP−VPN等がある。
また、拠点から広告する経路をユーザがリアルタイムに制御できるネットワークでは、ユーザ端末10が出張先でVM(B)にアクセスする場合に、札幌のルータ4経由でアクセスするか、福岡のルータ14でアクセスするかは、ユーザが広告する経路によって変更可能である。このようなネットワークの一例としては、例えば、広告する経路のアドレス情報を制限されていないIP−VPNサービスや、ユーザがIPレイヤを構築するEthernet−VPN、インターネットVPN等がある。
(システム構成等)
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(プログラム)
また、上記実施形態に係るクラウドコントローラ30が実行する処理をコンピュータが実行可能な言語で記述したアドレス管理プログラムを作成することもできる。この場合、コンピュータがアドレス管理プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるアドレス管理プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたアドレス管理プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
同様に、上記実施形態に係るDHCPサーバ40が実行する処理をコンピュータが実行可能な言語で記述したアドレス更新プログラムを作成することもできる。この場合、コンピュータがアドレス更新プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるアドレス更新プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたアドレス更新プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
以下に、図3等に示したクラウドコントローラ30と同様の機能を実現するアドレス管理プログラムを実行するコンピュータの一例、または、図5等に示したDHCPサーバ40と同様の機能を実現するアドレス更新プログラムを実行するコンピュータの一例を説明する。
図15は、アドレス管理プログラムまたはアドレス更新を実行するコンピュータを示す図である。図15に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
ここで、図15に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ1090やメモリ1010に記憶される。
また、アドレス管理プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明した要求受付部34と同様の情報処理を実行する要求受付手順と、管理情報更新部35と同様の情報処理を実行する管理情報更新手順と、マイグレーション実行部36と同様の情報処理を実行するマイグレーション実行手順と、DHCP更新部37と同様の情報処理を実行するDHCP更新手順と、更新指示部38と同様の情報処理を実行する更新指示手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
また、アドレス管理プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、アドレス管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、アドレス管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
同様に、アドレス更新プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したテーブル更新部44と同様の情報処理を実行するテーブル更新手順と、リクエスト受信部45と同様の情報処理を実行するリクエスト受信手順と、応答部46と同様の情報処理を実行する応答手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
また、アドレス更新プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、アドレス更新プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、アドレス更新プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。