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