(57)【要約】【課題】  全体を管理する装置や外付けの特殊な装置等を必要とせずに、グループ内のサーバ装置における負荷分散・均衡化を図る。負荷変動に対応して全サーバ装置が自立的に負荷を調整していき、常にサーバ装置間で均等に負荷を持つようにする。【解決手段】  複数のサーバ｛ａ，ｂ，ｃ｝を含むサーバグループにおいて共通のグループＩＰアドレスを持つ。各サーバは、自サーバの処理の負荷を測定し、サーバグループの各サーバの負荷情報を保有し、負荷変動に応じて負荷情報をサーバグループ内に送信する。各サーバは、ＰＣからグループＩＰアドレスを送信先とした処理要求を受信すると、負荷情報を参照して自サーバの負荷が最小であれば、処理を受け付ける。【選択図】  図９
2006260059.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバ装置を含んで構成されるグループを定義したグループ定義情報を保有し、
前記グループ定義情報は、前記グループの各サーバ装置の固有アドレスと、前記グループの全サーバ装置での共通アドレスとを持ち、
自サーバ装置での処理の負荷を測定する手段を有し、
前記グループにおける自サーバ装置の負荷情報と他サーバ装置の負荷情報とを保有し、
前記自サーバ装置での処理の負荷の変動に応じて、前記自サーバ装置の負荷情報を前記グループの他サーバ装置に送信する処理と、
前記グループの他サーバ装置から負荷情報を受信した場合に、その受信情報をもとに前記保有している前記グループの他サーバ装置の負荷情報を更新する処理とを行うことを特徴とするサーバ装置。
【請求項２】
請求項１記載のサーバ装置において、
クライアントから前記共通アドレスを送信先として用いた処理要求の電文を受信し、前記グループにおける自サーバ装置の負荷情報と他サーバ装置の負荷情報とを参照して、前記自サーバ装置の負荷情報が最小である場合は、前記処理要求に対しての処理受付を行うことを特徴とするサーバ装置。
【請求項３】
請求項１記載のサーバ装置において、
前記グループにおける自サーバ装置の動作状態を示す情報と他サーバ装置の動作状態を示す情報とを保有し、
パワーオンまたは起動に応じて、前記グループ定義情報を有している場合は、自サーバ装置が前記グループに対して負荷分散対象として追加されることを示す情報を、前記グループの他サーバ装置に送信する処理と、
前記グループの他サーバ装置から前記追加されることを示す情報を受信した場合に、その受信情報をもとに前記保有している前記グループの他サーバ装置の動作状態を示す情報を更新する処理とを行うことを特徴とするサーバ装置。
【請求項４】
請求項２記載のサーバ装置において、
前記処理要求に対しての処理受付を行う場合、前記クライアントに対して、前記自サーバの固有アドレスを送信元として用いた処理受付の電文を送信し、それに対して前記クライアントから受付応答の電文を受信した場合に、前記処理受付に対応した処理を継続して実行することを特徴とするサーバ装置。
【請求項５】
請求項２記載のサーバ装置において、
前記処理要求の電文を受信した際に、前記自サーバ装置の負荷情報が最小でない場合は、定められた時間の間、前記グループの他サーバ装置から前記クライアントに対して送信される処理受付の電文を傍受監視して、その電文を傍受しなかった場合は前記処理受付に係わる判断を再試行することを特徴とするサーバ装置。
【請求項６】
請求項２記載のサーバ装置において、
前記処理要求を受信した際に、前記グループの自サーバ装置の負荷情報と他サーバ装置の負荷情報とで同じものがある場合は、前記グループ定義情報で持つ各サーバ装置に定められた重複しない固有値を用いて比較して、その結果により、自サーバ装置で前記処理受付を行うことを特徴とするサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣ（パソコン）などのクライアントからの要求を受け付けて処理を行うサーバ装置に関し、特に、複数のサーバ装置における負荷分散の技術に関する。
【背景技術】
【０００２】
従来、サーバ装置毎に、メール、Ｗｅｂ、ＤＢ（データベース）、アプリケーション実行などの機能を設定した構成において、ＰＣなどのクライアントから、所望の機能に対応するサーバ装置を選び、該当サーバ装置を宛先とした通信アドレスを用いて処理要求を出していた。
【０００３】
そのため、ＰＣが増加してくると、あるサーバ装置に対して負荷が増える。従って、そのたびに、負荷を分散するための外付けのサーバ装置を増設し、接続対象のＰＣ側の設定も変更する必要があった。
【０００４】
また更に、近年では、サーバ装置の増設を容易にするため、“ブレードサーバ”と呼ばれる複数のサーバ装置を筐体に内蔵して、ブレードサーバ単位で挿抜を行う構成により、サーバ機能の性能アップを簡単に行う方式も出てきた。各ブレードサーバは、ＣＰＵ、メモリやハードディスクドライブ（ＨＤＤ）、ネットワーク制御機能などを持つ構成である。
【０００５】
ところが、上記のケースにおいても、やはり、複数のブレードサーバ間でどのように負荷分散するかについては、ＰＣ側での接続先設定を変更することにより負荷分散を図っていた。
【０００６】
上記不具合を改善するため、特許文献１においては、プロキシサーバの並列運転の構成において、お互い相手の負荷を通知し合い、ＰＣから処理要求が来ると、まず、主となるサーバが一旦受け付け、相手サーバの負荷と比較し、それにより、前記処理要求を自サーバで処理するか、または、相手サーバに依頼することにより、負荷分散を図っていることが開示されている。
【０００７】
また、特許文献２においては、複数のサーバノードを持つ構成で、そのうちの一台が、まず、ＰＣからの要求を受け付け、所定負荷以内であれば、その要求を自サーバで処理し、所定負荷を越えている場合は、他のサーバから、負荷情報を取得して、適切な負荷のサーバへ要求を転送することが開示されている。
【０００８】
また、特許文献３においては、管理サーバを設けた構成で、管理サーバが、各ブレードサーバのパフォーマンス情報を受け取り、かつ、各サーバのスループットなどのＱｏＳ属性が下回っていることにより、どのサーバにジョブを割り当てるかについての技術が開示されている。
【特許文献１】特開２００２−２７１４１５号公報「プロキシサーバ・システム、および、その通信方法」
【特許文献２】特開２００４−２８７８８９号公報「分散処理システム、分散処理用装置、方法及びコンピュータプログラム」
【特許文献３】特開２００４−１１０７９１号公報「ブレードアーキテクチャのための動的適応サーバプロビジョニング」
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところが、前記背景技術のいずれにせよ、複数のサーバにおける負荷分散のために、まずは、全体を管理する主サーバ装置を必要とし、主サーバ装置で処理要求を一次受け付けし、他のサーバ装置に依頼するかどうかを決定していた。あるいは複数のサーバ装置に対し外付けの負荷分散装置を設ける必要があった。
【００１０】
そのため、前記主サーバ装置のような装置に対して、比較的高い負荷がかかるため、他のサーバ装置よりも高性能のマシンを必要とする。また、前記主サーバ装置がダウンした場合の代替マシンの準備が別立てとなり、復旧のための時間、工数を必要とする。
【００１１】
また、場合によっては、前記主サーバ装置の負荷がある値に達するまでは、残りのサーバ装置がアイドル状態になっている可能性があり、サーバ間での完全な負荷の均衡化を目指したものとはなっていなかった。
【００１２】
本発明は以上のような問題に鑑みてなされたものであり、複数のサーバにおける負荷分散に関して、下記（１），（２）のような目的を有する。これにより設備使用効率向上及び仕事効率向上を図ったサーバ装置、制御方法、プログラム、及び情報処理システムなどの技術を提供する。
【００１３】
（１）  全体を管理するあるいは処理要求を一次受け付けする前記主サーバ装置のような装置を必要とせず、また前記外付けの負荷分散装置のような特殊な装置を必要とせず、定義されたグループ内のサーバ装置（サーバグループと称する）における処理の負荷分散・均衡化を図る。
【００１４】
（２）  サーバ装置数の増減、クライアント数の増減に伴う負荷変動に対応して、前記サーバグループの全サーバ装置が自立的に負荷を調整していき、常に、全サーバ装置でできる限り均等な負荷を分担するようにする。特に、前記サーバ装置数の増減に関して、ブレードサーバ方式に最適な技術を提供する。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明のサーバ装置は、複数のサーバ装置を含んで構成されるグループにおける各々のサーバ装置であって、以下に示す技術的手段を有することを特徴とする。
【００１６】
（１）  本サーバ装置は、複数のサーバ装置を含んで構成されるグループ（サーバグループ）を定義したグループ定義情報を保有する。前記グループ定義情報は、前記グループの各サーバ装置の固有アドレスと、前記グループの全サーバ装置での共通アドレスとを持つ。本サーバ装置は、自サーバ装置での処理の負荷を測定する手段を有し、前記グループの自サーバ装置を含む各サーバ装置の負荷情報を保有する。本サーバ装置は、前記自サーバ装置での処理の負荷の変動に応じて、前記自サーバ装置の負荷情報あるいは負荷変動情報を、前記グループの他サーバ装置に送信して報告する処理を行う。また逆に、本サーバ装置は、前記グループの他サーバ装置から負荷情報の報告を受信した場合に、その受信情報をもとに前記保有している前記グループの他サーバ装置すなわち送信元のサーバ装置の負荷情報を更新する処理を行う。
【００１７】
（２）  更に本サーバ装置は、前記（１）において以下を特徴とする。前記グループの全サーバ装置は、通信接続されるクライアントから、前記共通のアドレスを送信先として用いた処理要求の電文を受信する。そして、前記処理要求を受信した各々のサーバ装置は、前記保有している前記グループの各サーバ装置の負荷情報を参照し、自サーバ装置の負荷情報が最小である場合は、前記処理要求に対しての処理受付を行う。すなわち、前記各サーバ装置の負荷の状態に応じて前記処理受付を行うかどうかが判断される。あるいは他の判断基準として、本サーバ装置は、前記自サーバ装置の負荷情報が閾値内である場合などに、前記処理受付を行う。
【００１８】
（３）  更に本サーバ装置は、前記（１）において以下を特徴とする。本サーバ装置は、前記グループにおける自サーバ装置の動作状態を示す情報と他サーバ装置の動作状態を示す情報とを保有する。本サーバ装置は、本サーバ装置は、パワーオンまたは起動または休止状態からの稼動再開などの動作状態の変動に応じて、前記動作状態を示す情報を更新し、前記グループ定義情報を有している場合は、自サーバ装置が前記グループに対して負荷分散対象すなわち処理受付が可能な状態として新規追加または再追加などされることを示す情報または前記動作状態を示す情報を、前記グループの他サーバ装置に送信する処理を行う。また逆に、本サーバ装置は、前記グループの他サーバ装置から前記追加されることを示す情報を受信した場合に、その受信情報をもとに前記保有している前記グループの他サーバ装置の動作状態を示す情報を、該当サーバ装置が負荷分散対象として追加されるように更新する処理を行う。
【００１９】
（４）  更に本サーバ装置は、前記（２）において以下を特徴とする。本サーバ装置は、前記処理要求に対しての処理受付を行う場合、前記クライアントに対して、前記自サーバの固有アドレスを送信元として用いた処理受付の電文を送信し、それに対して前記クライアントから受付応答の電文を受信した場合に、前記処理受付に対応した処理を継続して実行する。
【００２０】
（５）  更に本サーバ装置は、前記（２）において以下を特徴とする。前記処理要求を受信した各々のサーバ装置は、前記保有している前記グループの各サーバ装置の負荷情報を参照し、自サーバ装置の負荷情報が最小でない場合は、規則に従って定められた時間、例えばランダムな時間などの間、前記グループの他サーバ装置から前記クライアントに対し送信される処理受付の電文を傍受監視して、当該電文を傍受しなかった場合は前記処理受付に係わる前記負荷の状態の判断を含む判断を再試行する。
【００２１】
（６）  更に本サーバ装置は、前記（２）において以下を特徴とする。本サーバ装置は、前記処理要求を受信した際に、前記グループの自サーバ装置の負荷情報と他サーバ装置の負荷情報とで同じものがある場合は、前記グループ定義情報で持つ各サーバ装置に定められたＭＡＣアドレス等の値を用いて比較して、その値が最小の場合に自サーバ装置で前記処理受付を行う。すなわち、負荷が同程度の複数のサーバ装置がある場合に、所定の規則に従って１つのサーバ装置を決定して処理受付を行う。
【発明の効果】
【００２２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２３】
（１）  複数のサーバ装置における負荷分散・均衡化を実現して、設備使用効率向上及び仕事効率向上を図ることができる。
【００２４】
（２）  サーバ装置やクライアント装置の増減を簡単に行うことができ、それに伴う負荷変動に対応して、最適化をサーバ装置で自立的に行うことができる。特に、ブレードサーバ方式に最適な技術を提供できる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。図１〜図１３は、本発明の一実施の形態を説明するための図である。
【００２６】
本発明の一実施の形態におけるサーバ装置は、本サーバ装置を複数用いてサーバグループが定義・設定された構成において、クライアントからの要求をサーバグループで受信して、各サーバ装置での負荷状態の判断に応じて処理を受け付ける。これによりサーバ間での負荷の調整がなされる。本サーバ装置上では、サーバグループにおける負荷分散のための制御方法に従った処理が、プログラムやハードウェア論理等に従って実行される。
【００２７】
＜情報処理システム＞
図１は、本発明の一実施の形態におけるサーバ装置であるサーバ２００を含んで構成される情報処理システムの構成例を示す。本システムは、ネットワーク４に、ＰＣ１と、サーバ集合筐体２に実装された複数のサーバ２００｛ａ，ｂ，ｃ｝と、ＤＢサーバ３とを有する。
【００２８】
ネットワーク４は、ＴＣＰ／ＩＰをベースとするインターネット、ＬＡＮなどである。本実施の形態では、ネットワーク４は特にＥｔｈｅｒｎｅｔ（登録商標）によるＬＡＮであり、ＴＣＰ／ＩＰベースのプロトコルで通信処理が行われる。また、実際の接続形態として、マルチドロップ接続、スイッチングハブやルータ経由によるスター接続などがあり得るが、いずれの場合も、各サーバ２００へ出入りする電文はすべて、他のサーバ２００においても傍受可能なように設定されている。
【００２９】
ＰＣ１は、ネットワーク端末装置であり、サーバ２００に対するクライアント装置として、ネットワーク４を通じてサーバ２００に対してアプリケーション等の処理の実行を要求する。必要に応じて１つ以上のＰＣ１がネットワーク４に接続される構成である。
【００３０】
サーバ２００｛ａ，ｂ，ｃ｝は、クライアントであるＰＣ１からの処理要求を受信してそれに対応したアプリケーション等の処理を行う装置である。本例では、各サーバ２００は、サーバ集合筐体２内に実装可能なブレードサーバ方式である。
【００３１】
サーバ集合筐体２は、１つの筐体に複数のサーバ２００を実装可能とする筐体である。サーバ集合筐体２は、本例では、ブレードサーバ方式のサーバ２００に対応したブレードシャーシの形態である。その他、サーバ集合筐体２は、サーバ２００の形態に応じてラックマウントキャビネットといった各種形態が可能である。各サーバ２００｛ａ，ｂ，ｃ｝は、保守・管理者により、必要に応じて、サーバ集合筐体２内に対して挿抜の動作により実装可能である。前記サーバ２００の実装とは、サーバ２００及びサーバ集合筐体２の形態に応じた挿抜や搭載やネジ止めなどの方法に加え、製造時点で、布線、半田付けなどにより事実上固定されているものも含んでいい。
【００３２】
サーバ集合筐体２には、各サーバ２００の挿抜のためのスロット及びコネクタ等の構成を有する。例えばサーバ２００の増設の場合、保守・管理者が、対象サーバ２００をスロットに挿入してコネクタ同士を接続することで、サーバ集合筐体２内に接続・固定される。サーバ集合筐体２には、各サーバ２００｛ａ，ｂ，ｃ｝が自由に実装され、すべてのサーバ２００が同じネットワ−ク４に接続される。サーバ集合筐体２に有する実装スペースが許す限りで何台のサーバ２００でも実装可能である。本例では、３つのサーバ２００｛ａ，ｂ，ｃ｝がサーバ集合筐体２内に実装されており、それぞれネットワーク４上で通信可能である。
【００３３】
本システムでは、これら複数のサーバ２００｛ａ，ｂ，ｃ｝を同一グループとして定義し、ネットワーク４上で処理の負荷分散を行う対象として取り扱う。このグループに関する定義情報を含む必要な設定の情報が、当該グループの各サーバ２００において保持される。これら同一グループとして定義及び通信接続される複数のサーバ２００｛ａ，ｂ，ｃ｝を、サーバグループと称する。
【００３４】
ＤＢサーバ３は、外部からの要求に応じてＤＢ参照や更新などのＤＢ処理を行うサーバである。ＤＢサーバ３は、サーバ２００からの要求に応じてＤＢ処理を行ってその結果をサーバ２００へ返す。ＤＢサーバ２００は、複数のサーバ２００から共有でアクセスされ処理するサーバを設ける場合の１つの典型例であって、他に、Ｗｅｂやメールといった各種アプリケーションのサーバも可能である。
【００３５】
本システムでは、ＰＣ１からの処理要求を、共通の通信アドレスによりサーバグループで受信すると共に、負荷状態に応じてサーバ２００｛ａ，ｂ，ｃ｝で処理を受け付ける。そして処理を受け付けたサーバ２００は、その処理の実行についてＤＢ処理が必要な場合に、ＤＢサーバ３へ要求を出す。そしてサーバ２００はＤＢサーバ３からの処理結果またはそれをもとに処理を行った結果を、ＰＣ１へ応答として送信する。前記ＰＣ１から発行される処理要求は、サーバ２００での特定の処理に対する要求や、あるいは、ＤＢサーバ３へのＤＢ参照要求などである。本例では、サーバ２００から更にＤＢサーバ３に対してアクセスが行われる場合を説明するが、ＰＣ１とサーバ２００との間で処理が完結する場合も勿論可能である。
【００３６】
＜ＰＣ＞
図２は、ＰＣ１のハードウェアブロック構成図を示している。ＰＣ１は、ＣＰＵ１０１、メモリ１０２、ＬＡＮボード１０３、ＨＤＤ１０４、入力制御ボード１０５、出力制御ボード１０６を有する。
【００３７】
ＣＰＵ１０１は、ＰＣ１全体を制御するプロセッサである。メモリ１０２は、プログラムやデータなどを一時記憶する。ＨＤＤ１０４は、プログラム、テーブル類、ＤＢ情報などを記憶している外部記憶装置である。ＣＰＵ１０１は、メモリ１０２上のプログラムを実行してＰＣ１としての機能を実現する。入力制御ボード１０５は、キーボード、マウスなどの入力装置を制御するボードである。出力制御ボード１０６は、モニタ、液晶ディスプレイなどの表示装置や他の出力装置を制御するボードである。ＬＡＮボード１０３は、ネットワーク４に対するＬＡＮインターフェースを制御するボードである。ＬＡＮボード１０３によりネットワーク４上で各種コマンドやデータが授受される。ＰＣ１は、後述するグループＩＰアドレス６１４を認識している。
【００３８】
図３は、ＰＣ１のソフトウェアブロック構成図を示している。ＰＣ１は、アプリケーション部１１１、ＯＳ１１２、通信制御部１１３、入力制御部１１４、出力制御部１１５を有する。
【００３９】
アプリケーション部１１１は、Ｗｅｂブラウザ、メール、データ参照などのアプリケーションソフトウェアのプログラムを示す。ＯＳ（オペレーティングシステム）１１２は、入出力制御、イベント通知、アプリケーション部１１１のプログラムの起動・終了などのスケジュール管理を行う。アプリケーション部１１１及びＯＳ１１２は、サーバ２００に対する処理要求を必要に応じて発行する。
【００４０】
通信制御部１１３は、前記ＬＡＮボード１０３の処理に対応するもので、ＬＡＮインターフェースを制御するドライバや、ＴＣＰ／ＩＰプロトコル制御などが含まれる。入力制御部１１４は、前記入力装置の入力制御を行うドライバなどを含む。出力制御部１1５は、前記表示装置を制御する表示ドライバ、ビデオメモリ管理などが含まれる。
【００４１】
＜サーバ＞
図４は、サーバ２００｛ａ〜ｃ｝のハードウェアブロック構成図を示している。各々のサーバ２００は、ＣＰＵ２０１、メモリ２０２、ＬＡＮ制御部２０３、ＨＤＤ２０４、ＳＶＰ制御部２０５を有する。
【００４２】
ＣＰＵ２０１は、サーバ２００全体を制御するプロセッサであり、自サーバでの処理及びＤＢサーバ３に対する処理を制御する。メモリ２０２は、プログラム、データ、テーブル情報などを一時記憶するメモリである。ＨＤＤ２０４は、プログラム、テーブル類、ＤＢ情報などを記憶している外部記憶装置である。本例では、ＨＤＤ２０４には、後述するテーブル（６，７）が保持される。ＣＰＵ２０１は、メモリ２０２上のプログラムを実行してサーバ２００としての機能を実現する。
【００４３】
ＬＡＮ制御部２０３は、ネットワーク４に対するＬＡＮインターフェースを制御する部分である。ＬＡＮ制御部２０３によりネットワーク４上で各種コマンドやデータが授受される。また、ＬＡＮ制御部２０３は、同一サーバグループ内にある関連ＩＰアドレスをソース、デスティネーションに使用した電文を、一旦、本制御部に取り込み、解析し、傍受可能としている。
【００４４】
ＳＶＰ制御部２０５は、ＳＶＰインターフェースを制御する部分であり、サーバ内各部と外部のＳＶＰ（サービスプロセッサ）に対して接続される。ＳＶＰは、ＳＶＰ制御部２０５を通じて、各サーバ２００についての保守・管理の処理を行う。ＳＶＰの処理は、例えば構成や障害の管理といったものである。
【００４５】
本サーバ２００は、ブレードサーバ方式であるため、個々には入力装置や出力装置を持たない構成である。その代わりに、外付けの監視装置やシステムコンソールなどの役目を果たすＳＶＰによる入出力を可能とするために、ＳＶＰ制御部２０５を有している。保守・管理者は、ＳＶＰを操作してサーバ２００の保守・管理を行うことができる。サーバ集合筐体２としてのブレードシャーシ内には、図示しないが、上記ＳＶＰや、各サーバ２００に対する電源供給を行う電源部や送風を行うファンといった部位が設けられている。
【００４６】
図５は、サーバ２００｛ａ，ｂ，ｃ｝のソフトウェアブロック構成図を示している。サーバ２００は、アプリケーション部２１１、ＯＳ２１２、通信制御部２１３、監視制御部２１４、負荷測定部２１５、設定テーブル６、動作テーブル７を有する。
【００４７】
アプリケーション部２１１は、Ｗｅｂ参照、メール制御、データ参照などのアプリケーションサーバソフトウェアのプログラムを示す。ＯＳ２１２は、入出力制御、イベント通知、アプリケーション部２１１のプログラムの起動・終了などのスケジュール管理を行う。サーバ２００は、ＯＳ２１２とアプリケーション部２１１において、ＰＣ１からの処理要求に対応した処理を行う。本例では、サーバ２００のアプリケーション部２１１で、ＤＢサーバ３でのＤＢ処理を用いた処理が行われる。
【００４８】
通信制御部２１３は、前記ＬＡＮ制御部２０３の処理に対応するもので、ＬＡＮインターフェースを制御するドライバ、ＴＣＰ／ＩＰプロトコル制御などが含まれる。通信制御部２１３を介して、ＰＣ１との間、サーバグループのサーバ２００間、及びＤＢサーバ３との間で、それぞれ通信可能である。
【００４９】
監視制御部２１４は、同一サーバグループに構成されたサーバ２００の動作状況の監視や、ＬＡＮインターフェース上での電文の傍受監視などを行う。また監視制御部２１４は、設定テーブル６や動作テーブル７を管理し、必要に応じて参照・更新する。
【００５０】
負荷測定部２１５は、負荷状態の把握のための負荷情報として、自サーバ２００のＣＰＵ２０１におけるＣＰＵ使用率を、定期的またはアプリケーション部２１１の処理の起動・終了などの負荷の変動時に応じて測定する。負荷測定部２１５で測定された自サーバ２００の負荷情報は、監視制御部２１４を介して、動作テーブル７に反映される。また、負荷がある程度変動した場合には、通信制御部２１３を介して、同一サーバグループ内の他サーバ２００への負荷情報の通知や交換のための通信が行われる。
【００５１】
本実施の形態では、グループ定義情報として、設定テーブル６と動作テーブル７を有する。設定テーブル６は、システムの設定のための情報であり、自身も含めた同一サーバグループの各サーバ２００｛ａ，ｂ，ｃ｝のアドレスや識別名などの必要な設定情報を保持している。動作テーブル７は、システムの状態管理のための情報であり、自身も含めた同一サーバグループの各サーバ２００｛ａ，ｂ，ｃ｝の動作及び負荷の状態を情報として管理・保持している。
【００５２】
なお、ＤＢサーバ３の構成については、前記図４，５に示すブレードサーバ方式のサーバ２００と同様のサーバ装置でも、前記図２，３に示すＰＣ１と同様のスタンドアロン方式のサーバ装置でもよい。
【００５３】
＜テーブル＞
図６は、設定テーブル６の形式の一実施例を示す。設定テーブル６は、すべてのサーバ２００において、自ホスト名６２０を除き、同じ内容を持つ。設定テーブル６で、列（６０１〜６０３）にサーバ２００｛ａ，ｂ，ｃ｝単位の情報を示し、行（６１１〜６１５）に各設定情報の項目を示している。これら設定テーブル６の内容は、外部のＳＶＰよりＳＶＰ制御部２０５を通じて設定され、ＨＤＤ２０４内に記憶される。
【００５４】
固有ホスト名６１１は、各サーバ２００に固有のホスト名が割り当てられる。本例では、各サーバ２００｛ａ，ｂ，ｃ｝の固有ホスト名６１１は、“ＡＰＳＲＶＲａ”、“ＡＰＳＲＶＲｂ”、“ＡＰＳＲＶＲｃ”と割り当てられている。
【００５５】
固有ＩＰアドレス６１２は、各サーバ２００｛ａ，ｂ，ｃ｝に固有のＩＰアドレスが通信アドレスとして割り当てられる。本例では、各サーバ２００｛ａ，ｂ，ｃ｝の固有ＩＰアドレス６１２は、“２０２．２００．２５６．１”、“２０２．２００．２５６．２”、“２０２．２００．２５６．３”と割り当てられている。
【００５６】
グループホスト名６１３は、同一サーバグループのサーバ２００群のすべてに対して、同一ホスト名が割り当てられる。本例では、サーバ２００｛ａ，ｂ，ｃ｝のグループホスト名６１３は、“ＡＰＳＲＶＲ”が割り当てられている。
【００５７】
グループＩＰアドレス６１４は、同一サーバグループのサーバ２００群のすべてに対して、同一ＩＰアドレスが共通の通信アドレスとして割り当てられる。一般には、本アドレスとして、テレビ会議などで使用される同一のマルチキャストアドレスとして定義することでもよい。本例では、すべてのサーバ２００｛ａ，ｂ，ｃ｝は、グループＩＰアドレス６１４として“２０２．２００．２５６．０”が割り当てられている。
【００５８】
ＭＡＣアドレス６１５は、各サーバ２００で固有のＭＡＣアドレスである。本例では、サーバ２００｛ａ，ｂ，ｃ｝のＭＡＣアドレス６１５は、それぞれ、“０１．２３．４５．６７．８９．ＡＢ”、“ＡＢ．ＣＤ．ＥＦ．０１．２３．４５”、“６７．８９．ＡＢ．ＣＤ．ＥＦ．０１”となっている。ＬＡＮ制御部２０３は、ＭＡＣアドレス６１５を有し、ＳＶＰからの設定でなく、パワーオン時、自サーバのＭＡＣアドレスのみ、ＬＡＮ制御部２０３から取得し、本テーブルに設定することも可能である。
【００５９】
固有ＩＰアドレス６１２、グループＩＰアドレス６１４、ＭＡＣアドレス６１５は、ネットワーク４上の通信において送信元や送信先のアドレスとして使用される。
【００６０】
また、自ホスト名６２０には、自サーバ２００のホスト名が設定される。例えば、サーバａ（２００）の自ホスト名６２０に、“ＡＰＳＲＶＲａ”が設定されている。自ホスト名６２０が固有ホスト名６１１とリンクすることにより、上記列（６０１〜６０３）のうちいずれが自サーバ２００の内容かを知ることができる。
【００６１】
本実施の形態では、ＰＣ１からサーバ２００に対する処理要求は、グループＩＰアドレス６１４が送信先として使用される。また、処理要求を受け付けたサーバ２００からＰＣ１に対する応答は、固有ＩＰアドレス６１２が送信元として使用される。
【００６２】
ＰＣ１からは処理要求に対応した処理を実際に受け付けて実行しているサーバ２００を識別する必要は特にないが、当該サーバ２００の識別は、固有ＩＰアドレス６１２等により可能である。
【００６３】
また、グループＩＰアドレス６１４や固有ＩＰアドレス６１２は、各サーバ２００間の負荷情報の通知や交換などの通信においても使用される。
【００６４】
通信におけるＩＰアドレス部分では、上記グループＩＰアドレス６１４や固有ＩＰアドレス６１２が設定されていても、ネットワーク４であるＥｔｈｅｒｎｅｔ（登録商標）のデータリンクレベルでは、実際に送受信処理するＬＡＮ制御部２０３のＭＡＣアドレス６１５が設定される。但し、以降、ＩＰアドレスからＭＡＣアドレス６１５への変換の技術は、ＡＲＰ（Address Resolution Protocol）などを使用して、条件に該当するサーバが応答を返すことでＭＡＣアドレス６１５に変換することによりなされる。以下、この処理の詳細過程は省略するが、ＩＰアドレスで行っている動作は、ＭＡＣアドレス６１５においても同様に適用可能である。
【００６５】
図７は、動作テーブル７の形式の一実施例を示す。動作テーブル７の列（７０１〜７０３）にサーバ２００｛ａ，ｂ，ｃ｝単位の情報を示し、行（７１１，７１２）に各サーバ２００の動作や負荷の状態などの項目を示している。本例では、動作状態７１１とＣＰＵ使用率７１２とにより各サーバ２００の状態が管理されている。これらの値に基づき、サーバ２００での処理の受け付けが判断され、すなわちサーバ２００間の負荷が調整されることになる。
【００６６】
動作状態７１１は、各サーバ２００での処理に係わる動作状態を示す項目であり、状態の変動に応じて設定される。動作状態７１１が“ＯＮ”ならば、該当サーバ２００は、パワー（電源）オンされて稼動状態であること、すなわち、処理稼動中または処理提供可能な状態を示す。また動作状態７１１が“ＯＦＦ”ならば、該当サーバ２００は、パワーオフまたは休止状態（処理提供不能な状態）であることを示す。
【００６７】
ＣＰＵ使用率７１２は、サーバ２００での処理に関する負荷状態を表わす値であり、ＣＰＵ２０１の使用率の数値（単位は[％]）で示している。
【００６８】
また、これら動作テーブル７の情報も、自ホスト名６２０とリンクして前記図６と同様の列の配列とすることにより、上記列（７０１〜７０３）のうちいずれが自サーバ２００の内容かを知ることができる。
【００６９】
これら動作テーブル７の内容は、各サーバ２００の状態が変化するたびに、後述の方法で複数のサーバ２００間でお互いに通信することにより、各サーバ２００で保持している情報の整合性をとっている。
【００７０】
＜電文＞
図８は、ネットワーク４におけるＬＡＮインターフェース上で使用される電文の形式の一実施例を示している。電文の種類に対応してその電文に設定される各種情報を示している。ＰＣ１、サーバグループのサーバ２００、ＤＢサーバ３の間で授受される電文の種類として、本例では、各コマンド８１１〜８１８を使用する。各コマンド８１１〜８１８は、例えばヘッダとコンテンツを有する形式であり、ステータスや単なるデータ等の場合を含むものとする。各電文は、コマンド８０１、ソースＩＰアドレス８０１、デスティネーションＩＰアドレス８０２、セッション番号８０４、コンテンツ８０５の領域を含む。
【００７１】
コマンド８０１には、起動完了８１１、負荷情報８１２、処理要求８１３、処理受付８１４、処理結果８１５、ＤＢアクセス要求８１６、ＤＢアクセス結果８１７、受付応答８１８がある。各コマンド８１１〜８１８は、電文の種類を示しており、コンテンツ８０５として何を含むかが決まる。
【００７２】
ソースＩＰアドレス８０２、デスティネーションＩＰアドレス８０３は、それぞれ、ＴＣＰ／ＩＰプロトコルにおける送信元のアドレス、送信先のアドレスが指定される。またセッション番号８０４は、他の同類の要求及び処理と混信しないための識別情報が設定される。
【００７３】
起動完了８１１は、自サーバ２００がパワーオンされて稼動状態（“ＯＮ”）となったことを、同一サーバグループ内の他サーバ２００に対し知らせるものである。本例では、このソースＩＰアドレス８０２には、各サーバ２００の固有ＩＰアドレス６１２として“２０２．２００．２５６．ｉ”（ｉは１，２，３のどれか）を指定する。またデスティネーションＩＰアドレス８０３には、グループＩＰアドレス６１４を指定する。またコンテンツ８０５には、どのサーバ２００が“ＯＮ”となったかを示す情報として“ＡＰＳＲＶＲｊ＝ＯＮ”（ｊはａ，ｂ，ｃのどれか）が含まれている。
【００７４】
負荷情報８１２は、各サーバ２００の負荷の変動時、自身を含む各サーバ２００の負荷情報を、サーバグループ内の他サーバ２００に対し報告するためのものである。前記負荷の変動は、パワーオンによるサーバ２００の起動も含む。このソースＩＰアドレス８０２及びデスティネーションＩＰアドレス８０３は、起動完了８１１の場合と同様である。また、コンテンツ８０５には、自サーバ２００で動作テーブル７に保持しているサーバグループ内の全サーバ２００についての負荷情報を、他サーバ２００への確認も含めて報告する。本例では、コンテンツ８０５に、動作状態７１１の情報も含めており、例えば“ＡＰＳＲＶＲａ＝ＯＮ，７０％”，“ＡＰＳＲＶＲｂ＝ＯＮ，８０％”，“ＡＰＳＲＶＲｃ＝ＯＦＦ”などが含まれている。
【００７５】
処理要求８１３は、ＰＣ１からサーバ２００に対する、ＤＢ参照、ＵＲＬ参照、メール送信、データ参照などの要求を表わす電文である。このソースＩＰアドレス８０２はＰＣ１のＩＰアドレスであり、デスティネーションＩＰアドレス８０３はグループＩＰアドレス６１４である。またセッション番号８０４には、本例では“ａａ”が付与される。またコンテンツ８０５には、処理要求内容、及びパラメータなどのデータが含まれている。
【００７６】
処理受付８１４は、ＰＣ１からの処理要求８１３についてのサーバ２００での処理の受け付けを表わす電文である。この電文を受信したＰＣ１等は、該当サーバ２００で処理を受け付けることが認識できる。このソースＩＰアドレス８０２は、サーバグループにおいて処理要求８１３に対応した処理を受け付けたサーバ２００の固有ＩＰアドレスを使用する。デスティネーションＩＰアドレス８０３はＰＣ１のＩＰアドレスである。またセッション番号８０４として、前記ＰＣ１からの処理要求８１３に対応したセッション番号８０４と同じ値（“ａａ”）が付与される。
【００７７】
受付応答８１８は、処理受付８１４に対する確認のための応答である。このソースＩＰアドレス８０２はＰＣ１のＩＰアドレスであり、デスティネーションＩＰアドレス８０３は、処理受付８１４を送信してきた該当サーバ２００の固有ＩＰアドレス６１２である。ＰＣ１は、処理受付８１４の電文を受信すると、これに付与されているセッション番号８０４と同じのセッション番号８０４（“ａａ”）をセットした受付応答８１８の電文を該当サーバ２００に返信する。
【００７８】
本例では、通常シーケンスでは、サーバ２００からの処理受付８１４に対してＰＣ１から受付応答８１８を返す。処理受付８１４と受付応答８１８とにより、該当サーバ２００での処理の受け付けが確認される。なお、処理受付８１４と受付応答８１８を省略して確認なしに処理させるシーケンスとすることも可能である。
【００７９】
ＤＢアクセス要求８１６とＤＢアクセス結果８１７は、サーバグループ内のサーバ２００での処理に応じて、外付けのＤＢサーバ３へ処理を要求する場合の例として示している。
【００８０】
ＤＢアクセス要求８１６は、サーバ２００からＤＢサーバ３への処理要求である。本例では、このソースＩＰアドレス８０２は該当サーバ２００の固有ＩＰアドレス６１２であり、デスティネーションＩＰアドレス８０３はＤＢサーバ３のＩＰアドレスである。またセッション番号８０４として、前記処理要求８１３等と同じ値（“ａａ”）を使用する場合を示す。またコンテンツ８０５は、例えばＤＢ参照のための検索キーの情報である。
【００８１】
ＤＢアクセス結果８１７は、ＤＢサーバ３からサーバ２００への応答である。本例では、このソースＩＰアドレス８０２はＤＢサーバ３のＩＰアドレスであり、デスティネーションＩＰアドレス８０３は該当サーバ２００の固有ＩＰアドレス６１２である。またセッション番号８０４として、前記ＤＢアクセス要求８１６と同じ値（“ａａ”）を使用する場合を示す。なおサーバ２００とＤＢサーバ３との間の通信において、ＰＣ１との間で使用するセッション番号８０４（例えば“ａａ”）とは異なるセッション番号８０４（例えば“ｂｂ”）を使用することとしてもよい。またコンテンツ８０５は、例えばＤＢ検索結果及びそのデータである。
【００８２】
処理結果８１５は、サーバ２００での処理受付８１４に対応した処理結果となる、ＰＣ１への応答を示す。このソースＩＰアドレス８０２は処理を行った該当サーバ２００の固有ＩＰアドレスであり、デスティネーションＩＰアドレス８０３はＰＣ１のＩＰアドレスである。またセッション番号８０４として、前記処理受付８１４のセッション番号８０４と同じ値（“ａａ”）がセットされる。またコンテンツ８０５は、処理結果及びそのデータの詳細が含まれている。
【００８３】
上記処理受付８１４や受付応答８１８等において、処理を受け付けたサーバ２００の固有ＩＰアドレス６１２を使用する理由は、サーバ２００間での負荷情報の交換の遅れや漏れ等に起因して複数のサーバ２００がＰＣ１に対し処理受付８１４を返した場合にも対応してサーバ２００を識別できるようにするためである。この場合、処理を受け付ける複数のサーバ２００が、ＰＣ１に対し固有ＩＰアドレスを用いて処理受付８１４の電文を送信する。そして、ＰＣ１から、どの処理受付８１４の電文を受け取ったかを示すために該当サーバ２００の固有ＩＰアドレスを用いて受付応答８１８を送信する。ＰＣ１からの受付応答８１８を受信したサーバ２００は、自サーバ２００で受け付けた処理がＰＣ１側からも確認されたので、当該処理を継続する。前記受付応答８１８を受信しなかったサーバ２００は、処理の継続を中止する。
【００８４】
本例では、処理受付８１４、処理結果８１５、ＤＢアクセス要求８１６、ＤＢアクセス結果８１７等の電文上において、固有ＩＰアドレス６１２等により、どのサーバ２００が具体的に処理を受け付けたかを知ることができる。サーバ２００は、負荷状態に応じて自分が処理すべきものか否か判断して、自己責任により遂行することになる。
【００８５】
ここで、処理受付８１４、受付応答８１８を使用せず、各サーバ２００で判断し、継続して、本例では、ＤＢアクセス要求８１６を出すことでもいい。この時、偶然、複数のサーバ２００が同じ条件になり、同じ判断に基いて、要求を出す可能性があるが、この場合でも、最終的には、処理結果８１５を早く返したサーバ２００からのデータが採用されることになる。処理受付８１４、受付応答８１８の必要性は、他のサーバ２００が傍受することにより、複数サーバ２００からの同じ要求が出る頻度を下げているだけである。ノイズなどで、処理受付８１４、受付応答８１８の電文を取りこぼしたケースも含めて、複数のサーバ２００が受け付けた場合も、上記により、処理がなされるようになっている。
【００８６】
＜処理シーケンス及びフロー＞
次に、本システムにおける処理のシーケンス及びフローを説明する。図９は、ＰＣ１、同一サーバグループのサーバ２００｛ａ，ｂ，ｃ｝、及び、ＤＢサーバ３の間での一連の処理及び制御のシーケンスの例を示している。ＰＣ１、サーバ２００、及びＤＢサーバ３の間では、前記電文を用いて本シーケンス及びフローに対応した通信及び処理が行われる。
【００８７】
サーバグループにおいて、例えばサーバｃ（２００）は、パワーオンにより稼動状態となった場合、自身における動作状態の変動を通知するための起動完了８１１の電文を、サーバグループ内の他サーバａ及びｂ（２００）に送信する（Ｓ１０３０）。前記起動完了８１１の電文を受信したサーバａ及びｂ（２００）は、その情報をもとに、自身の動作テーブル７の内容を更新する。また、サーバグループにおいて、例えばサーバａ（２００）は、自身におけるある程度の負荷変動を検出すると、負荷情報８１２の電文を、サーバグループ内の他サーバｂ及びｃ（２００）に送信する（Ｓ１０１１）。前記負荷情報８１２の電文を受信したサーバｂ及びｃ（２００）は、その情報をもとに、自身の動作テーブル７の内容を更新する（Ｓ１０２１，Ｓ１０３１）。負荷状態や動作状態の変動が発生したサーバ（２００）では、自身の動作テーブル７の内容を更新している。上記動作が、常時、サーバグループ内で任意のサーバ２００から他サーバ２００に対して、変動発生に伴う情報の通知や交換によりお互いに連絡し合うことが行われている。
【００８８】
次に、Ｓ１００１で、ＰＣ１から、処理要求８１３の電文がサーバグループに対して送信される。本処理要求８１３は、あるサーバグループに対して、そのグループＩＰアドレス６１４を送信先として用いて発行される。
【００８９】
一方、Ｓ１３００で、サーバグループの各サーバ２００は、処理要求８１３を受信する処理、及び、自サーバ２００でその処理要求８１３に対応した処理を受け付けるかどうかを動作テーブル７の参照に基づき判断する処理などを行う。図１３で述べる処理及び制御に従って、いずれかのサーバ２００で処理を受け付け、処理を受け付けたサーバ２００から処理受付８１４の電文がＰＣ１に送信されることになる。本例では、サーバグループ内で負荷が最小の状態にあるサーバｂ（２００）で処理を受け付ける場合を示している。
【００９０】
上記Ｓ１３００では、各サーバ２００で独立して処理の受け付けに関する判断が行われるので、状況に応じて結果として、１つのサーバ２００のみが処理を受け付ける場合以外にも、複数のサーバ２００が処理を受け付ける場合や、いずれも受け付けずに再試行が行われる場合などがある。いずれの場合でも、１つのサーバ２００との間で実際に処理が行われることになる。
【００９１】
上記Ｓ１３００において、Ｓ１３００ｂで、サーバｂ（２００）は、動作テーブル７における各サーバ２００｛ａ，ｂ，ｃ｝についてのＣＰＵ使用率７１２の比較に基づき、自サーバで処理を受け付けるか否か判断して自サーバで処理を受け付けることを決めると、処理受付８１４の電文をＰＣ１に送信する。処理受付８１４の電文を受信したＰＣ１は、それに対する受付応答８１８の電文をサーバｂ（２００）へ送信する。サーバｂ（２００）は、受付応答８１８の電文を受信することで処理の受け付けを確認し、当該処理を継続する。
【００９２】
サーバグループにおけるサーバｂ（２００）が処理を受け付けたことにより、当該サーバｂ（２００）で負荷変動が発生し検出される。そのため、前記Ｓ１０１１，Ｓ１０２１，Ｓ１０３１の処理と同様に、Ｓ１０２２，Ｓ１０１２，Ｓ１０３２の処理において、サーバｂ（２００）から負荷情報８１２を他サーバａ及びｃ（２００）に報告し、各動作テーブル７を更新する。
【００９３】
次に、前記処理要求８１３に対応した処理を受け付けたサーバｂ（２００）で、ＤＢサーバ３へのＤＢ参照が必要になったとする。Ｓ１０２３で、該当サーバｂ（２００）はＤＢ参照処理を行う。該当サーバｂ（２００）は、ＤＢサーバ３に対してＤＢアクセス要求８１６の電文を送信する。Ｓ１０４１において、ＤＢサーバ３は、ＤＢアクセス要求８１６に応じてＤＢ処理を行い、その結果であるＤＢアクセス結果８１７の電文を該当サーバｂ（２００）へ送信する。
【００９４】
Ｓ１０２３で、該当サーバｂ（２００）は、前記ＤＢアクセス結果８１７あるいはそれを用いた処理の結果を、ＰＣ１に対して、処理結果８１５の電文として送信する。そしてＳ１００２で、ＰＣ１は、処理結果８１５を受信する処理を行う。
【００９５】
また上記により、サーバｂ（２００）において、前記処理要求８１３に対応した１つの処理が完了したとする。これにより、当該サーバｂ（２００）で負荷変動が発生し検出される。そのため、同様に、Ｓ１０２４，Ｓ１０１３，Ｓ１０３３の処理において、サーバｂ（２００）から負荷情報８１２を他サーバａ及びｃ（２００）に報告し、各動作テーブル７を更新する。
【００９６】
図１０は、サーバグループのサーバ２００｛ａ，ｂ，ｃ｝におけるパワーオン動作時の処理の詳細を示すフロー図である。ステップＳ９０１で、パワーオンにより起動されたサーバ２００（例えばサーバａ）は、動作テーブル７における自サーバ２００に相当する列の動作状態７１１を、“ＯＦＦ”から“ＯＮ”にする。また、Ｓ９０２で、同サーバ２００は、同じ列のＣＰＵ使用率７１２を、‘０’にセットする。
【００９７】
次に、Ｓ９０３で、同サーバ２００は、負荷測定部２１５，監視制御部２１４，通信制御部２１３を起動し、これによりサーバグループの監視が行われる状態となる。
【００９８】
次に、Ｓ９０４で、同サーバ２００は、起動完了８１１の電文を、同一サーバグループ内の他サーバ２００（サーバｂ及びｃ）に対して送信する。これにより、自サーバ２００（サーバａ）がサーバグループに対して処理提供可能な状態（“ＯＮ”）で新規追加されることを知らせる。
【００９９】
一方、図１２のＳ１２２１でも示すように、サーバグループの各サーバ２００（サーバｂ及びｃ）は、前記起動完了８１１の電文を受信すると、それにより新規追加されるサーバ２００（サーバａ）に対して、自身の動作テーブル７の内容を更新すると共に、自身を含む各サーバ２００（サーバｂ及びｃ）の負荷情報を前記負荷情報８１２の電文により通知する。
【０１００】
次に、Ｓ９０５で、前記起動完了８１１を送信したサーバ２００（サーバｂ）は、他サーバ２００からの負荷情報８１２の電文の受信を確認する。負荷情報８１２の電文を受信した場合（Ｓ９０５−ＹＥＳ）、Ｓ９０６で、同サーバ２００は、受信した負荷情報８１２の電文におけるコンテンツ８０５に含まれている各サーバ２００（サーバｂ及びｃ）についての負荷情報に従い、それに対応する自身の動作テーブル７における自サーバの列（７０１）以外のすべての列（７０２，７０３）を更新する。
【０１０１】
図１１は、サーバグループのサーバ２００｛ａ，ｂ，ｃ｝における負荷情報の送信処理の詳細を示すフロー図である。本処理は、前記図９における、負荷変動をチェックして他サーバ２００へ負荷情報８１２の電文を送信する処理（Ｓ１０１１等）に対応している。
【０１０２】
まず、Ｓ１１０１で、各サーバ２００は、負荷測定部２１５により、自サーバ２００の負荷情報としてＣＰＵ使用率７１２を測定している。この負荷の測定方法については各種周知技術があるが、例えば、インターバルタイマーを利用して、一定間隔で、ＯＳ２１２の状態を見て、ウェイト状態か否か（すなわち処理待ちか処理中か）を判定したり、ＣＰＵ自身から発生されるウェイト信号、ＨＯＬＤ信号など特定の信号を監視することにより、ＣＰＵ２０１の使用率を計算することにより行う。
【０１０３】
Ｓ１１０２で、サーバ２００は、直前測定時の自サーバ２００の動作テーブル７のＣＰＵ使用率７１２と、Ｓ１１０１で現在測定した値とを比較する。比較に基づき、Ｓ１１０３で、前記測定したＣＰＵ使用率７１２の値が、ある程度の範囲内に収まるかそれ以上に変動しているかを、閾値との比較により判定することで負荷変動をチェックする。なお、上記判断の基準となる閾値について設定可能としてもよい。
【０１０４】
前記閾値内の変動の場合（Ｓ１１０３−ＹＥＳ）、Ｓ１１０５で、該当サーバ２００は、定められた時間分をウェイト後、Ｓ１１０１へ移り、再度同様の処理を繰り返す。上記定められた時間の値は、ランダム値や一定値などである。
【０１０５】
前記閾値以上の変動がある場合（Ｓ１１０３−ＮＯ）、Ｓ１１０４において、該当サーバ２００は、前記Ｓ１１０１での測定値を、動作テーブル７におけるＣＰＵ使用率７１２の項目の自サーバ２００に対応する列へ設定して更新する。
【０１０６】
次に、Ｓ１１０６において、該当サーバ２００は、負荷変動を検出したことにより、負荷情報８１２の電文を作成する。すなわち、該当サーバ２００は、自身の動作テーブル７における動作状態７１１及びＣＰＵ使用率７１２の項目における全サーバの列（７０１〜７０３）に対応した値を、負荷情報８１２の電文のコンテンツ８０５へセットする。なお、この際、ＣＰＵ使用率７１２の値のみ使用するようにしてもよい。
【０１０７】
次に、Ｓ１１０７において、該当サーバ２００は、作成した負荷情報８１２の電文を、同一サーバグループ内の他サーバ２００に対して送信する。
【０１０８】
なお、前記各サーバ２００の動作テーブル７の情報に関しては、状態変動や情報の通知の遅れ等により、サーバ２００間で違いがあり得る。前記他サーバ２００から負荷情報８１２を受信した際に動作テーブル７へ反映する情報の決定においては、例えば、常に受信した最近値を使用すること、あるいは、最近値に限らず重い負荷を示す情報の方を優先して使用すること等により決定してもよい。また例えば、動作テーブル７で記憶する情報として、ある時点の負荷であることを示すタイムスタンプ情報を付加しておき、本タイムスタンプと比較し、新しい値を利用する形式としてもよい。
【０１０９】
また、サーバ２００間での負荷情報８１２の授受に関しては、あるサーバ２００からサーバグループに対して自サーバ２００のみの情報を通知するようにしてもよい。本例では、動作テーブル７における自サーバ２００を含むすべてのサーバ２００についての負荷情報を他サーバ２００へ通知することで、サーバ２００間の情報の違いを少なくさせるようにしている。
【０１１０】
図１２は、サーバグループのサーバ２００｛ａ，ｂ，ｃ｝における各種コマンド８０１の電文の受信処理についての詳細を示すフロー図である。
【０１１１】
まず、Ｓ１２０１において、電文を受信したサーバ２００は、受信した電文のデスティネーションＩＰアドレス８０３がグループＩＰアドレス６１４であるかどうかを比較判定する。当該アドレスが一致しない場合は終了する。
【０１１２】
前記アドレスが一致する場合は、次に、Ｓ１２０２で、該当サーバ２００は、電文のコマンド８０１が負荷情報８１２かどうかを判定する。負荷情報８１２の場合、Ｓ１２１１で、該当サーバ２００は、該当電文のコンテンツ８０５における全サーバについての負荷情報を、動作テーブル７の該当行（７１１，７１２）の自サーバ以外の列（７０１〜７０３）へセットする。
【０１１３】
次に、Ｓ１２０３において、該当サーバ２００は、コマンド８０１が起動完了８１１かどうか判定する。起動完了８１１の場合、Ｓ１２２１で、該当サーバ２００は、該当電文のコンテンツ８０５における対象サーバの動作状態の情報を、自身の動作テーブル７における動作状態７１１の対象列へセットする。すなわち電文送信元のサーバ２００の動作状態を表わす情報（前記“ＯＮ”等）がセットされる。
【０１１４】
次に、Ｓ１２０４で、該当サーバ２００は、コマンド８０１が処理要求８１３かどうか判定する。処理要求８１３の場合、Ｓ１３００で、図１３で詳細に示すような、処理要求８１３の電文についての受付処理を行う。そしてこの受付処理後に終了する。
【０１１５】
次に、Ｓ１２０５で、該当サーバ２００は、コマンド８０１がＤＢアクセス結果８１７かどうか判定する。ＤＢアクセス結果８１７の場合、Ｓ１２３１で、該当サーバ２００は、ＤＢアクセス結果８１７の電文のコンテンツ８０５を、処理結果８１５の電文のコンテンツ８０５にセットし、そして、Ｓ１２３２で、処理結果８１５の電文をＰＣ１へ送信する。受信した電文のコマンド８０１が以上に該当しない場合、何もしないで当該電文を破棄して終了する。
【０１１６】
図１３は、サーバグループのサーバ２００｛ａ，ｂ，ｃ｝における処理要求８１３についての受付処理（Ｓ１３００）の詳細を示すフロー図である。Ｓ１３０３〜Ｓ１３０５の処理により、いずれかのサーバ２００で処理を受け付けるように制御する例である。
【０１１７】
まず、Ｓ１３０１において、グループＩＰアドレス６１４を送信先として用いた処理要求８１３の電文を受信した各サーバ２００は、動作テーブル７の内容を読み出す。次に、Ｓ１３０２で、該当サーバ２００は、動作テーブル７におけるＣＰＵ使用率７１２の自サーバの列と他サーバの列との値を比較する。次に、Ｓ１３０３で、該当サーバ２００は、自サーバの列のＣＰＵ使用率７１２がサーバグループ内で最小かどうかを判定する。
【０１１８】
前記Ｓ１３０３で、該当サーバ２００は、自サーバのＣＰＵ使用率７１２が最小でない場合（Ｓ１３０３−ＮＯ）、Ｓ１３１０に移る。
【０１１９】
該当サーバ２００は、前記自サーバのＣＰＵ使用率７１２が最小の場合（Ｓ１３０３−ＹＥＳ）、Ｓ１３０４で、動作テーブル７で、本最小値において他サーバの対応列のＣＰＵ使用率７１２と一致するものが無いかを判定する。すなわちサーバグループ内の複数のサーバ２００で負荷が同じ最小値となっている場合を検出する。
【０１２０】
前記最小値が一致する複数のサーバ２００がある場合は、あらかじめ設定されている所定の規則に従って、その中で処理を受け付けるサーバ２００を選択して自サーバで処理を受け付けるかどうかを決める。この際の規則の例として、Ｓ１３０５で、該当サーバ２００は、設定テーブル６における各サーバ２００のＭＡＣアドレス６１５の情報を参照して、自サーバのＭＡＣアドレス６１５の値が最小かどうかを判定し、その値が最小のサーバ２００で処理を受け付けるように決定する。
【０１２１】
上記処理を通じて、ＣＰＵ使用率７１２が最小の１つのサーバ２００（Ｓ１３０４−ＮＯ）、あるいは、ＣＰＵ使用率７１２が最小の複数のサーバ２００がある場合はそのうちＭＡＣアドレス６１５が最小のサーバ２００（Ｓ１３０５−ＹＥＳ）が、処理を受け付ける義務を負うことになる。
【０１２２】
前記Ｓ１３０３−ＮＯの場合、または、前記Ｓ１３０５で、自サーバ２００のＭＡＣアドレス６１５の値が最小値でなく前記規則により処理を受け付ける条件が成立しない場合（Ｓ１３０５−ＮＯ）、次にＳ１３１０で、該当サーバ２００は、ランダムな時間分ウェイトして、Ｓ１３１１で、他サーバ２００が処理を受け付けたかどうかを、前記処理受付８１４の電文を傍受監視することで判断する。該当サーバ２００は、前記処理受付８１４の電文を傍受した場合（Ｓ１３１１−ＹＥＳ）、終了する。前記処理受付８１４の電文を傍受しなかった場合（Ｓ１３１１−ＮＯ）、再度、開始に戻って前記Ｓ１３０１からやり直す。
【０１２３】
前記Ｓ１３１１−ＮＯの場合には、再度、開始に戻って処理の受け付けの判断に係わる再試行を行う。これは、各サーバ２００間の状態に関して、負荷情報の報告の遅れや漏れ等により同時刻で同じ値が保証される訳ではないことを考慮して、サーバグループの全サーバ２００が処理を受け付けずデッドロックにより誰も応答しない場合を防止するための措置である。
【０１２４】
前記Ｓ１３０３の処理を中心にして、ＰＣ１に対し処理受付８１４の電文を応答する条件が整った場合、該当サーバ２００は、複数のサーバ２００からの処理受付８１４の応答が同時に発生しないように、Ｅｔｈｅｒｎｅｔ（登録商標）における衝突防止と同様の考え方により、Ｓ１３０６で、ランダムな時間分ウェイトする。そしてＳ１３０７で、該当サーバ２００は、そのウェイトの間、サーバグループの他サーバ２００からの処理受付８１４の電文を傍受監視することにより、他サーバ２００が処理受付８１４の応答をＰＣ１に対して行っていないことを確認する。該当サーバ２００は、前記電文を傍受したことにより他サーバ２００が応答していることを確認した場合（Ｓ１３０７−ＹＥＳ）、処理を受け付けせずに終了する。
【０１２５】
該当サーバ２００は、前記電文を傍受しなかったことにより他サーバ２００が応答していないことを確認した場合（Ｓ１３０７−ＮＯ）、次に、Ｓ１３０８で、処理受付８１４の電文を作成する。ここで、該当サーバ２００は、処理受付８１４の電文に、送信元として自サーバの固有ＩＰアドレス６１２をセットし、また、処理の識別のためのセッション番号８０４として例えば“ａａ”をセットする。そして、Ｓ１３０９で、該当サーバ２００は、作成した処理受付８１４の電文を、ＰＣ１に対して送信する。
【０１２６】
Ｓ１３０９の後、ＰＣ１において処理受付８１４の電文が受信され、受付応答８１８の電文が該当処理を受け付けたサーバ２００へと返される。そして該当サーバ２００で処理が実行されることになる。
【０１２７】
前記Ｓ１３０３等の処理において、サーバ２００の負荷状態を最小値により判断する以外にも、負荷情報がある程度の閾値以下に収まるものを選択すること等により判断してもよい。また、前記Ｓ１３０５で用いる規則は、ＭＡＣアドレス６１５以外でも、各サーバ２００に対し定められた値などを用いることもできる。また、前記Ｓ１３０６やＳ１３１０におけるウェイト時間については、例えばＭＡＣアドレス６１５等をもとに定められる、各サーバ２００で異なる固定値などとしてもよい。このようなサーバ２００での処理受付の決定に係わる所定の判断基準や規則に応じて、１つのサーバ２００で処理受付が行われるように制御している。また、前記判断基準や各サーバ２００で持つ情報の違い等によって、複数のサーバ２００で処理受付が行われる場合も発生し得る。この場合、そのうち１つのサーバ２００に対するＰＣ１からの受付応答８１８の授受や、Ｓ１３１０及びＳ１３１１におけるウェイト及び電文の傍受監視による処理受付に係わる判断の再試行などの仕組みにより、１つのサーバ２００で実際に処理を行わせるように制御している。
【０１２８】
以上説明したように、本実施の形態によれば、全体を管理するあるいは処理要求を一次受け付けするような装置を必要とせず、また外付けの負荷分散装置のような特殊な装置を必要とせず、サーバグループ内のサーバ２００における処理の負荷分散・均衡化を図ることができる。また、サーバ２００やＰＣ１の数の増減に伴う負荷変動に対応して、サーバグループの全サーバ２００が自立的に負荷を調整していき、常に、全サーバ２００でできる限り均等に負荷を持つようにできる。
【０１２９】
以上の他に、本実施の形態では、サーバ２００の負荷情報としてＣＰＵ使用率７１２を用いたが、その他、サーバ２００でＰＣ１から受け付けた処理数や、いわゆるトラフィック量（転送レート等）や、実行ジョブ（サーバ２００での処理を分割した単位）数などの他のパラメータを使用してもよい。
【０１３０】
また、本例では、負荷分散対象となるサーバ２００に関して、同様の性能のブレードサーバ方式を対象にした。これに限らず、本発明の他の実施の形態では、前記ブレードサーバ方式ではなく、スタンドアロン型の複数のサーバ装置や、それぞれ異なる性能の複数のサーバを用いてシステムが構成される。スタンドアロン型の複数のサーバ装置でシステムを構成する場合、前記図１におけるサーバ集合筐体２を除いた同様の構成となる。また上記異なる性能の複数のサーバ、例えばＣＰＵ２０１の処理速度[Ｈｚ]が異なる複数のサーバで構成する場合では、負荷情報として前記ＣＰＵ使用率７１２などを使用する場合、低い性能のサーバには少ない仕事量を、高い性能のサーバには多くの仕事量を課すような負荷分散の均衡を保たせる。
【０１３１】
また、処理を受け付けたサーバ２００の識別に関して、固有ＩＰアドレス６１２を用いる以外には、グループＩＰアドレス６１４、セッション番号８０４、及びサーバ２００のＩＤ（固有ＩＰアドレス６１２等）の組み合わせを用いる等としてもよい。
【０１３２】
また、本システム内に１つのサーバグループのみ設定される場合を示したが、例えば、サーバ集合筐体２においてサーバ２００の組み合わせにより複数のサーバグループを設定して、各サーバグループにおいて同様に負荷分散することも可能である。
【０１３３】
また、本例では、各サーバ２００のネットワーク４に対する接続・配線の形式について、マルチドロップ型、すなわち各サーバ２００が独立してＬＡＮ制御部２０３によりネットワーク４に対し接続される形式とした。これに限らず、各サーバ２００が、ネットワーク４に対し、スイッチやハブやルータやゲートウェイ等の、データ転送の役割を持つ中継部を介在して接続・配線される形式も可能である。すなわち各サーバ２００が中継部に接続され、中継部がネットワーク４に対し接続される形式である。例えば、サーバ集合筐体２内にこのような中継部を設けた構成も可能である。この場合でも、各サーバ２００間、及び、各サーバ２００とＰＣ１との間の通信の電文において、前記グループＩＰアドレス６１４が用いられた場合には、前記中継部でその電文が同一サーバグループのサーバ２００に対して転送されるように、転送に関する設定を行っておく。これにより同様に負荷分散が実現可能である。
【０１３４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０１３５】
本発明は、サーバやサーバを含んで構成される情報処理システムなどに利用可能である。
【図面の簡単な説明】
【０１３６】
【図１】本発明の一実施の形態におけるサーバ装置を含んで構成される情報処理システムの構成例を示す図である。
【図２】本発明の一実施の形態のサーバ装置に対して通信接続されるクライアントであるＰＣのハードウェアブロック構成を示す図である。
【図３】本発明の一実施の形態のサーバ装置に対して通信接続されるクライアントであるＰＣのソフトウェアブロック構成を示す図である。
【図４】本発明の一実施の形態におけるサーバ装置のハードウェアブロック構成を示す図である。
【図５】本発明の一実施の形態におけるサーバ装置のソフトウェアブロック構成を示す図である。
【図６】本発明の一実施の形態におけるサーバ装置で保持される設定テーブルの形式の一実施例を示す図である。
【図７】本発明の一実施の形態におけるサーバ装置で保持される動作テーブルの形式の一実施例を示す図である。
【図８】本発明の一実施の形態におけるサーバ装置を含んで構成される情報処理システムにおいて、ネットワークにおけるＬＡＮインターフェース上で使用される電文の形式の一実施例を示す図である。
【図９】本発明の一実施の形態におけるサーバ装置を含んで構成される情報処理システムにおいて、ＰＣ、同一サーバグループのサーバ、及び、ＤＢサーバの間での一連の処理及び制御のシーケンスの例を示す図である。
【図１０】本発明の一実施の形態のサーバ装置における、パワーオン動作時の処理の詳細を示すフロー図である。
【図１１】本発明の一実施の形態のサーバ装置における、負荷情報の送信処理の詳細を示すフロー図である。
【図１２】本発明の一実施の形態のサーバ装置における、各種コマンドの電文の受信処理についての詳細を示すフロー図である。パワーオン動作時の処理の詳細を示すフロー図である。
【図１３】本発明の一実施の形態のサーバ装置における、処理要求についての受付処理の詳細を示すフロー図である。
【符号の説明】
【０１３７】
１…ＰＣ、２…サーバ集合筐体、３…ＤＢサーバ、４…ネットワーク、６…設定テーブル、７…動作テーブル、１０１，２０１…ＣＰＵ、１０２，２０２…メモリ、１０３…ＬＡＮボード、１０４，２０４…ＨＤＤ、１０５…入力制御ボード、１０６…出力制御ボード、１１１，２１１…アプリケーション部、１１２，２１２…ＯＳ、１１３，２１３…通信制御部、１１４…入力制御部、１１５…出力制御部、２００…サーバ、２０３…ＬＡＮ制御部、２０５…ＳＶＰ制御部、２１４…監視制御部、２１５…負荷測定部。
【図１】
2006260059.tif 000003
【図２】
2006260059.tif 000004
【図３】
2006260059.tif 000005
【図４】
2006260059.tif 000006
【図５】
2006260059.tif 000007
【図６】
2006260059.tif 000008
【図７】
2006260059.tif 000009
【図８】
2006260059.tif 000010
【図９】
2006260059.tif 000011
【図１０】
2006260059.tif 000012
【図１１】
2006260059.tif 000013
【図１２】
2006260059.tif 000014
【図１３】
2006260059.tif 000015