前記決定部は、前記第2負荷が前記第1負荷よりも小さく、かつ、前記第1装置の応答時間が前記第1負荷に対応する閾値を超えている場合、前記第1装置から前記第2装置への切り替えを決定することを特徴とする請求項1記載の情報処理装置。
前記制御部は、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が所定値よりも大きい場合、前記第1装置に対するリクエストを前記第1装置と第3装置とに振り分け、
前記決定部は、前記リクエストが前記第1装置と前記第3装置とに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする請求項1又は2記載の情報処理装置。
前記制御部は、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が前記所定値以下である場合、前記第1装置に対するリクエストを、前記第1装置内で動作する第1仮想マシンと、前記第3装置内で動作する第2仮想マシンとに振り分け、
前記第2仮想マシンは、前記第1仮想マシンよりも性能が高い仮想マシンであり、
前記決定部は、前記リクエストが前記第1仮想マシンと前記第2仮想マシンとに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする請求項3記載の情報処理装置。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら、実施形態を詳細に説明する。
図1は、ロードバランサを含む情報処理システムの構成例を示している。図1の情報処理システムは、ロードバランサ101、サーバ102−1、及びサーバ102−2を含む。クライアント端末103−1〜クライアント端末103−3は、通信ネットワーク104を介してロードバランサ101と通信し、リクエストをロードバランサ101へ送信する。
【0013】
サーバ102−1は現用サーバであり、サーバ102−2は予備サーバである。ロードバランサ101は、クライアント端末103−1〜クライアント端末103−3から受信したリクエストをサーバ102−1へ送信し、サーバ102−1から受信した応答をクライアント端末103−1〜クライアント端末103−3へ送信する。
【0014】
ロードバランサ101は、ヘルスチェック通信によりサーバ102−1の健全性を監視し、サーバ102−1で異常が発生していると判定した場合、サーバ102−1からサーバ102−2へのフェイルオーバを実施する。これにより、現用サーバがサーバ102−1からサーバ102−2へ切り替えられ、サーバ102−1が行っていた処理がサーバ102−2に引き継がれるため、高可用性が実現される。
【0015】
ヘルスチェック通信を行う場合、許容遅延時間及び連続失敗許容回数が設定ファイルに設定される。許容遅延時間は、ロードバランサ101がヘルスチェック通信における検査信号をサーバ102−1へ送信してから、その検査信号に対する応答をサーバ102−1から受信するまでの応答時間の許容値を表す。応答時間が許容遅延時間を超えた場合、ヘルスチェック通信が失敗したものと判定される。
【0016】
連続失敗許容回数は、ヘルスチェック通信が連続して失敗する回数の許容値を表す。ヘルスチェック通信の連続失敗回数が連続失敗許容回数を超えた場合、サーバ102−1で異常が発生していると判定される。この場合、ロードバランサ101は、フェイルオーバを実施して、サーバ102−2へのリクエストの送信を開始する。
【0017】
設定ファイルに設定される許容遅延時間及び連続失敗許容回数は、固定値であることが多いため、以下のような場合に、適切なフェイルオーバが行われない。
(1)許容遅延時間を短く設定した場合、サーバ102−1に小さな負荷がかかっただけでも、誤ってフェイルオーバが実施される。
(2)許容遅延時間を長く設定した場合、サーバ102−1に異常が発生したときに、サービスダウンタイムが長くなる。
(3)フェイルオーバの効果がない場合でも、フェイルオーバが実施される。
【0018】
例えば、許容遅延時間が1msに設定された場合、サーバ102−1の異常発生時に、フェイルオーバが迅速に実施されるため、サービスダウンタイムは短くて済む。しかし、サーバ102−1のCPU(Central Processing Unit)使用率が10%程度であっても、応答時間が1msを超えてしまい、ヘルスチェック通信の一時的な遅延によってフェイルオーバが実施されることがある。
【0019】
一方、許容遅延時間が5分に設定された場合、ヘルスチェック通信の一時的な遅延によってフェイルオーバが実施されることはないが、サーバ102−1の異常発生時のサービスダウンタイムは長くなる。
【0020】
図2は、実施形態の情報処理装置の機能的構成例を示している。図2の情報処理装置201は、通信部211、計算部212、制御部213、及び決定部214を含む。
【0021】
図3は、図2の情報処理装置201が行う制御処理の例を示すフローチャートである。まず、通信部211は、所定期間内において、検査信号を第1装置へ送信し(ステップ301)、検査信号に対する応答と第1装置の負荷を示す負荷情報とを、第1装置から受信する(ステップ302)。そして、計算部212は、所定期間内における応答と負荷情報とに基づいて、第1装置の負荷毎に、検査信号に対する第1装置の応答時間の閾値を計算する(ステップ303)。
【0022】
次に、通信部211は、所定期間の経過後に、検査信号を第1装置へ送信し(ステップ304)、検査信号に対する応答と第1装置の負荷を示す負荷情報とを、第1装置から受信する(ステップ305)。
【0023】
次に、制御部213は、第1装置の応答時間が第1装置の負荷に対応する閾値を超えた場合、第1装置に対するリクエストを第1装置と第2装置とに振り分ける(ステップ306)。そして、決定部214は、第1装置から受信する負荷情報が示す第1負荷と、第2装置から受信する負荷情報が示す第2負荷とを比較した結果に基づいて、第1装置から第2装置への切り替えを決定する(ステップ307)。
【0024】
図2の情報処理装置201によれば、リクエストを処理する装置の切り替えを適切に実施することができる。
【0025】
図4は、可変の閾値を用いる情報処理システムの構成例を示している。図4の情報処理システムは、ロードバランサ401、サーバ402−1、及びサーバ402−2を含み、ロードバランサ401は、図2の情報処理装置201に対応する。
【0026】
クライアント端末403−1〜クライアント端末403−3は、通信ネットワーク404を介してロードバランサ401と通信し、リクエストをロードバランサ401へ送信する。クライアント端末の台数は3台には限られず、2台以下であってもよく、4台以上であってもよい。
【0027】
サーバ402−1及びサーバ402−2は、第1装置及び第2装置にそれぞれ対応する。サーバ402−1は現用サーバであり、サーバ402−1内では、現用仮想マシン(Virtual Machine,VM)が動作している。サーバ402−2は予備サーバであり、サーバ402−2内には、フェイルオーバが実施される前に予備VMが生成される。
【0028】
ロードバランサ401は、クライアント端末403−1〜クライアント端末403−3から受信したリクエストをサーバ402−1のVMへ送信し、そのVMから受信した応答をクライアント端末403−1〜クライアント端末403−3へ送信する。
【0029】
図5は、図4のロードバランサ401の機能的構成例を示している。図5のロードバランサ401は、通信部511、記憶部512、選択部513、計算部514、制御部515、及び決定部516を含む。通信部511、計算部514、制御部515、及び決定部516は、図2の通信部211、計算部212、制御部213、及び決定部214にそれぞれ対応する。
【0030】
ユーザにより設定された所定の評価期間において、通信部511は、ヘルスチェック通信における検査信号をサーバ402−1へ送信し、その検査信号に対する応答とサーバ402−1の負荷を示す負荷情報とを、サーバ402−1から受信する。評価期間は、情報処理システムの構成又は条件に応じて決定され、例えば、数日〜数週間であってもよい。負荷情報としては、CPU使用率、ディスクI/O(Input/Output)量、ロードアベレージ、通信ネットワークのトラフィック量、メモリ又はスワップの使用量等を用いることができる。
【0031】
選択部513は、予備VMを配備するサーバ402−2を選択し、選択したサーバ402−2に対してVMの生成を指示する。
【0032】
計算部514は、評価期間内におけるサーバ402−1の応答時間と、サーバ402−1から受信する負荷情報とに基づいて、サーバ402−1の負荷の変化に対する応答時間の変化を示す応答時間情報521を生成し、記憶部512に格納する。そして、計算部514は、応答時間情報521を用いて、負荷毎に応答時間の閾値を計算し、計算した閾値を示す閾値情報522を生成して、記憶部512に格納する。
【0033】
評価期間が経過した後も、通信部511は、検査信号をサーバ402−1へ送信し、その検査信号に対する応答とサーバ402−1の負荷を示す負荷情報とを、サーバ402−1から受信する。制御部515は、閾値情報522に基づいて、サーバ402−1の応答時間及び負荷を監視し、応答時間が負荷に対応する閾値を超えた場合、サーバ402−1に対するリクエストを、一時的にサーバ402−1及びサーバ402−2に振り分ける。
【0034】
その後、通信部511は、サーバ402−2の負荷を示す負荷情報を、サーバ402−2から受信する。そして、決定部516は、VMサーバ402−1の応答時間及び負荷と、サーバ402−2の負荷とに基づいて、サーバ402−1からサーバ402−2へのフェイルオーバを実施するか否かを決定する。
【0035】
図6は、図4のサーバ402−i(i=1,2)の第1の機能的構成例を示している。図6のサーバ402−iは、VM611、通知部612、及び生成部613を含む。VM611は、ロードバランサ401から受信したリクエストを処理して、そのリクエストに対する応答をロードバランサ401へ送信する。通知部612は、サーバ402−iの負荷を示す負荷情報をロードバランサ401へ送信する。生成部613は、ロードバランサ401からの指示に基づいて、VM611を生成する。
【0036】
図7は、応答時間情報521の例を示している。図7の横軸はCPU使用率を表し、縦軸は応答時間を表す。曲線701は、応答時間情報521を表し、CPU使用率の変化に対する応答時間の変化を示している。点711〜点714は、評価期間においてサーバ402−1から受信した応答の応答時間と、応答とともに受信した負荷情報が示すCPU使用率とをマッピングした結果を表す。計算部514は、2つの点の間のデータを補間することで、点711〜点714を繋ぐ曲線701を生成する。
【0037】
一方、直線702は、CPU使用率に依存しない最大許容遅延時間を表し、例えば、ユーザによって設定される。
【0038】
図8は、閾値情報522の例を示している。曲線801は、図7の曲線701から計算される応答時間の閾値T1を表し、曲線701が示す応答時間よりも所定の割合R1だけ大きな値に設定されている。割合R1は、情報処理システムの構成又は条件に応じて決定され、例えば、0%〜30%の範囲であってもよい。
【0039】
一方、直線802は、図7の直線702から計算される応答時間の閾値T2を表し、直線702が示す応答時間よりも所定の割合R2だけ小さな値に設定されている。所定の割合R2は、情報処理システムの構成又は条件に応じて決定され、例えば、0%〜30%の範囲であってもよい。
【0040】
制御部515は、サーバ402−1の応答時間が、閾値T1又は閾値T2のいずれかを超えた場合、リクエストを一時的にサーバ402−1及びサーバ402−2に振り分けて、負荷の変化を検証する。そして、決定部516は、例えば、以下の条件が満たされた場合に、サーバ402−1からサーバ402−2へのフェイルオーバを実施すると決定する。
【0041】
(C1)サーバ402−2のCPU使用率がサーバ402−1のCPU使用率よりも小さい。
(C2)サーバ402−1の応答時間が、閾値T1又は閾値T2のいずれかを超えている。
【0042】
条件(C1)は、サーバ402−1及びサーバ402−2の負荷が不均衡になっていることを表し、条件(C2)は、リクエストの振り分けを行っても、サーバ402−1のCPU使用率が低下しないことを表す。
【0043】
図9は、図4の情報処理システムにおけるフェイルオーバの例を示している。例えば、サーバ402−1のCPU使用率が90%であり、サーバ402−2のCPU使用率が20%である場合、条件(C1)が満たされる。さらに、条件(C2)も満たされた場合、決定部516は、フェイルオーバの実施を決定し、制御部515は、サーバ402−1のVMに対するリクエストの送信を停止する。
【0044】
そして、選択部513は、サーバ402−2を現用サーバに設定し、サーバ402−2のVMを現用VMに設定し、サーバ402−1に対してVMの削除を指示する。また、選択部513は、新たなサーバ402−3を予備サーバに設定し、サーバ402−3に対してVMの生成を指示する。これにより、サーバ402−2のVMを新たな現用VMとし、サーバ402−3のVMを新たな予備VMとして、サーバ402−2の応答時間及び負荷の監視が開始される。
【0045】
このような情報処理システムによれば、現用サーバの負荷に応じた可変の許容遅延時間を用いてヘルスチェックを行うことができ、負荷に応じた適切なタイミングでフェイルオーバを実施することが可能になる。
【0046】
また、現用サーバの応答時間が許容遅延時間を超えた場合であっても、直ちにフェイルオーバを実施するのではなく、事前に負荷の変化を検証することで、負荷が低下することを確認した上でフェイルオーバを実施することが可能になる。これにより、フェイルオーバの効果が期待できる場合にフェイルオーバが実施され、情報処理システムが確実に復旧する。
【0047】
図10は、図6の通知部612が行う負荷情報通知処理の例を示すフローチャートである。まず、通知部612は、サーバ402−1の負荷を測定し(ステップ1001)、測定した負荷を示す負荷情報をロードバランサ401へ送信する(ステップ1002)。そして、通知部612は、ロードバランサ401から負荷情報の送信停止を指示されたか否かをチェックする(ステップ1003)。
【0048】
負荷情報の送信停止を指示されていない場合(ステップ1003,NO)、通知部612は、ステップ1001以降の処理を繰り返し、負荷情報の送信停止を指示された場合(ステップ1003,YES)、通知部612は、処理を終了する。
【0049】
図11は、図5のロードバランサ401が行う第1の制御処理の例を示すフローチャートである。第1の制御処理では、負荷情報としてCPU使用率が用いられ、閾値情報522として、図8の曲線801が示す閾値T1及び直線802が示す閾値T2が用いられる。
【0050】
まず、制御部515は、現用サーバであるサーバ402−1のVMの応答時間を、サーバ402−1のCPU使用率に対応する閾値T1と比較する(ステップ1101)。応答時間が閾値T1よりも長い場合(ステップ1101,YES)、制御部515は、サーバ402−1に対するリクエストを、サーバ402−1のVMと、予備サーバであるサーバ402−2のVMとに振り分ける制御を開始する(ステップ1103)。
【0051】
一方、応答時間が閾値T1以下である場合(ステップ1101,NO)、制御部515は、応答時間を閾値T2と比較する(ステップ1102)。応答時間が閾値T2よりも長い場合(ステップ1102,YES)、ロードバランサ401は、ステップ1103以降の処理を行う。一方、応答時間が閾値T2以下である場合(ステップ1102,NO)、ロードバランサ401は、処理を終了する。
【0052】
リクエストがサーバ402−1及びサーバ402−2に振り分けられた後、決定部516は、サーバ402−1のCPU使用率とサーバ402−2のCPU使用率とを比較する(ステップ1104)。サーバ402−2のCPU使用率がサーバ402−1のCPU使用率以上である場合(ステップ1104,NO)、ロードバランサ401は、処理を終了する。
【0053】
一方、サーバ402−2のCPU使用率がサーバ402−1のCPU使用率よりも小さい場合(ステップ1104,YES)、決定部516は、サーバ402−1のVMの応答時間を、サーバ402−1のCPU使用率に対応する閾値T1と比較する(ステップ1105)。応答時間が閾値T1よりも長い場合(ステップ1101,YES)、決定部516は、フェイルオーバの実施を決定し、制御部515は、サーバ402−1のVMに対するリクエストの送信を停止する(ステップ1107)。
【0054】
次に、選択部513は、サーバ402−2を現用サーバに設定し、サーバ402−2のVMを現用VMに設定する(ステップ1108)。次に、選択部513は、新たなサーバ402−3を予備サーバに設定し、サーバ402−3に対してVMの生成を指示する(ステップ1109)。そして、選択部513は、旧現用サーバであるサーバ402−1に対してVMの削除を指示する(ステップ1110)。
【0055】
一方、応答時間が閾値T1以下である場合(ステップ1105,NO)、決定部516は、応答時間を最大許容遅延時間と比較する(ステップ1106)。応答時間が最大許容遅延時間よりも長い場合(ステップ1106,YES)、ロードバランサ401は、ステップ1107以降の処理を行う。一方、応答時間が最大許容遅延時間以下である場合(ステップ1106,NO)、ロードバランサ401は、ステップ1105以降の処理を行う。
【0056】
第1の制御処理によれば、リクエストの振り分け開始後に、予備サーバの負荷が現用サーバの負荷よりも小さく、かつ、現用サーバの応答時間が閾値T1又は最大許容遅延時間を超えている場合に、フェイルオーバを実施することが可能になる。
【0057】
ところで、リクエストをサーバ402−1及びサーバ402−2に振り分けても、VMの性能が限界に到達しているために、サーバ402−1及びサーバ402−2のCPU使用率に顕著な差異がないと判定される場合が考えられる。この場合、予備サーバの健全化のために、スケールアップを行うことが望ましい。
【0058】
図12は、予備サーバのスケールアップの例を示している。この例では、サーバ402−1及びサーバ402−2の各VMは、1個の仮想CPU(Virtual CPU,VCPU)と1Gバイトのメモリを有する。これらのVMに対するリクエストの振り分け開始後に、サーバ402−1のCPU使用率が79%になり、サーバ402−2のCPU使用率が80%になった場合、CPU使用率の差分が小さいため、VMの性能が限界に到達していると判定される。
【0059】
そこで、ロードバランサ401は、新たなサーバ1201に対して、サーバ402−2のVMよりも高性能なVMの生成を指示し、サーバ1201は、2個のVCPUと2Gバイトのメモリを有するVMを生成する。
【0060】
その後、ロードバランサ401は、サーバ1201を新たな予備サーバとして用いて、リクエストをサーバ402−1のVMとサーバ1201のVMとに振り分ける制御を開始する。そして、ロードバランサ401は、サーバ1201のCPU使用率をチェックし、サーバ1201のCPU使用率がサーバ402−2のCPU使用率よりも小さくなった場合、サーバ402−1からサーバ1201へのフェイルオーバを実施するか否かを決定する。
【0061】
また、リクエストをサーバ402−1及びサーバ402−2に振り分けても、サーバ402−2に異常が発生しているために、サーバ402−2のCPU使用率がサーバ402−1のCPU使用率よりもかなり大きいと判定される場合も考えられる。この場合、予備サーバの健全化のために、サーバ402−2を別の予備サーバに交換することが望ましい。
【0062】
図13は、予備サーバの交換の例を示している。この例では、サーバ402−1及びサーバ402−2に対するリクエストの振り分け開始後に、サーバ402−1のCPU使用率が70%になり、サーバ402−2のCPU使用率が99%になっている。この場合、サーバ402−2のCPU使用率がサーバ402−1のCPU使用率よりもかなり大きいため、サーバ402−2に異常が発生していると判定される。
【0063】
そこで、ロードバランサ401は、新たなサーバ1201に対してVMの生成を指示し、サーバ1201は、VMを生成する。その後、ロードバランサ401は、サーバ1201を新たな予備サーバとして用いて、リクエストをサーバ402−1のVMとサーバ1201のVMとに振り分ける制御を開始し、サーバ402−1及びサーバ1201のCPU使用率をチェックする。そして、サーバ1201のCPU使用率がサーバ402−1のCPU使用率よりも小さくなった場合、ロードバランサ401は、サーバ402−1からサーバ1201へのフェイルオーバを実施するか否かを決定する。
【0064】
図14A及び図14Bは、図5のロードバランサ401が行う第2の制御処理の例を示すフローチャートである。第2の制御処理では、図11に示した第1の制御処理に対して、予備サーバのスケールアップ及び交換の処理が付加されている。ステップ1401〜ステップ1410の処理は、図11のステップ1101〜ステップ1110の処理と同様である。
【0065】
ステップ1404において、サーバ402−2のCPU使用率がサーバ402−1のCPU使用率以上である場合(ステップ1404,NO)、制御部515は、それらのCPU使用率の差分を所定値と比較する(ステップ1411)。例えば、所定値としては、1%〜10%の範囲の値を用いることができる。
【0066】
CPU使用率の差分が所定値以下である場合(ステップ1411,YES)、選択部513は、新たなサーバ1201を新予備サーバに設定し、サーバ1201に対して、サーバ402−2のVMよりも高性能なVMの生成を指示する(ステップ1412)。
【0067】
次に、制御部515は、リクエストをサーバ402−1のVMとサーバ1201のVMとに振り分ける制御を開始し(ステップ1413)、旧予備サーバであるサーバ402−2のVMに対するリクエストの送信を停止する(ステップ1414)。
【0068】
次に、選択部513は、サーバ402−2に対してVMの削除を指示し(ステップ1415)、制御部515は、サーバ1201のCPU使用率と、ステップ1411におけるサーバ402−2のCPU使用率とを比較する(ステップ1416)。
【0069】
サーバ1201のCPU使用率がサーバ402−2のCPU使用率よりも小さい場合(ステップ1416,YES)、ロードバランサ401は、ステップ1404以降の処理を行う。一方、サーバ1201のCPU使用率がサーバ402−2のCPU使用率以上である場合(ステップ1416,NO)、ロードバランサ401は、処理を終了する。
【0070】
CPU使用率の差分が所定値よりも大きい場合(ステップ1411,NO)、選択部513は、新たなサーバ1201を新予備サーバに設定し、サーバ1201に対してVMの生成を指示する(ステップ1417)。
【0071】
次に、制御部515は、リクエストをサーバ402−1のVMとサーバ1201のVMとに振り分ける制御を開始し(ステップ1418)、旧予備サーバであるサーバ402−2のVMに対するリクエストの送信を停止する(ステップ1419)。
【0072】
次に、選択部513は、サーバ402−2に対してVMの削除を指示し(ステップ1420)、制御部515は、サーバ1201のCPU使用率と、現用サーバであるサーバ402−1のCPU使用率とを比較する(ステップ1421)。
【0073】
サーバ1201のCPU使用率がサーバ402−1のCPU使用率よりも小さい場合(ステップ1421,YES)、ロードバランサ401は、ステップ1404以降の処理を行う。一方、サーバ1201のCPU使用率がサーバ402−1のCPU使用率以上である場合(ステップ1421,NO)、ロードバランサ401は、処理を終了する。
【0074】
第2の制御処理によれば、リクエストの振り分け開始後に、予備サーバの負荷が現用サーバの負荷以上である場合に、予備サーバのスケールアップ又は交換を行うことで、予備サーバの負荷を低下させることができる。これにより、フェイルオーバを円滑に実施することが可能になる。
【0075】
なお、ステップ1412及びステップ1417において、選択部513は、新たなサーバ1201の代わりに、サーバ402−2に対してVMの生成を指示することも可能である。この場合、以降の処理において、サーバ1201の代わりに、サーバ402−2が予備サーバとして用いられる。
【0076】
図15は、図4のサーバ402−iの第2の機能的構成例を示している。図15のサーバ402−iは、図6のサーバ402−iとは異なり、VM1511及び生成部1512を含む。VM1511は、通知部1513を含み、ロードバランサ401から受信したリクエストを処理して、そのリクエストに対する応答をロードバランサ401へ送信する。通知部1513は、サーバ402−iの負荷を示す負荷情報をロードバランサ401へ送信する。生成部1512は、ロードバランサ401からの指示に基づいて、VM1511を生成する。
【0077】
このようなサーバ402−iの構成によれば、VM1511が負荷情報をロードバランサ401へ送信することが可能になる。
【0078】
図2の情報処理装置201の構成は一例に過ぎず、情報処理装置201の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【0079】
図1、図4、図9、図12、及び図13の情報処理システムの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、現用サーバ及び予備サーバは、2台以上であってもよい。
【0080】
図5のロードバランサ401の構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。図6及び図15のサーバ402−iの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【0081】
図3、図10、図11、図14A、及び図14Bのフローチャートは一例に過ぎず、情報処理システムの構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、最大許容遅延時間及び閾値T2が設定されていない場合は、図11のステップ1102、ステップ1106、図14Aのステップ1402、及びステップ1406の処理を省略することができる。
【0082】
図11、図14A、及び図14Bの制御処理において、CPU使用率の代わりに、ディスクI/O量、ロードアベレージ、通信ネットワークのトラフィック量、メモリ又はスワップの使用量等を負荷情報として用いてもよい。
【0083】
図7の応答時間情報及び図8の閾値情報は一例に過ぎず、応答時間情報及び閾値情報は、情報処理システムの構成又は条件と負荷情報の種類に応じて変化する。
【0084】
図16は、図2の情報処理装置201又は図5のロードバランサ401として用いられる情報処理装置(コンピュータ)のハードウェア構成例を示している。図16の情報処理装置は、CPU1601、メモリ1602、入力装置1603、出力装置1604、補助記憶装置1605、媒体駆動装置1606、及びネットワーク接続装置1607を含む。これらの構成要素はバス1608により互いに接続されている。
【0085】
メモリ1602は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ1602は、図5の記憶部512として用いることができる。
【0086】
CPU1601(プロセッサ)は、例えば、メモリ1602を利用してプログラムを実行することにより、図2の計算部212、制御部213、及び決定部214として動作する。CPU1601は、メモリ1602を利用してプログラムを実行することにより、図5の選択部513、計算部514、制御部515、及び決定部516としても動作する。
【0087】
入力装置1603は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置1604は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。
【0088】
補助記憶装置1605は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置1605は、ハードディスクドライブであってもよい。情報処理装置は、補助記憶装置1605にプログラム及びデータを格納しておき、それらをメモリ1602にロードして使用することができる。補助記憶装置1605は、図5の記憶部512として用いることができる。
【0089】
媒体駆動装置1606は、可搬型記録媒体1609を駆動し、その記録内容にアクセスする。可搬型記録媒体1609は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体1609は、CD−ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体1609にプログラム及びデータを格納しておき、それらをメモリ1602にロードして使用することができる。
【0090】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1602、補助記憶装置1605、又は可搬型記録媒体1609のような、物理的な(非一時的な)記録媒体である。
【0091】
ネットワーク接続装置1607は、LAN(Local Area Network)、WAN(Wide Area Network)等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置1607を介して受信し、それらをメモリ1602にロードして使用することができる。ネットワーク接続装置1607は、図2の通信部211又は図5の通信部511として用いることができる。
【0092】
なお、情報処理装置が図16のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータとのインタフェースが不要である場合は、入力装置1603及び出力装置1604を省略してもよい。また、可搬型記録媒体1609を使用しない場合は、媒体駆動装置1606を省略してもよい。
【0093】
図16の情報処理装置は、図6のサーバ402−iとしても用いることができる。この場合、CPU1601は、メモリ1602を利用してプログラムを実行することにより、通知部612及び生成部613として動作するとともに、VM611を動作させる。
【0094】
図16の情報処理装置は、図15のサーバ402−iとしても用いることができる。この場合、CPU1601は、メモリ1602を利用してプログラムを実行することにより、生成部1512として動作するとともに、VM1511及び通知部1513を動作させる。
【0095】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0096】
図1乃至図16を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
検査信号を第1装置へ送信し、前記検査信号に対する応答と前記第1装置の負荷を示す負荷情報とを、前記第1装置から受信する通信部と、
所定期間内における前記応答と前記負荷情報とに基づいて、前記第1装置の負荷毎に、前記検査信号に対する前記第1装置の応答時間の閾値を計算する計算部と、
前記所定期間の経過後に、前記第1装置の応答時間が前記第1装置の負荷に対応する閾値を超えた場合、前記第1装置に対するリクエストを前記第1装置と第2装置とに振り分ける制御部と、
前記リクエストが前記第1装置と前記第2装置とに振り分けられた後、前記第1装置から受信する負荷情報が示す第1負荷と、前記第2装置から受信する負荷情報が示す第2負荷とを比較した結果に基づいて、前記第1装置から前記第2装置への切り替えを決定する決定部と、
を備えることを特徴とする情報処理装置。
(付記2)
前記決定部は、前記第2負荷が前記第1負荷よりも小さく、かつ、前記第1装置の応答時間が前記第1負荷に対応する閾値を超えている場合、前記第1装置から前記第2装置への切り替えを決定することを特徴とする付記1記載の情報処理装置。
(付記3)
前記制御部は、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が所定値よりも大きい場合、前記第1装置に対するリクエストを前記第1装置と第3装置とに振り分け、
前記決定部は、前記リクエストが前記第1装置と前記第3装置とに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする付記1又は2記載の情報処理装置。
(付記4)
前記制御部は、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が前記所定値以下である場合、前記第1装置に対するリクエストを、前記第1装置内で動作する第1仮想マシンと、前記第3装置内で動作する第2仮想マシンとに振り分け、
前記第2仮想マシンは、前記第1仮想マシンよりも性能が高い仮想マシンであり、
前記決定部は、前記リクエストが前記第1仮想マシンと前記第2仮想マシンとに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする付記3記載の情報処理装置。
(付記5)
第1装置と、
第2装置と、
前記第1装置に対するリクエストを受信し、受信したリクエストを前記第1装置へ送信する情報処理装置とを備え、
前記情報処理装置は、
検査信号を第1装置へ送信し、前記検査信号に対する応答と前記第1装置の負荷を示す負荷情報とを、前記第1装置から受信する通信部と、
所定期間内における前記応答と前記負荷情報とに基づいて、前記第1装置の負荷毎に、前記検査信号に対する前記第1装置の応答時間の閾値を計算する計算部と、
前記所定期間の経過後に、前記第1装置の応答時間が前記第1装置の負荷に対応する閾値を超えた場合、前記リクエストを前記第1装置と前記第2装置とに振り分ける制御部と、
前記リクエストが前記第1装置と前記第2装置とに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第2装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第2装置への切り替えを決定する決定部と、
を含むことを特徴とする情報処理システム。
(付記6)
前記決定部は、前記第2負荷が前記第1負荷よりも小さく、かつ、前記第1装置の応答時間が前記第1負荷に対応する閾値を超えている場合、前記第1装置から前記第2装置への切り替えを決定することを特徴とする付記5記載の情報処理システム。
(付記7)
前記情報処理システムは、第3装置をさらに備え、
前記制御部は、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が所定値よりも大きい場合、前記第1装置に対するリクエストを前記第1装置と前記第3装置とに振り分け、
前記決定部は、前記リクエストが前記第1装置と前記第3装置とに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする付記5又は6記載の情報処理システム。
(付記8)
前記制御部は、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が前記所定値以下である場合、前記第1装置に対するリクエストを、前記第1装置内で動作する第1仮想マシンと、前記第3装置内で動作する第2仮想マシンとに振り分け、
前記第2仮想マシンは、前記第1仮想マシンよりも性能が高い仮想マシンであり、
前記決定部は、前記リクエストが前記第1仮想マシンと前記第2仮想マシンとに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする付記7記載の情報処理システム。
(付記9)
所定期間内において、検査信号を第1装置へ送信し、
前記検査信号に対する応答と前記第1装置の負荷を示す負荷情報とを、前記第1装置から受信し、
前記応答と前記負荷情報とに基づいて、前記第1装置の負荷毎に、前記検査信号に対する前記第1装置の応答時間の閾値を計算し、
前記所定期間の経過後に、前記検査信号を前記第1装置へ送信し、
前記検査信号に対する応答と前記第1装置の負荷を示す負荷情報とを、前記第1装置から受信し、
前記第1装置の応答時間が前記第1装置の負荷に対応する閾値を超えた場合、前記第1装置に対するリクエストを前記第1装置と第2装置とに振り分け、
前記リクエストが前記第1装置と前記第2装置とに振り分けられた後、前記第1装置から受信する負荷情報が示す第1負荷と、前記第2装置から受信する負荷情報が示す第2負荷とを比較した結果に基づいて、前記第1装置から前記第2装置への切り替えを決定する、
処理をコンピュータに実行させるためのプログラム。
(付記10)
前記コンピュータは、前記第2負荷が前記第1負荷よりも小さく、かつ、前記第1装置の応答時間が前記第1負荷に対応する閾値を超えている場合、前記第1装置から前記第2装置への切り替えを決定することを特徴とする付記9記載のプログラム。
(付記11)
前記コンピュータは、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が所定値よりも大きい場合、前記第1装置に対するリクエストを前記第1装置と第3装置とに振り分け、前記リクエストが前記第1装置と前記第3装置とに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする付記9又は10記載のプログラム。
(付記12)
前記コンピュータは、前記第2負荷が前記第1負荷よりも大きく、かつ、前記第2負荷と前記第1負荷との差分が前記所定値以下である場合、前記第1装置に対するリクエストを、前記第1装置内で動作する第1仮想マシンと、前記第3装置内で動作する第2仮想マシンとに振り分け、
前記第2仮想マシンは、前記第1仮想マシンよりも性能が高い仮想マシンであり、
前記コンピュータは、前記リクエストが前記第1仮想マシンと前記第2仮想マシンとに振り分けられた後、前記第1装置から受信する負荷情報が示す負荷と、前記第3装置から受信する負荷情報が示す負荷とを比較した結果に基づいて、前記第1装置から前記第3装置への切り替えを決定することを特徴とする付記11記載のプログラム。