(57)【要約】  各階層に１つ以上のノード(11〜13、21、31〜39、41〜43、51〜59）を含む階層型負荷分散システム(１)において、これらノードのいずれか(11〜13)において、階層構造に含まれる全てのノード(11〜13、21、31〜39、41〜43、51〜59）に関する各々の負荷分散情報を一括して管理する。ここに負荷分散情報とは、処理要求を分配されるノードにおける処理受付数及び処理実行数、処理要求を分配されるノードの接続状況及び負荷状況、並びに負荷分散ノードにて行われる負荷分散方式の、いずれかを示す情報である。
2008129597.tif 000002
【特許請求の範囲】
【請求項１】
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムであって、
前記ノードのいずれかであるマスタノードは、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とする負荷分散システム。
【請求項２】
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする請求項１に記載の負荷分散システム。
【請求項３】
前記マスタノードは、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する送信可否決定手段と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する送信可否通知手段と、
を備えることを特徴とする請求項２に記載の負荷分散システム。
【請求項４】
前記マスタノードは、
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する負荷分散方式変更手段と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する負荷分散方式通知手段と、
を更に備えることを特徴とする請求項２又は３に記載の負荷分散システム。
【請求項５】
前記負荷分散手段は、上位層の前記ノードから送信された処理要求を１つ下位の層の前記ノードへと分配する負荷分散装置、並びに前記ノード上にて実行されることにより上位層の前記ノードから送信された処理要求を１つ下位の層の前記ノードへと分配する負荷分散処理をこのノードに実行させるアプリケーションプログラム及びミドルウエアのいずれかであることを特徴とする請求項１〜４のいずれか一項に記載の負荷分散システム。
【請求項６】
請求項１又は２に記載の負荷分散システムにおける前記マスタノードとして動作するノード装置であって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とするノード装置。
【請求項７】
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する送信可否決定手段と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する送信可否通知手段と、
を備えることを特徴とする請求項６に記載のノード装置。
【請求項８】
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する負荷分散方式変更手段と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する負荷分散方式通知手段と、
を更に備えることを特徴とする請求項６又は７に記載のノード装置。
【請求項９】
請求項３に記載の負荷分散システムにおける前記負荷分散手段として動作する負荷分散装置であって、
前記可否通知を前記マスタノードから受信する可否通知受信手段と、
受信した前記可否通知に従って処理要求の分配を行う負荷分配手段と、
を備えることを特徴とする負荷分散装置。
【請求項１０】
請求項４に記載の負荷分散システムにおける前記負荷分散手段として動作する負荷分散装置であって、
前記負荷分散方式変更通知を前記マスタノードから受信する分散方式変更通知受信手段と、
受け付けた処理要求の分配を変更された前記負荷分散方式に従って行う負荷分配手段と、
を備えることを特徴とする負荷分散装置。
【請求項１１】
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける、前記ノードのいずれかであるマスタノードで実行される負荷分散制御プログラムであって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する処理と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する処理と、
を前記マスタノードに実行させることを特徴とする負荷分散制御プログラム。
【請求項１２】
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする請求項１１に記載の負荷分散制御プログラム。
【請求項１３】
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する処理と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する処理と、
を前記マスタノードに実行させることを特徴とする請求項１２に記載の負荷分散制御プログラム。
【請求項１４】
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する処理と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する処理と、
を前記マスタノードに実行させることを特徴とする請求項１２又は１３に記載の負荷分散制御プログラム。
【請求項１５】
請求項３に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記可否通知を前記マスタノードから受信する処理と、
受信した前記可否通知に従って前記処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。
【請求項１６】
請求項４に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記負荷分散方式変更通知を前記マスタノードから受信する処理と、
前記負荷分散方式変更通知により変更された前記負荷分散方式に従って、処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。
【請求項１７】
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかが負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける負荷分散方法であって、
前記ノードのいずれかであるマスタノードにおいて、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信し、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する、
ことを特徴とする負荷分散方法。
【請求項１８】
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする請求項１７に記載の負荷分散方法。
【請求項１９】
前記マスタノードにおいて、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定し、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を通知する、
を備えることを特徴とする請求項１８に記載の負荷分散方法。
【請求項２０】
前記マスタノードにおいて、
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更し、
変更された前記負荷分散方式を当該負荷分散手段へ通知する、
を更に備えることを特徴とする請求項１８又は１９に記載の負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント装置から要求された処理要求を、複数のサーバに分配して処理する負荷分散システムに関する。より詳しくは、各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかをロードバランサー等の負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムに関する。
【背景技術】
【０００２】
負荷分散システムは、クライアント装置から要求された処理要求を複数のサーバに分配することにより、大量の処理要求を高速に処理することを可能とする。近年では、通信速度の低下を防止する等の目的から、複数のサーバを階層的に接続した階層構造を有する負荷分散システムが利用されている。図１に、階層的に接続した階層構造を有する負荷分散システムの概念的な構成図を示す。【０００３】
概念的には、階層型負荷分散システム１は、各ノード１１１〜１１３、１２１、１３１〜１３９、１４２〜１４３及び１５１〜１５９を階層的に接続したネットワークとして示すことが可能であり、処理要求を処理、分配又は転送する機能を有するサーバ、これらノード又はファイヤウオール等の各種装置をこれらノードとして有している。
フロントエンドと呼ばれる最上位層のノード装置１１１〜１１３が、クライアント装置（以下、単に「クライアント」と示す）Ｃ１及びＣ２からネットワークＮを経由して処理要求を受信すると、この処理要求は上位層のノードから下位層のノードへと順次転送される。そして末端に至るまでの途中にて負荷分散ノード１２１及び１４１〜１４３が複数のノードに処理要求を分配し、これによって各ノードの負荷が分散される。【０００４】
なお、負荷分散ノード１２１及び１４１〜１４３は、負荷分散装置や、サーバ上で実行されこのサーバで負荷分散処理を行わせる負荷分散アプリケーションプログラム、負荷分散ミドルウエア等としてよい。
また、最上位層のノード装置１１１〜１１３は、サーバ装置に限られず、負荷分散装置や、ファイヤウオール装置又はファイヤウオール機能付き負荷分散装置など、様々な装置としてよい。
このように、階層型負荷分散システム１は、様々な構成によって実現することが可能である。以下、本明細書では、説明の目的のみのために特定の構成例を用いるが、本発明はこれら特定の構成に限られることなく、様々な構成の階層型負荷分散システム１に適用することができる。【０００５】
図２は、従来の階層型負荷分散システムの構成例を示す図である。この負荷分散システム１では、最上位層（第１層）にあるサーバ１１〜１３がクライアントＣ１及びＣ２が要求した処理要求を受け付け、これら処理要求を１つ下の層（第２層）に配置された負荷分散装置２１（LB: Load Balancer）へと送信する。
負荷分散装置２１は、各種の負荷分散方式のうち状況に応じた方式に従って、サーバ１１〜１３から受信した処理要求を１つ下の層（第３層）に配置されたサーバ３１〜３９へと分配して送信する。負荷分散方式としては、例えば最小コネクション（Least Connection）、ラウンドロビン(Round Robin)のほか、処理要求の送信先や送信元のアドレスのハッシュ（Hash）関数の値により分散先を決定する方法（以下、本明細書において「Hash法」と示す）、処理要求のHTTPヘッダの内容に応じて分散先を決定する方法（以下、本明細書において「HTTPヘッダ法」と示す）、及び重み付け法が、一般に使用されている。【０００６】
第３層に配置されたサーバ３１〜３３は、負荷分散装置２１から受信した処理要求を、１つ下の階層（第４層）に配置された負荷分散装置４１へ送信する。同様にサーバ３４〜３６は、負荷分散装置２１から受信した処理要求を負荷分散装置４２へ送信する。またサーバ３７〜３９は、負荷分散装置２１から受信した処理要求を負荷分散装置４３へ送信する。
第４層に配置された負荷分散装置４１は、上記の各種の負荷分散方式のうち状況に応じた方式に従って、サーバ３１〜３３から受信した処理要求を最下層（第５層）に配置されたサーバ５１〜５３へ分配する。同様に、負荷分散装置４２はサーバ３４〜３６から受信した処理要求をサーバ５４〜５６へと分配し、負荷分散装置４３はサーバ３７〜３９から受信した処理要求をサーバ５７〜５９へと分配する。【０００７】
【特許文献１】特開２００３−１９６１７８号公報
【発明の開示】
【０００８】
従来の階層型負荷分散システム１では、各サーバ又は各負荷分散装置は、それぞれに接続されている１階層下の装置状態のみを監視して処理要求を送信しており、２階層以上下位の層の装置の状態に関わらず処理要求を送信していた。
そのため、例えば図３に示すように、階層途中の負荷分散装置４１に障害が生じても、負荷分散装置４１よりも２階層上の負荷分散装置２１は、このような事情に関係なく負荷分散装置４１の上の階層に配置されたサーバ３１〜３３へ処理要求を送信してしまう。その結果、これら処理要求が無駄になり、またサーバ３１〜３３から負荷分散装置４１への要求の再送信が繰り返し行われ処理遅延が生じていた。
【０００９】
また、階層途中の装置（図示の例ではサーバ３４及び３５）に障害が生じると、その下流に接続されたサーバ（図示の例ではサーバ５４〜５６）と、その他のサーバ（図示の例ではサーバ５７〜５９）との間に負荷量の偏りが生じていた。
上記問題点に鑑み、本発明は、従来の階層型負荷分散システムに生じていた処理遅延とサーバ間の負荷量の偏りを防止することを目的とする。
【００１０】
上記目的を達成するため、本発明では、各階層に１つ以上のノードを含む階層型負荷分散システムにおいて、これらノードのいずれかにおいて、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括して管理する。ここに負荷分散情報とは、処理要求を分配されるノードにおける処理受付数及び処理実行数、処理要求を分配されるノードの接続状況及び負荷状況、並びに負荷分散ノードにて行われる負荷分散方式の、いずれかを示す情報である。
本発明によれば、負荷分散情報を一括して１つのノード（以下「マスタノード」と記す）で管理することができるようになるため、このマスタノードにて、階層構造に含まれる全てのノードの負荷処理状態が把握できる。このため例えば障害などの負荷処理が困難な状態にあるノードへの無駄な処理要求を避けて処理遅延を防ぐことができる。また、負荷分散情報を一括して管理することにより、マスタノードにて、階層構造に含まれる全てのノードの負荷状態のバランスを把握することができる。これにより、階層構造中のノード間の負荷量の偏りが低減するように、各負荷分散ノードにて行われる負荷分散処理の内容を決定することが可能となる。
【００１１】
本発明の第１形態によれば、各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムが提供される。本負荷分散システムでは、上記ノードのいずれかであるマスタノードは、このマスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括して記憶する負荷分散情報記憶手段と、を備える。
【００１２】
本発明の第２形態によれば、上記第１形態による負荷分散システムにおいてマスタノードとして動作するノード装置が提供される。本ノード装置は、該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括して記憶する負荷分散情報記憶手段と、を備える。マスタノードは、例えばサーバ装置、負荷分散装置や、ファイヤウオール装置又はファイヤウオール機能付き負荷分散装置であってよい。
【００１３】
本発明の第３形態によれば、上記第１形態による負荷分散システムにおいて負荷分散手段として動作する負荷分散装置が提供される。本負荷分散装置は、可否通知をマスタノードから受信する可否通知受信手段と、受信した可否通知に従って処理要求の分配を行う負荷分配手段と、を備える。
【００１４】
本発明の第４形態によれば、各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける、これらノードのいずれかであるマスタノードで実行される負荷分散制御プログラムが提供される。本負荷分散制御プログラムは、マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する処理と、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括してマスタノードに設けられた所定の負荷分散情報記憶手段に記憶する処理と、をマスタノードに実行させる。
【００１５】
本発明の第５形態によれば、上記第１形態による負荷分散システムにおいて負荷分散手段として実行される負荷分散プログラムが提供される。本負荷分散プログラムは、可否通知を前記マスタノードから受信する処理と、受信した可否通知に従って処理要求の分配を行う処理と、をいずれかのノードに実行させる。
【００１６】
本発明の第６形態によれば、各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかが負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける負荷分散方法が提供される。本負荷分散方法では、これらノードのいずれかであるマスタノードにおいて、マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信し、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括してマスタノードに設けられた所定の負荷分散情報記憶手段に記憶する。
【図面の簡単な説明】
【００１７】
【図１】ノードを階層的に接続した階層構造を有する負荷分散システムの概念的な構成図である。
【図２】従来の階層型負荷分散システムの構成例を示す図である。
【図３】図１に示す階層型負荷分散システムにおける障害状態の説明図である。
【図４】本発明の第１実施例による階層型負荷分散システムの概略構成図である。
【図５】図４に示す階層型荷分散システムにおいて最上位層に配置されるサーバの概略構成図である。
【図６】図４に示す階層型負荷分散システムにおいて中間層又は下位層に配置されるサーバの概略構成図である。
【図７】図４に示す階層型負荷分散システムにおける負荷分散装置の概略構成図である。
【図８】装置１台当たりの負荷分散情報のデータ構造の例を示す図である。
【図９】最上位層にあるサーバに記憶される負荷分散情報のデータ構造の例を示す図である。
【図１０】中間層にある装置に記憶される負荷分散情報のデータ構造の例を示す図（その１）である。
【図１１】中間層にある装置に記憶される負荷分散情報のデータ構造の例を示す図（その２）である。
【図１２】図４に示した階層型負荷分散システムの立ち上げシーケンスを示す図（その１）である。
【図１３】図４に示した階層型負荷分散システムの立ち上げシーケンスを示す図（その２）である。
【図１４】最上位サーバの死活監視処理のフローチャートである。
【図１５】負荷分散情報抽出要求のデータ構成例を示す図である。
【図１６】図１５に示す負荷分散情報抽出要求に対する負荷分散情報返送のデータ構成例を示す図である。
【図１７】負荷分散情報矛盾解消処理のフローチャートである。
【図１８】図１５に示す負荷分散情報矛盾解消処理から呼び出されるサブルーチンである上下関係矛盾解消処理のフローチャートである。
【図１９】負荷分散情報補正処理のフローチャートである。
【図２０】図１９に示す負荷分散情報補正処理から呼び出されるサブルーチンである補正分散方式変更処理のフローチャート（その１）である。
【図２１】図１９に示す負荷分散情報補正処理から呼び出されるサブルーチンである補正分散方式変更処理のフローチャート（その２）である。
【図２２】図２０に示す補正分散方式変更処理から呼び出される処理数チェック処理のフローチャートである。
【図２３】図２１に示す補正分散方式変更処理から呼び出されるコネクション数チェック処理のフローチャートである。
【図２４】図２１に示す補正分散方式変更処理から呼び出される、処理分散方式の変更要否の判定処理のフローチャートである。
【図２５】図２１に示す負荷チェック処理として呼び出されるＣＰＵ使用率チェック処理のフローチャートである。
【図２６】図２１に示す負荷チェック処理として呼び出されるメモリ使用率チェック処理のフローチャートである。
【図２７】図２１に示す負荷チェック処理として呼び出されるプロセス使用率チェック処理のフローチャートである。
【図２８】図２１に示す負荷チェック処理として呼び出される残リソース量チェック処理のフローチャートである。
【図２９】図１９に示す負荷分散情報補正処理から呼び出されるサブルーチンである分散先指定時処理のフローチャート（その１）である。
【図３０】負荷分散情報補正要求のデータ構成例を示す図である。
【図３１】図４に示した階層型負荷分散システムに障害が生じた状態を示す図である。
【図３２】図４に示した階層型負荷分散システムにおける障害発生時のシーケンスを示す図（その１）である。
【図３３】図４に示した階層型負荷分散システムにおける障害発生時のシーケンスを示す図（その２）である。
【図３４】障害通知のデータ構成例を示す図である。
【図３５】図４に示した階層型負荷分散システムにおける障害からの復旧時のシーケンスを示す図（その１）である。
【図３６】図４に示した階層型負荷分散システムにおける障害からの復旧時のシーケンスを示す図（その２）である。
【図３７】復旧通知のデータ構成例を示す図である。
【図３８】本発明の第２実施例による階層型負荷分散システムの概略構成図である。
【図３９】図３８に示す階層型負荷分散システムにおいて最上位層に配置されるサーバの概略構成図である。
【図４０】図３８に示す階層型負荷分散システムにおいて中間層又は下位層に配置されるサーバの概略構成図である。
【図４１】図３８に示した階層型負荷分散システムにおける立ち上げシーケンスを示す図である。
【図４２】図３８に示した階層型負荷分散システムに障害が生じた状態を示す図である。
【図４３】図３８に示した階層型負荷分散システムにおける障害発生時のシーケンスを示す図である。
【図４４】図３８に示した階層型負荷分散システムにおける障害からの復旧時のシーケンスを示す図である。
【図４５】負荷分散ミドルウエアにより負荷分散処理を行う最上位層に配置されるサーバの概略構成図である。
【図４６】負荷分散ミドルウエアにより負荷分散処理を行う中間層又は下位層に配置されるサーバの概略構成図である。
【図４７】負荷分散ミドルウエアにより負荷分散処理を行う場合の立ち上げシーケンスを示す図である。
【図４８】負荷分散ミドルウエアにより負荷分散処理を行う場合の障害発生時のシーケンスを示す図である（その１）。
【図４９】負荷分散ミドルウエアにより負荷分散処理を行う場合の障害発生時のシーケンスを示す図である（その２）。
【図５０】負荷分散ミドルウエアにより負荷分散処理を行う場合の障害からの復旧時のシーケンスを示す図である（その１）。
【図５１】負荷分散ミドルウエアにより負荷分散処理を行う場合の障害からの復旧時のシーケンスを示す図である（その２）。
【符号の説明】
【００１８】
１    負荷分散システム
１１〜１３、３１〜３９、５１〜５９    サーバ
２１、４１〜４３    負荷
Ｃ１、Ｃ２    クライアント
Ｎ    ネットワーク
【発明を実施するための最良の形態】
【００１９】
以下、添付する図面を参照して本発明の実施例を説明する。図４は、本発明の第１実施例による階層型負荷分散システムの概略構成図である。階層型負荷分散システム１の全体構成は、図２を参照して説明した従来の負荷分散システムと同様であり、同じ構成要素には同じ参照番号を付し説明を省略する。また以下の説明において、階層型負荷分散システムを単に「負荷分散システム」と示すことがある。
図５は、図４に示す負荷分散システム１において最上位層（第１層）に配置されるサーバ１１〜１３のうちのサーバ１１の概略構成図である。サーバ１２及び１３の構成もサーバ１１と同様である。【００２０】
サーバ１１は、ＣＰＵ１０１と、ＣＰＵ１０１により実行されるプログラムやＣＰＵ１０１による処理に必要なデータを記憶する記憶部１０２と、サーバ１１がネットワークＮや負荷分散システム１内の他の装置（すなわちサーバ１２、１３、３１〜３９及びサーバ５１〜５９並びに負荷分散装置２１、４１〜４３）と通信を行うための通信インタフェース１０３と、を備えている。サーバ１１は、クライアントＣ１及びＣ２が発した処理要求を、通信インタフェース１０３を介してネットワークＮから受信し、その処理要求を通信インタフェース１０３を介してより下位の装置へ送信する。【００２１】
記憶部１０２には、負荷分散装置２１、４１〜４３による負荷分散処理の制御や、負荷分散システム１内における処理要求の送信経路の制御を行う負荷分散制御プログラム１０４と、負荷分散システム１内の各装置の動作状態を示す負荷分散情報１０５が記憶されている。
負荷分散制御プログラム１０４の動作と負荷分散情報１０５については後述する。【００２２】
図６は、図４に示す中間層に配置されるサーバ３１の概略構成図である。サーバ３２〜３９及びサーバ５１〜５９の構成もサーバ３１と同様である。
サーバ３１は、ＣＰＵ２０１と、ＣＰＵ２０１により実行されるプログラムやＣＰＵ２０１による処理に必要なデータを記憶する記憶部２０２と、負荷分散システム１内の他の装置のうちサーバ３１が接続されているより上位の装置（すなわち負荷分散装置２１）及びより下位の装置（すなわち負荷分散装置４１）と通信を行うための通信インタフェース２０３と、を備えている。【００２３】
サーバ３１は、負荷分散装置２１から送信された処理要求を通信インタフェース２０３を介して受信し、これらの処理要求を通信インタフェース２０３を介して下位層の負荷分散装置４１へ送信する。記憶部２０２には、サーバ３１に受信した処理要求を下位層へ送信させる制御プログラム２０４と、後述する負荷分散情報２０５が記憶されている。
但し、負荷分散システム１の末端、すなわち最下層（第５層）に配置されるサーバ５１〜５９の場合には、より下位の装置を持たず、受信した処理要求を自ら処理する。【００２４】
図７は、図４に示す負荷分散システム１における負荷分散装置２１の概略構成図である。負荷分散装置４１〜４３の構成も負荷分散装置２１と同様である。
負荷分散装置２１は、ＣＰＵ３０１と、ＣＰＵ３０１により実行されるプログラムやＣＰＵ３０１による処理に必要なデータを記憶する記憶部３０２と、負荷分散システム１内の他の装置のうち負荷分散装置２１が接続されているより上位の装置（すなわちサーバ１１〜１３）と通信を行うための通信インタフェース３０３及びより下位の装置（すなわちサーバ３１〜３９）と通信を行うための通信インタフェース３０４と、を備えている。【００２５】
記憶部３０２には、通信インタフェース３０３を介して受信した処理要求を、負荷分散装置２１に接続されている下位層のサーバ３１〜３９へと分配する負荷分散処理をＣＰＵ３０１に実行させる負荷分散プログラム３０５と、後述する負荷分散情報３０６とが記憶されている。
負荷分散装置２１は、サーバ１１〜１３から送信された処理要求を通信インタフェース３０３を介して受信し、受信した処理要求の分配先を下位層のサーバ３１〜３９のいずれかに決定し、これら処理要求を通信インタフェース３０４を介して各々サーバ３１〜３９へと送信する。
以下、第１実施例による負荷分散システム１の説明においてこれらサーバ３１〜３９及び５１〜５９、並びに負荷分散装置２１及び４１〜４３をまとめて「下位層装置」と記すことがある。【００２６】
以下、上述の負荷分散情報について説明する。負荷分散情報は、負荷分散システム１の各装置ごとに、当該装置に適用される負荷分散方式、当該装置の負荷状況、最上位層から当該装置へと至る有効な経路の有無を示す情報である。
例えば、当該装置がサーバ３１〜３９及び５１〜５９などの負荷分散装置から処理要求を分配される装置である場合には、負荷分散情報には、当該装置における処理受付数及び処理実行数や、当該装置のノードの接続状況及び負荷状況、また当該装置に対して行われる負荷分散方式を示す情報が含まれる。
また当該装置が負荷分散装置２１及び４１〜４３である場合には、負荷分散情報には、前記負荷分散手段が行う負荷分散方式を示す情報が含まれる。【００２７】
負荷分散情報は、上述の通りサーバ１１〜１３の記憶部１０２と、サーバ３１〜３９及び５１〜５９の記憶部２０２と、負荷分散装置２１及び４１〜４３の記憶部３０２と、に記憶されている。負荷分散情報の各データの値は、負荷分散システム１の構成に応じて予め初期設定され、または従前の負荷分散システム１の動作のために変更された場合にはその値が保持されている。
図８に装置１台あたりの負荷分散情報のデータ構造の例を示す。負荷分散情報は、図８に示すデータ構造を各装置毎に有する。以下の説明において、図８に示すデータ構造を持つある負荷分散情報が、ある装置Ｘの状態を示すものであるときには、「装置Ｘに関する負荷分散情報」と記載する。【００２８】
負荷分散情報に含まれる各データには、データの種類毎に予め識別番号が割り当てられており、この識別番号を図８において「情報要素ＩＤ」と示す。また以下の説明では「情報要素ＩＤ」を単に「ＩＤ」と示す。
ＩＤ＝「１」のデータは、当該装置が配置される階層の番号を示し、例えばサーバ１１に関する負荷分散情報の場合にはこのデータは「１」の値を有し、負荷分散装置４１に関する負荷分散情報の場合にはこのデータは「４」の値を有する。
ＩＤ＝「２」のデータは、負荷分散システム１内において当該装置に割り当てられた階層毎のシーケンス番号を示す。また、ＩＤ＝「３」のデータは当該装置に割り当てられたＩＰアドレスを示す。ＩＤ＝「４」のデータは同階層にある全装置数を示す。【００２９】
ＩＤ＝「５」のデータは、当該装置の状態を示し、例えば正常動作を行っている場合には「正常」を示す値を有し、当該装置が障害状態である場合には「障害」を示す値を有する。また、当該装置が正常であっても、より下位の装置の障害等の原因によって当該装置から末端サーバまで処理要求を送信する有効な経路が存在しない場合や、最上位層のサーバ１１〜１３から当該装置まで処理要求を送信する有効な経路が存在しない場合には「無効」を示す値を有する。その他、本データには、障害中ではないが正常に動作していないことを示すために、当該装置が立ち上げ中であることを示す「立ち上げ中」や、他の装置とのＩＰコネクションが確立できていないことを示す「ＩＰコネクション未確立」などの値を有してもよい。また、当該装置が負荷分散処理を行う装置である場合には、「正常」の代わりに負荷分散が正常に行われていることを示す「負荷分散正常」の値を、「障害」の代わりに負荷分散が正常に行われていないことを示す「負荷分散異常」の値を有してもよい。【００３０】
ＩＤ＝「６」のデータは、最上位層のサーバ１１〜１３から当該装置まで処理要求を送信する有効な経路の有無を示し、有効な経路がある場合及びない場合にそれぞれ「有効」及び「無効」の値を有する。
ＩＤ＝「７」のデータは、当該装置が負荷分散を行う手段の種別を示す。例えば図４に示す構成例では、負荷分散装置２１及び４１〜４３が負荷分散処理を行うが、後述するように負荷分散アプリケーションプログラムや、負荷分散ミドルウエアが負荷分散処理を行うように、負荷分散システム１を構成してもよい。【００３１】
ＩＤ＝「８」のデータは、当該装置に対してその上流の装置が行う負荷分散方式の種別を示す。
負荷分散方式の種別としては、例えばラウンドロビン、Least Connection及び重み付け法（以下、これらをまとめて「ラウンドロビン等」と記すことがある）や、処理要求の分配先が一意に特定されるHash法及びHTTPヘッダ法（以下、これらをまとめて「Hash法等」と記すことがある）がある。また、ＩＤ＝「８」のデータは、当該装置に対して負荷分散が行われない場合には「対象外」を示す値を有する。例えば、負荷分散装置４１の上流の装置であるサーバ３１は、負荷分散処理を行なわず処理要求を全て負荷分散装置４１に送信するため、このような負荷分散装置４１に関する負荷分散情報においては、ＩＤ＝「８」のデータは「対象外」を示す値を有する。【００３２】
また、Hash法等を使用する場合でも処理要求の分配先が冗長な構成を有する場合もある。すなわち、ある処理要求に対してHash法等によって複数の装置が分配先として特定され、次にラウンドロビン等によってこれらの装置の間で処理要求が分配される場合もある。このような場合には、負荷分散方式の種別として、２種の負荷分散方式を組み合わせることを示すデータを有する。【００３３】
例えばまずHash法により処理要求を分配し、次に分配先として特定される複数の装置の間でラウンドロビンを用いて処理要求を分配する場合には、ＩＤ＝「８」のデータは、Hash法とラウンドロビンを組み合わせたことを示す値「Hash-ラウンドロビン」を有する。
また同様に、Hash法により処理要求を分配し、次に分配先として特定される複数の装置の間で最小コネクション法や重み付け法を用いて処理要求を分配する場合には、ＩＤ＝「８」のデータは、それぞれ「Hash-最小コネクション法」及び「Hash-重み付け法」の値を有する。
また例えば、HTTPヘッダ法により処理要求を分配し、次に分配先として特定される複数の装置の間でラウンドロビン、最小コネクション法又は重み付け法を用いて処理要求を分配する場合には、ＩＤ＝「８」のデータは、それぞれ「HTTPヘッダ-ラウンドロビン」、「HTTPヘッダ-最小コネクション法」又は「HTTPヘッダ-重み付け法」の値を有する。【００３４】
ＩＤ＝「９」及び「１０」の各データについては後述する。
ＩＤ＝「１１」のデータ（「処理受付数」）は当該装置が受け付けた処理要求の数を示す。
ＩＤ＝「１２」のデータ（「処理実行数」）は、当該装置が受け付けた処理要求のうち下位層への送信が完了した処理要求の数を示す。当該装置が最下位層のサーバ（本構成例ではサーバ５１〜５９）である場合には当該サーバにより処理が完了した処理要求の数を示す。
ＩＤ＝「１３」のデータは、当該装置と負荷分散システム１内の他の装置との間にＩＰコネクションが確立しているか否かを示し、ＩＰコネクションが確立している場合及び確立していない場合にそれぞれ「ＩＰコネクション確立」及び「ＩＰコネクション未確立」の値を有する。
ＩＤ＝「１４」のデータは、当該装置が現在使用しているＩＰコネクション数を示し、ＩＤ＝「１５」のデータは、当該装置に残されている使用可能なＩＰコネクション数を示す。【００３５】
ＩＤ＝「１６」〜「１８」のデータ領域は、負荷分散装置が行う負荷分散処理における負荷分散方式をラウンドロビンからLeast Connectionに変更する際に、最上位層のサーバ１１〜１３によって使用される。負荷分散システム１では、サーバ３１〜３９及びサーバ５１〜５９の負荷状態が所定の基準を満たすとき、それぞれのサーバへ処理要求を分配する上位の装置が行う負荷分散処理における負荷分散方式が、ラウンドロビンからLeast Connectionに切り替えられる。【００３６】
図２０及び図２１を参照して後述する負荷分散方式変更処理では、あるサーバの処理受付数（ＩＤ＝１１）が処理実行数（ＩＤ＝１２）よりも大きいか否かを判定し、処理受付数が処理実行数よりも大きいと判定した回数をカウントし、所定の保有時間中にこのカウント数が所定の閾値を超えたときに、ある装置にサーバに処理要求を分配する負荷分散方式が、ラウンドロビンからLeast Connectionに切り替えられる。【００３７】
ＩＤ＝「１７」のデータ領域には、処理受付数が処理実行数よりも大きいと判定した回数が記録され、ＩＤ＝「１６」のデータ領域には、ＩＤ＝「１７」のデータ領域に記録される回数のカウントを保有すべき期間（保有時間）が記録される。負荷分散方式変更処理では、この保有時間が経過した後に、ＩＤ＝「１７」の領域に記録された判定回数がＩＤ＝「１８」の領域に記録されている所定の閾値を超えたか否かを判定する。すなわちＩＤ＝「１８」の領域には、ＩＤ＝「１６」の領域に記録された保有時間の間にカウントされＩＤ＝「１７」の領域に記録された判定回数と対比すべき閾値が記録される。
ＩＤ＝「１７」の領域に記録された判定回数とＩＤ＝「１８」の領域に記録されている閾値を比較した後、ＩＤ＝「１７」の領域の値はリセットされる。【００３８】
ＩＤ＝「１９」のデータは、当該装置のＣＰＵ使用率を示し、ＩＤ＝「２０」のデータは当該装置のＣＰＵ使用率として許容される値の閾値を与える。
ＩＤ＝「２１」のデータは、当該装置のメモリ使用率を示し、ＩＤ＝「２２」のデータは当該装置のメモリ使用率として許容される値の閾値を与える。
ＩＤ＝「２３」のデータは、当該装置のプロセス使用率を示し、ＩＤ＝「２４」のデータは当該装置のプロセス使用率として許容される値の閾値を与える。
ＩＤ＝「２５」のデータは、当該装置のリソース使用量を示し、ＩＤ＝「２６」のデータは当該装置のリソース使用量として許容される値の閾値を与える。【００３９】
ＩＤ＝「２７」〜「２９」のデータ領域は、負荷分散装置が行う負荷分散処理における負荷分散方式をラウンドロビン又はLeast Connectionから重み付け法に変更する際に、最上位層のサーバ１１〜１３によって使用される。負荷分散システム１では、サーバ３１〜３９及びサーバ５１〜５９の負荷状態が所定の基準を満たすとき、それぞれのサーバへ処理要求を分配する上位の装置が使用する負荷分散方式が重み付け法に切り替えられる。【００４０】
図２０及び図２１を参照して後述する負荷分散方式変更処理では、あるサーバのＣＰＵ使用率、メモリ使用率、プロセス利用率及び残リソース数が許容値以内であるにも関わらず処理受付数が処理実行数よりも大きいと判定した回数をカウントし、所定の保有時間中にこのカウント数が所定の閾値を超えたときに、ある装置にサーバに処理要求を分配する負荷分散方式が、重み付け方式に切り替えられる。【００４１】
ＩＤ＝「２８」のデータ領域には、処理受付数が処理実行数よりも大きいと判定した回数が記録され、ＩＤ＝「２７」のデータ領域には、ＩＤ＝「２８」のデータ領域に記録される回数のカウントを保有すべき期間（保有時間）が記録される。負荷分散方式変更処理では、この保有時間が経過した後に、ＩＤ＝「２８」の領域に記録された判定回数がＩＤ＝「２９」の領域に記録されている所定の閾値を超えたか否かを判定する。すなわちＩＤ＝「２９」には、ＩＤ＝「２７」の領域に記録された保有時間の間にカウントされＩＤ＝「２８」の領域に記録された判定回数と対比すべき閾値が記録される。
ＩＤ＝「２８」の領域に記録された判定回数とＩＤ＝「２９」の領域に記録されている閾値を比較した後、ＩＤ＝「２８」の領域の値はリセットされる。【００４２】
ＩＤ＝「３０」のデータは、最上位層の装置（例えばサーバ１１〜１３）に接続されているクライアントのＩＰアドレスを示し、最上位層の装置に接続されているクライアントが複数あるときは、クライアント数分のＩＰアドレスを有する。また当該装置が最上位層の装置でない場合には、ＩＤ＝「３０」のデータとして、当該装置と接続されている１階層上の装置のＩＰアドレスを記録してもよい。【００４３】
ＩＤ＝「３１」のデータは、クライアントが接続されている最上位層の装置のＩＰアドレスを示す。複数の最上位層の装置にクライアントが接続されているときは、接続しているサーバ数分のＩＰアドレスを有する。図４に示す構成例では最上位層に複数のサーバ１１〜１３が設けられているため、これら最上位層のサーバはＩＤ＝「３１」のデータを参照することによって、他の最上位のサーバのＩＰアドレスを知ることができる。
ＩＤ＝「３２」のデータは、最上位層の装置に関する負荷分散情報として用意され、当該装置の正常及び障害状態を、クライアントＣ１及びＣ２並びに負荷分散システム１内の他の装置に通知したか否かを示す。【００４４】
ＩＤ＝「３３」〜「４０」のデータは、当該装置に接続されかつ当該装置よりも１階層下の装置に関する情報である。例えば図４に示す構成において、負荷分散装置２１に関する負荷分散情報のＩＤ＝「３３」〜「４０」のデータは、サーバ３１〜３９に関する情報を有する。また、例えば負荷分散装置４１に関する負荷分散情報のＩＤ＝「３３」〜「３９」のデータは、サーバ５１〜５３に関する情報を有する。【００４５】
ＩＤ＝「３３」のデータは、当該装置よりも１階層下の階層の番号を示す。
ＩＤ＝「３４」のデータは、当該装置に接続されかつ当該装置よりも１階層下の階層の装置の数を示し、当該装置が負荷分散装置である場合には当該装置の負荷分散処理によって処理要求が分配される装置数を示す。
ＩＤ＝「３５」のデータは、当該装置に接続されかつ当該装置よりも１階層下の階層の装置のそれぞれの装置番号を示し、このような１階層下の装置が複数ある場合には、ＩＤ＝「３５」のデータはこれらの装置の数分のデータを有する。
ＩＤ＝「３６」のデータは、当該装置に接続されかつ当該装置よりも１階層下の装置が負荷分散を行う場合にはその負荷分散方式の種別を示す。このような１階層下の装置が複数ある場合には、ＩＤ＝「３６」のデータはこれらの装置の数分のデータを有する。【００４６】
ＩＤ＝「３７」のデータは、当該装置に接続されかつ当該装置よりも１階層下の階層の装置のＩＰアドレスを示す。このような装置が複数ある場合にはＩＤ＝「３７」のデータはこれらの装置の数分のデータを有する。
ＩＤ＝「３８」のデータは、当該装置に接続されかつ当該装置よりも１階層下の装置が負荷分散を行う場合には、その負荷分散処理が、負荷分散装置、サーバ上で動作する負荷分散アプリケーションプログラム、負荷分散ミドルウエアのいずれにより行われるかを示す。このような１階層下の装置が複数ある場合にはＩＤ＝「３８」のデータはこれらの装置の数分のデータを有する。【００４７】
ＩＤ＝「３９」のデータは、当該装置に接続されかつ当該装置よりも１階層下の装置の装置状態を示し、上述のそれぞれの装置状態に応じて「正常」、「障害」、「無効」を示す値を有する。上述したように「立ち上げ中」、「ＩＰコネクション未確立」、「負荷分散正常」及び「負荷分散異常」などの値を有してもよい。このような１階層下の装置が複数ある場合には、ＩＤ＝「３９」のデータはこれらの装置の数分のデータを有する。
ＩＤ＝「４０」のデータは、当該装置に接続されかつ当該装置よりも１階層下の階層の装置の各々が、末端のサーバ５１〜５９まで処理要求を送信できる有効経路を有しているか否かを示し、有効経路がある場合には「有効」の値を有し、ない場合には「無効」の値を有する。このような１階層下の装置が複数ある場合には、ＩＤ＝「４０」のデータはこれらの装置の数分のデータを有する。【００４８】
図９は、最上位層のサーバ１１〜１３の記憶部１０２に記憶される負荷分散情報のデータ構造の例を示す図である。最上位層のサーバ１１〜１３は、負荷分散システム１に含まれる全ての装置に関する負荷分散情報を記憶する。したがって本実施例における最上位層のサーバ１１〜１３は、特許請求の範囲に記載されるマスタノードに対応する。本実施例ではマスタノードを実現する装置としてサーバを用いるが、マスタノードは、負荷分散装置や、ファイヤウオール装置又はファイヤウオール機能付き負荷分散装置など、様々な装置としてよい。
最上位層のサーバ１１〜１３は、同じ階層の他の最上位層のサーバ、及び下位層装置から、これらの装置とネットワーク層にて確立されたリンクを介して負荷分散情報を収集する。また下位層装置のいずれかが障害状態にある場合には、その装置に接続され且つその装置よりも１つ上位層に配置された装置から、その障害状態にある装置の負荷分散情報を収集する。【００４９】
中間層に配置されたサーバ３１〜３９は、自分自身である当該装置に関する負荷分散情報と、当該装置に接続されかつ当該装置よりも１つ下の層にある装置に関する負荷分散情報を、その記憶部２０２に記憶する。また、中間層に配置された負荷分散装置２１及び４１〜４３もまた、自分自身である当該装置に関する負荷分散情報と、当該装置に接続されかつ当該装置よりも１つ下の層にある装置に関する負荷分散情報を、その記憶部３０２に記憶する。【００５０】
図１０は、第２層に配置された負荷分散装置２１に記憶される負荷分散情報のデータ構造の例を示す図であり、図１１は、第４層に配置された負荷分散装置４１に記憶される負荷分散情報のデータ構造の例を示す図である。中間層に配置されたサーバ３１〜３９、及び負荷分散装置２１及び４１〜４３の各々は、自分自身である当該装置に接続されかつ当該装置よりも１つ下の層にある装置から、これらの装置とネットワーク層にて確立されたリンクを介して負荷分散情報を収集する。
また、最下位層にあるサーバ５１〜５９は、各々自分自身である当該装置に関する負荷分散情報のみを、その記憶部２０２に記憶する。【００５１】
図１２及び図１３は、図４に示した負荷分散システム１の立ち上げシーケンスを示す図である。負荷分散システム１内の全装置を起動すると、下位層装置は、最上位層のサーバ１１〜１３に対してＴＣＰ／ＩＰリンクの確立を要求することによって、最上位層のサーバ１１〜１３との間のＴＣＰ／ＩＰリンクを確立する（ステップＳ１０１）。
そしてステップＳ１０２において、最上位層のサーバ１１〜１３の各々は、他の最上位層のサーバが正常に動作しているかどうかを判定する最上位サーバの死活監視処理を行う。【００５２】
図１４に、最上位層のサーバ１１〜１３上で動作する負荷分散制御プログラム１０４により実行される最上位サーバの死活監視処理のフローチャートを示す。最上位層のサーバ１１〜１３は、他の最上位層のサーバに対してＴＣＰ／ＩＰメッセージを送信し、その送信が正常に送信されるか否かに応じてメッセージを送信した先のサーバが正常か否かを判定することにより、互いに死活監視を行う。例えば、サーバ１１はサーバ１２にＴＣＰ／ＩＰメッセージを送信してサーバ１２の死活監視を行い、サーバ１２はサーバ１３にＴＣＰ／ＩＰメッセージを送信してサーバ１３の死活監視を行い、サーバ１３はサーバ１１にＴＣＰ／ＩＰメッセージを送信してサーバ１１の死活監視を行う。以下、サーバ１１における処理を例にして説明を行う。【００５３】
ステップＳ１１１ではサーバ１１は、ＴＣＰ／ＩＰレベルの死活監視メッセージを次の最上位層のサーバ１２に送信する。
ステップＳ１１２ではサーバ１１は、ステップＳ１１１の送信結果が正常であるか否かを判定する。送信結果が正常であるとき処理をステップＳ１１３へ進める。【００５４】
ステップＳ１１３では、最上位層のサーバ１１の記憶部１０２に記憶された最上位層のサーバ１２に関する負荷分散情報中のデータ「通知済み情報」（ＩＤ＝３２）を参照する。そして、このデータが、「ＯＮ」すなわち「以前にクライアントＣ１及びＣ２並びに負荷分散システム１内の下位層装置に最上位層のサーバ１２が異常であることを通知し、かつその後に正常になったことをまだ通知していないこと」を示すときは、最上位層のサーバ１１は、ステップＳ１１４においてクライアントＣ１及びＣ２に最上位層のサーバ１２が正常であることを通知し、ステップＳ１１５において負荷分散システム１内の下位層装置に最上位層のサーバ１２が正常であることを通知する。
そしてステップＳ１１６において、最上位層のサーバ１１は、その記憶部１０２に記憶された最上位層のサーバ１２に関する負荷分散情報中のデータ「通知済み情報」の値を、「ＯＦＦ」にする。データ「通知済み情報」の値が「ＯＦＦ」にされることにより、「以前にクライアントＣ１及びＣ２並びに負荷分散システム１内の下位層装置に最上位層のサーバ１２が正常であることを通知し、かつその後に異常になったことをまだ通知していないこと」が記憶される。その後、処理をステップＳ１２１へ進める。【００５５】
ステップＳ１１１における判定において送信結果が異常であるときは、処理をステップＳ１１７へ進める。
ステップＳ１１７では、最上位層のサーバ１１の記憶部１０２に記憶された最上位層のサーバ１２に関する負荷分散情報中のデータ「通知済み情報」を参照する。そして、このデータが「ＯＦＦ」を示すときは、最上位層のサーバ１１は、ステップＳ１１８においてクライアントＣ１及びＣ２に最上位層のサーバ１２が異常であることを通知し、ステップＳ１１９において負荷分散システム１内の下位層装置に最上位層のサーバ１２が異常であることを通知する。
そしてステップＳ１２０において、最上位層のサーバ１１は、記憶部１０２に記憶された最上位層のサーバ１２に関する負荷分散情報中のデータ「通知済み情報」の値を、「ＯＮ」にする。【００５６】
図１２に戻り、最上位サーバの死活監視処理Ｓ１０２が終了し、最上位層のサーバ１１〜１３とその下位層にある全装置との間のＴＣＰ／ＩＰリンクの接続の可否が確定すると、ステップＳ１０３において負荷分散制御プログラム１０４は、全ての下位層装置に対して負荷分散情報抽出要求を行い、これらの下位層装置に関する負荷分散情報を収集する処理をサーバ１１〜１３に実行させる。このとき併せて、負荷分散制御プログラム１０４は、各サーバ１１〜１３に、他の最上位層のサーバに関する負荷分散情報を収集する処理を実行させる。
サーバ１１〜１３が送信する負荷分散情報送信要求のデータ構成例を図１５に示す。【００５７】
本実施例において、負荷分散情報に関するその抽出要求や、送信（通知）、補正要求などの際に負荷分散システム１内でやりとりされる通信データは、以下に説明する一定のフォーマットに従って作成され、ＴＣＰ／ＩＰレベルで送受信される。この通信データは、上述した負荷分散情報に「要求種別」と「ＩＤビットマップ情報」を付加した構成を有している。
「要求種別」は、送信された通信データの内容の種別を示すデータである。「要求種別」は、通信データの内容の種別が、負荷分散情報抽出要求、並びに後述する負荷分散情報返送、負荷分散情報補正要求、負荷分散情報補正完了通知、負荷分散情報通知、負荷分散情報通知への応答、装置の障害通知及び装置の復旧通知などのいずれであるかを示す。【００５８】
「ＩＤビットマップ情報」は、送信された通信データに含まれる負荷分散情報のうち、どのＩＤを持つデータが有効データであるかを示すビットマップ情報である。
図１５に示す負荷分散情報抽出要求の場合、「要求種別」には、送信されたデータが負荷分散情報抽出要求であることを示す種別データが入力され、ＩＤ＝１〜４であるデータのみが有効データとなる。そして負荷分散情報中のデータ「階層番号」（ＩＤ＝１）及び「装置番号」（ＩＤ＝２）によって、負荷分散情報の送信が要求される装置を特定する。【００５９】
サーバ３１〜３９及び５１〜５９上で動作する制御プログラム２０４は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部２０２に記憶している自己に関する負荷分散情報２０５を最上位層のサーバ１１〜１３に返送する処理を、各々のサーバに実行させる。【００６０】
同様に負荷分散装置２１及び４１〜４３上で動作する負荷分散プログラム３０５は、負荷分散情報抽出要求を受信すると、各負荷分散装置が各々記憶部３０２に記憶している自己に関する負荷分散情報３０６を最上位層のサーバ１１〜１３に返送する処理を、各々の負荷分散装置に実行させる。【００６１】
このとき例えば、制御プログラム２０４及び負荷分散プログラム３０５は、図１４に示す死活監視処理により異常であると判定された最上位層のサーバ１１〜１３を、負荷分散情報の送信対象から除外するように、サーバ及び負荷分散装置を動作させる。このため制御プログラム２０４及び負荷分散プログラム３０５は、図１４に示す死活監視処理において、いずれかの最上位層のサーバが異常である旨の通知を受けたことを、サーバの記憶部２０２及び負荷分散装置の記憶部３０２にそれぞれ記憶しておく。【００６２】
下位層装置が返送する負荷分散情報のデータ構成例を図１６に示す。「要求種別」には、送信されたデータが負荷分散情報の返送データであることを示す種別データが入力され、ＩＤ＝１〜４０を有するデータが全て有効データとなる。但し最下位層にあるサーバ５１〜５９から送信されるデータはＩＤ＝３３〜４０を有するデータが無効データとなる。【００６３】
サーバ１１〜１３の負荷分散制御プログラム１０４は、他の最上位層のサーバ及び下位層装置から送信された負荷分散情報を受信する処理と、受信した負荷分散情報を各々の記憶部１０２に記憶する処理とを、サーバ１１〜１３に実行させる。したがって負荷分散制御プログラム１０４及び通信インタフェース１０３は、特許請求の範囲に記載された負荷分散情報受信手段に対応する。【００６４】
サーバ３１〜３９の制御プログラム２０４は、最上位層のサーバ１１〜１３へ自己の負荷分散情報を返送するのに併せて、それぞれのサーバに接続されかつ各サーバよりも１階層下にある負荷分散装置４１〜４３から負荷分散情報を収集する処理を、各サーバ３１〜３９に実行させる。サーバ３１〜３９は、収集した負荷分散情報をそれぞれの記憶部２０２に記憶する。【００６５】
負荷分散装置２１及び４１〜４３の負荷分散プログラム３０５は、最上位層のサーバ１１〜１３へ自己の負荷分散情報を返送するのに併せて、それぞれの負荷分散装置に接続されかつ各負荷分散装置よりも１階層下にあるサーバ３１〜３９及び５１〜５９から負荷分散情報を収集する処理を、各負荷分散装置２１及び４１〜４３に実行させる。そして各負荷分散装置２１及び４１〜４３は、収集した負荷分散情報をそれぞれの記憶部３０２に記憶する。
これら中間層にあるサーバ３１〜３９並びに負荷分散装置２１及び４１〜４３と、これらの装置より１階層下にある装置との間で負荷分散情報を授受する際に行われる処理は、上述した最上位層１１〜１３と下位層装置との間で負荷分散情報を収集する処理と同様である。【００６６】
ステップＳ１０４では、最上位層のサーバ１１〜１３の各々は、ステップＳ１０３で収集した負荷分散情報に含まれる矛盾をチェックしてこれを解消する。負荷分散情報に含まれる矛盾とは、例えば、ある１つの装置に関する負荷分散情報中のデータ「装置状態」（ＩＤ＝５）の値が「障害」であるにも関わらず、データ「ＩＰコネクション確立状態」（ＩＤ＝１３）の値が「ＩＰコネクション確立」となっている等の、１つの装置における正常状態及び異常状態（若しくは無効状態）に関する矛盾であってよい。
また、負荷分散情報に含まれる矛盾の他の例は、装置間の上下関係に関する矛盾、すなわち上位装置に関する負荷分散情報中のデータ「装置状態」の値が「障害」又は「無効」であるのにも関わらず、その上位装置の下流にある装置に関する負荷分散情報中のデータ「装置状態」の値が「正常」である等の矛盾であってもよい。【００６７】
図１７に、負荷分散制御プログラム１０４により実行される負荷分散情報矛盾解消処理のフローチャートを示す。
ステップＳ１３０において、各最上位層のサーバ１１〜１３は、負荷分散システム１内の全装置のうち、各装置から前回に収集した負荷分散情報と、今回のステップＳ１０３で収集した負荷分散情報とを比べて、情報に変化があった装置を選択する。そしてここで選択した当該装置について、以下のステップＳ１３１〜Ｓ１３４を実行する。このように前回に収集した負荷分散情報と今回収集した負荷分散情報との間の相違点に絞って処理を行うことで、負荷分散情報矛盾解消処理を迅速に行うことができる。【００６８】
各最上位層のサーバ１１〜１３は、ステップＳ１３１において当該装置に関する負荷分散情報中のデータ「処理受付数」（ＩＤ＝１１）、「ＣＰＵ使用率」（ＩＤ＝１９）、「メモリ使用率」（ＩＤ＝２１）、「プロセス使用率」（ＩＤ＝２３）及び「リソース使用量」（ＩＤ＝２５）を参照し、これらの値に異常がある場合（例えばこれらの値が所定の許容範囲を超える場合）には、ステップＳ１３２にて負荷分散情報中のデータ「装置状態」の値を「障害」に設定する。
また各最上位層のサーバ１１〜１３は、ステップＳ１３１において当該装置に関する負荷分散情報中の「装置状態」を参照し、その値が「障害」である場合にはステップＳ１３２にて負荷分散情報中のデータ「ＩＰコネクション確立状態」（ＩＤ＝１３）の値を「ＩＰコネクション未確立」にする。
またさらに各最上位層のサーバ１１〜１３は、ステップＳ１３１において当該装置に関する負荷分散情報中のデータ「ＩＰコネクション確立状態」を参照し、その値が「ＩＰコネクション未確立」である場合にはステップＳ１３２にて負荷分散情報中のデータ「装置状態」（ＩＤ＝５）の値を「障害」にする。【００６９】
ステップＳ１３３では、各最上位層のサーバ１１〜１３は当該装置に関する負荷分散情報中のデータ「負荷分散方式（既存）」（ＩＤ＝８）を参照し、当該装置に適用される負荷分散方式がHash法等でありかつこの負荷分散方式による処理要求の分配先が単独構成であるか否かを判定する。負荷分散方式がHash法等でありかつ分配先が単独構成である場合には、現在使用されている負荷分散方式を優先して使用するために、次のステップＳ１３４をスキップして処理を終了する。「負荷分散方式（既存）」が「対象外」である場合にも同様とする。【００７０】
ステップＳ１３３において、当該装置に適用される負荷分散方式がラウンドロビン等であると判定され、または当該装置に適用される負荷分散方式がHash法等であっても処理要求の分配先が冗長な構成を有すると判定された場合には、処理をステップＳ１３４に移行する。
なお、ステップＳ１３１において、当該装置に適用される負荷分散方式がHash法等である場合には、現在使用されている負荷分散方式を優先して使用するために、処理要求の分配先が単独構成であるか否かに関わらず処理を終了してもよい。【００７１】
ステップＳ１３４において各最上位層のサーバ１１〜１３は、当該装置及びその下流にある装置についての上下関係の矛盾を解消する上下関係矛盾解消処理を呼び出す。図１８は、ステップＳ１３４にて呼び出されるサブルーチンである上下関係矛盾解消処理のフローチャートである。
ステップＳ１４０において各最上位層のサーバ１１〜１３は、当該装置が最下位層にある装置であるか否かを判定し、当該装置が最下位層にある場合には何もせずに処理を終了する。
ステップＳ１４１において各最上位層のサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「装置状態」の値が「正常」であるか否かを判定し、「正常」である場合には何もせずに処理を終了する。【００７２】
ステップＳ１４２において各最上位層のサーバ１１〜１３は、当該装置に接続されかつ当該装置よりも１つ下位層にある装置を選択する。そして選択した下位装置に関する負荷分散情報中のデータ「装置状態」が「正常」であればその値を「無効」にし、また選択した下位装置に関する負荷分散情報中のデータ「上位装置からのルート状態」（ＩＤ＝６）の値も「無効」にする（ステップＳ１４３及びステップＳ１４４）。
ステップＳ１４５では、選択した下位装置及びその下流にある装置についての上下関係の矛盾を解消するように上下関係矛盾解消処理の再帰呼び出しを行う。
ステップＳ１４６では、当該装置に接続されかつ当該装置よりも１つ下位層装置の全てについてステップＳ１４３〜Ｓ１４５を実行したか否かを判定する。そして全ての下位装置について実行した場合には処理を終了し、そうでない場合には、次の下位装置を選択して（ステップＳ１４７）、処理をステップＳ１４３に戻す。【００７３】
図１２に戻りステップＳ１０５では、各最上位層のサーバ１１〜１３は負荷分散情報補正処理を実行し、サーバ１１〜１３の記憶部１０２に記憶された負荷分散情報を補正する。負荷分散情報補正処理では、負荷分散システム１内のある装置が、その下流の末端のサーバまで処理要求を送信できる有効な経路を有するか否かをチェックし、このような有効経路を有しない場合にはその装置に対する処理要求を無効にする。また負荷分散情報補正処理では、負荷分散システム１内で負荷分散処理を行う各装置（本構成例では各負荷分散装置２１及び４１〜４３）が行う負荷分散処理の負荷分散方式の変更を行う。【００７４】
図１９は、最上位層のサーバ１１〜１３上で動作する負荷分散制御プログラム１０４により実行される負荷分散情報補正処理のフローチャートである。
ステップＳ１６０においてサーバ１１〜１３は、負荷分散システム１内の下から２番目の階層（本構成例では第４層）を処理対象層として選択する。そしてステップＳ１６１においてサーバ１１〜１３は、選択された階層中のいずれかの装置を、処理対象とすべき当該装置として選択する。【００７５】
ステップＳ１６２においてサーバ１１〜１３は、当該装置に関する負荷分散情報を記憶部１０２から読み出し、負荷分散情報中のデータ「１階層下のルート状態」（ＩＤ＝３９）を参照する。そしてサーバ１１〜１３は、データ「１階層下のルート状態」の値が全て「無効」であるか否か、すなわち当該装置に接続されかつ当該装置よりも１階層下の装置の全てが、負荷分散システム１の末端へ処理要求を送信できる有効な経路を有していないかどうかを判定する。
データ「１階層下のルート状態」の値が全て「無効」と判定された場合には、当該装置はその下流の末端に処理要求を送信できる有効な経路を有さないことを意味する。したがってサーバ１１〜１３は、ステップＳ１６３において当該装置の負荷分散情報中のデータ「装置状態」の値を「無効」に設定する。【００７６】
また、ステップＳ１６４において、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、当該装置に関するデータの値を「無効」にする。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」（ＩＤ＝６）の値を「無効」にする。
ステップＳ１６５においてサーバ１１〜１３は、ステップＳ１６３及びステップＳ１６４によって変更された負荷分散情報の内容を、その記憶部２０２に記憶される負荷分散情報にマージする。その後、処理はステップＳ１７２に移る。【００７７】
ステップ１６２において、データ「１階層下のルート状態」が全て「無効」でないと判定された場合には、サーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「装置状態」の値が「正常」であるか否かを判定する。
データ「装置状態」が「正常」でないと判定された場合、サーバ１１〜１３はステップＳ１６４において、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」の中の、当該装置に関するデータの値を「無効」にする。また当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にする。
ステップＳ１６５においてサーバ１１〜１３は、ステップＳ１６４によって変更された負荷分散情報の内容を、記憶部２０２に記憶される負荷分散情報にマージする。その後、処理はステップＳ１７２に移る。【００７８】
データ「装置状態」が「正常」であると判定された場合、サーバ１１〜１３は、ステップＳ１６６において、当該装置に関する負荷分散情報中のデータ「負荷分散方式（既存）」を参照する。
当該装置に対してその上流の装置が行う負荷分散方式がラウンドロビン等である場合は、サーバ１１〜１３はステップＳ１６８にて負荷分散方式変更処理を呼び出す。ステップＳ１６９においてサーバ１１〜１３は、ステップＳ１６８によって変更された負荷分散情報の内容を、記憶部２０２に記憶される負荷分散情報にマージする。その後、処理はステップＳ１７２に移る。【００７９】
当該装置に対してその上流の装置が行う負荷分散方式がHash法等である場合は、サーバ１１〜１３はステップＳ１７０にて分配先指定時負荷分散方式変更処理を呼び出す。ステップＳ１７１においてサーバ１１〜１３は、ステップＳ１７０によって変更された負荷分散情報の内容を、記憶部２０２に記憶される負荷分散情報にマージする。その後、処理はステップＳ１７２に移る。
負荷分散方式変更処理及び分配先指定時負荷分散方式変更処理については後述する。当該装置が負荷分散の対象外である場合には、処理はステップＳ１７２に移る。【００８０】
ステップＳ１７２において、サーバ１１〜１３は処理対象層として現在選択されている階層に含まれる全ての装置について、ループＳ１６２〜Ｓ１７３を実行したか否かを判定する。処理対象層の全ての装置についてループＳ１６２〜Ｓ１７３を実行したと判定された場合には処理はステップＳ１７４に移る。そうでない場合にはサーバ１１〜１３はステップＳ１７３において、処理対象層中のまだ処理対象となっていない装置を当該装置として選択し、処理をステップＳ１６２に戻る。【００８１】
ステップＳ１７４において、サーバ１１〜１３は負荷分散システム１の全階層について、ループＳ１６１〜Ｓ１７５を実行したか否かを判定する。全階層についてループＳ１６１〜Ｓ１７５を実行したと判定された場合には処理が終了する。そうでない場合には現在の処理対象層よりも１階層上の層を処理対象層として選択し（ステップＳ１７５）、処理をステップＳ１６１に戻す。【００８２】
サーバ１１〜１３は、負荷分散制御プログラム１０４を実行し上述の負荷分散情報補正処理を行うことにより、負荷分散システム１の各装置について、各装置がその下流の末端に処理要求を送信できる有効な経路を持っているか否かが下位層から順に決定する。そしてある装置Ｘがその下流の末端に処理要求を送信できる有効な経路を持っていないとき、サーバ１１〜１３は、装置Ｘの１階層上の装置に関する負荷分散情報において、データ「１階層下のルート状態」の中の装置Ｘに関するデータの値を「無効」にする。すなわちサーバ１１〜１３は、装置Ｘからその下流の末端に処理要求を送信する経路が「無効」であることを、装置Ｘへ処理要求を送信する上位の装置に関する負荷分散情報に記録する。
これによりサーバ１１〜１３は、負荷分散システム１の各装置がその下流の末端に処理要求を送信できる有効な経路を持っているか否かに応じて、その装置への処理要求の送信の可否を決定する。したがって負荷分散制御プログラム１０４は、特許請求の範囲に記載された送信可否決定手段に対応する。【００８３】
図２０及び図２１は、図１９に示す負荷分散情報補正処理のステップＳ１６８により呼び出されるサブルーチンである補正分散方式変更処理のフローチャートである。
ステップＳ１８０において、サーバ１１〜１３は、負荷分散情報補正処理を前回行ったときから現在までに、処理対象である当該装置と同じ階層の他の装置に適用される負荷分散処理方式に変更があったか否かを判定する。
変更があったと判定された場合には、当該装置に対しても同じ負荷分散処理を行うことが好ましいと仮定できるので、ステップＳ１８１においてサーバ１１〜１３は、当該装置に適用する負荷分散方式を変更する。【００８４】
負荷分散方式の変更に際して、サーバ１１〜１３は、記憶部２０２に記憶された負荷分散情報のうち、当該装置に対して処理要求を分配する１階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替」（ＩＤ＝１０）の値を、当該装置と同じ階層の他の装置に適用されている負荷分散方式の種別と同じ値にセットする。また、この１階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」（ＩＤ＝９）の値を「ＯＦＦ」から「ＯＮ」に変更する。
このように負荷分散情報を変更することによって、後に述べるようにこの変更された負荷分散情報が当該装置の１階層上の装置に送信されたとき、この負荷分散情報は、負荷分散方式を変更すべきことを当該装置の１階層上の装置に知らせることになる。【００８５】
ステップＳ１８２では、サーバ１１〜１３は、当該装置が中間層のサーバであるときは、受け付けた処理要求の数とそのうち下位層への送信が完了した数との関係をチェックする。当該装置が最下位層のサーバ５１〜５９であるときは、受け付けた処理要求の数とそのうち処理が完了した数との関係をチェックする処理数チェック処理を実行する。図２２に処理数チェック処理のフローチャートを示す。【００８６】
ステップＳ２００では、サーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「処理受付数」と「処理実行数」とを比較する。処理数チェック処理は、処理受付数が処理実行数よりも大きくない場合に、戻り値として当該装置に対する負荷分散処理に問題が無いことを示す値「１」を呼び出し元に返す（ステップＳ２０１）。処理受付数が処理実行数よりも大きい場合には負荷分散処理に問題があることを示す値「０」を呼び出し元に返す（ステップＳ２０２）。【００８７】
図２０及び図２１に戻りステップＳ１８３において処理数チェック処理の戻り値が「１」であるときは、サーバ１１〜１３は処理をステップＳ１９５に移し、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。そして当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして処理を終了する。
ステップＳ１８３において処理数チェック処理の戻り値が「０」であるときは、サーバ１１〜１３は処理をステップＳ１８４に移す。ステップＳ１８４では、当該装置が有するコネクション数がチェックされる。図２３にコネクション数チェック処理のフローチャートを示す。【００８８】
ステップＳ２１０及びステップＳ２１１では、サーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「ＩＰコネクション確立状態」（ＩＤ＝１３）とデータ「残りＩＰコネクション数」（ＩＤ＝１５）を参照する。
ＩＰコネクションが確立していない場合又は残りＩＰコネクション数がない場合は、コネクション数チェック処理は、当該装置への処理要求の分配を無効とすべきことを示す値「−１」を戻り値として呼び出し元に返す（ステップＳ２１２）。ＩＰコネクションが確立しておりかつ残りＩＰコネクション数があるときは、コネクション数チェック処理は、戻り値として負荷分散方式を変更するか否か判定することが必要であることを示す値「０」を呼び出し元に返す（ステップＳ２１３）。【００８９】
図２１に戻りステップＳ１８５において、コネクション数チェック処理の戻り値が「−１」であるときは、サーバ１１〜１３は処理をステップＳ１９４に移し、当該装置の負荷分散情報中のデータ「装置状態」の値を「無効」に設定する。また、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」のうち当該装置に関するデータの値を「無効」に設定する。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にする。
ステップＳ１８５においてコネクション数チェック処理の戻り値が「０」であるときは、サーバ１１〜１３は処理をステップＳ１８６に移す。ステップＳ１８６では、当該装置に適用される負荷分散方式を、通常のラウンドロビンからLeast Connectionへと変更すべきか否かが判定される。図２４は、ステップＳ１８６で呼び出される処理分散方式の変更要否の判定処理のフローチャートである。【００９０】
ステップＳ２２０においてサーバ１１〜１３は、記憶部１０２に記憶されている当該装置に関する負荷分散情報中のデータ「Least Connectionへの切替に使用するカウント数」（ＩＤ＝１７）（以下、ステップＳ１８６の説明において単に「カウント数」と記す）を１だけ増加させる。
ステップＳ２２１においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「Least Connectionへの切替に使用するカウント数の閾値」（ＩＤ＝１８）（以下、ステップＳ１８６の説明において単に「閾値」と記す）を参照し、カウント数と閾値を比較する。
ステップＳ２２１での比較においてカウント数が閾値を超えるとき、呼び出し元への戻り値が「要」にセットされ（ステップＳ２２３）、そうでない場合には戻り値は「不要」にセットされる（ステップＳ２２４）。【００９１】
ステップＳ２２５においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「Least Connectionへの切替に使用するカウント保有時間」（ＩＤ＝１６）（以下、ステップＳ１８６の説明において単に「保有時間」と記す）を参照し、カウントを開始してからこの保有時間が経過したか否かを判定する。
ステップＳ２２５の判定において保有時間が経過している場合には、ステップＳ２２６においてサーバ１１〜１３は「カウント数」の値を０に戻す。【００９２】
図２１のステップＳ１８７において、サーバ１１〜１３は、ステップＳ１８６の処理からの戻り値が「不要」であるときは処理をステップＳ１８９に移す。
一方で戻り値が「要」であるときは、ステップＳ１８８においてサーバ１１〜１３は、当該装置に処理要求を分配する１階層上の負荷分配装置の負荷分散方式を、Least Connection に変更する。このときサーバ１１〜１３は、記憶部２０２に記憶された負荷分散情報のうち、当該装置に対して処理要求を分配する１階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替」（ＩＤ＝１０）の値を「Least Connection」に変更する。また、この１階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」（ＩＤ＝９）の値を「ＯＦＦ」から「ＯＮ」に変更する。
そしてステップＳ１９５においてサーバ１１〜１３は、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。また、当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして処理を終了する。【００９３】
このようにサーバ１１〜１３は、負荷分散制御プログラム１０４を実行して図２０及び図２１に示す負荷分散方式変更処理を行うことにより、サーバ等である装置Ｘの負荷状態が所定の基準、すなわち「処理受付数が処理実行数を超える状態が所定時間以上持続する」という基準を満たすとき、装置Ｘへ負荷を分配する負荷分散装置等の上位装置が採用する負荷分散方式を変更する。したがって、負荷分散制御プログラム１０４は、特許請求の範囲に記載された負荷分散方式変更手段に対応する。【００９４】
ステップＳ１８９においてサーバ１１〜１３は、当該装置のその他の負荷状態をチェックする。図２５〜図２８にステップＳ１８９の負荷チェック処理の例を示す。
図２５は、負荷チェック処理Ｓ１８９として呼び出されるＣＰＵ使用率チェック処理のフローチャートである。
ステップＳ２３０においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「ＣＰＵ使用率」（ＩＤ＝１９）とデータ「ＣＰＵ使用率閾値」（ＩＤ＝２０）を比較する。ＣＰＵ使用率チェック処理は、ＣＰＵ使用率がＣＰＵ使用率閾値よりも小さくない場合に、当該装置への処理要求の分配を無効とすべきことを示す戻り値「−１」を呼び出し元に返し（ステップＳ２３１）、ＣＰＵ使用率がＣＰＵ使用率閾値よりも小さい場合には、戻り値として値「０」を呼び出し元に返す（ステップＳ２３２）。【００９５】
図２６は、図２１に示す負荷チェック処理Ｓ１８９として呼び出されるメモリ使用率チェック処理のフローチャートである。
ステップＳ２４０においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「メモリ使用率」（ＩＤ＝２１）とデータ「メモリ使用率閾値」（ＩＤ＝２２）を比較する。メモリ使用率チェック処理は、メモリ使用率がメモリ使用率閾値よりも小さくない場合に戻り値「−１」を呼び出し元に返し（ステップＳ２４１）、メモリ使用率がメモリ使用率閾値よりも小さい場合には、戻り値「０」を呼び出し元に返す（ステップＳ２４２）。【００９６】
図２７は、図２１に示す負荷チェック処理Ｓ１８９として呼び出されるプロセス使用率チェック処理のフローチャートである。
ステップＳ２５０においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「プロセス使用率」（ＩＤ＝２３）とデータ「プロセス使用率閾値」（ＩＤ＝２４）を比較する。プロセス使用率チェック処理は、プロセス使用率がプロセス使用率閾値よりも小さくない場合に、戻り値「−１」を呼び出し元に返し（ステップＳ２５１）、プロセス使用率がプロセス使用率閾値よりも小さい場合には、戻り値「０」を呼び出し元に返す。【００９７】
図２８は、図２１に示す負荷チェック処理Ｓ１８９として呼び出される残リソース量チェック処理のフローチャートである。
ステップＳ２６０においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「リソース使用量」（ＩＤ＝２５）とデータ「リソース使用量閾値」（ＩＤ＝２６）を比較する。プロセス使用率チェック処理は、プロセス使用率がプロセス使用率閾値よりも大きく残りリソース量が所定の許容値よりも小さい場合には、戻り値「−１」を呼び出し元に返し（ステップＳ２６１）、プロセス使用率がプロセス使用率閾値よりも小さい場合には、戻り値「０」を呼び出し元に返す（ステップＳ２６２）。【００９８】
負荷チェック処理Ｓ１８９は、これらの図２５〜図２８に示す処理を組み合わせて行ってもよい。このときＣＰＵ使用率チェック処理、メモリ使用率チェック処理、プロセス使用率チェック処理、残リソース量チェック処理の順序で行ってよい。【００９９】
図２１に戻りステップＳ１９０において、負荷チェック処理の戻り値が「−１」であるときは、サーバ１１〜１３は処理をステップＳ１９４に移し、当該装置の負荷分散情報中のデータ「装置状態」を「無効」に設定する。また、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」のうち当該装置に関するデータの値を「無効」に設定する。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にする。
ステップＳ１９０において負荷チェック処理の戻り値が「０」であるときは、サーバ１１〜１３は処理をステップＳ１９１に移す。ステップＳ１９１では、当該装置に適用される負荷分散方式を、ラウンドロビンやLeast Connectionから重み付け法へと変更すべきか否かが判定される。【０１００】
ステップＳ１９１では、図２４を参照して説明した処理分散方式の変更要否の判定処理と同様の処理を行う。
ステップＳ２２０においてサーバ１１〜１３は、記憶部１０２に記憶されている当該装置に関する負荷分散情報中のデータ「重み付け法への切替に使用するカウント数」（ＩＤ＝２８）（以下、ステップＳ１９１の説明において単に「カウント数」と記す）を１だけ増加させる。
ステップＳ２２１においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「重み付け法への切替に使用するカウント数の閾値」（ＩＤ＝２９）（以下、ステップＳ１９１の説明において単に「閾値」と記す）を参照し、カウント数と閾値を比較する。
ステップＳ２２１での比較においてカウント数が閾値を超えるとき、呼び出し元への戻り値が「要」にセットされ（ステップＳ２２３）、そうでない場合には戻り値は「不要」にセットされる（ステップＳ２２４）。【０１０１】
ステップＳ２２５においてサーバ１１〜１３は、当該装置に関する負荷分散情報中のデータ「重み付け法への切替に使用するカウント保有時間」（ＩＤ＝２７）（以下、ステップＳ１９１の説明において単に「保有時間」と記す）を参照し、カウントを開始してからこの保有時間が経過したか否かを判定する。
ステップＳ２２５の判定において保有時間が経過している場合には、ステップＳ２２６においてサーバ１１〜１３は「カウント数」の値を０に戻す。【０１０２】
図２１のステップＳ１９２において、サーバ１１〜１３は、ステップＳ１９１の処理からの戻り値が「不要」であるときは処理をステップＳ１９５に移す。
一方で戻り値が「要」であるときは、ステップＳ１９３においてサーバ１１〜１３は、当該装置に処理要求を分配する１階層上の負荷分配装置の負荷分散方式を、重み付け法に変更する。このときサーバ１１〜１３は、記憶部２０２に記憶された負荷分散情報のうち、当該装置に対して処理要求を分配する１階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替」の値を「重み付け法」に変更する。また、この１階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」の値を「ＯＦＦ」から「ＯＮ」に変更する。
そしてステップＳ１９５においてサーバ１１〜１３は、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして処理を終了する。【０１０３】
図２９は、図１９に示す負荷分散情報補正処理のステップＳ１７０により呼び出されるサブルーチンである分散先指定時処理のフローチャートである。
分散先指定時処理が呼び出される場合、当該装置に対してその上流の装置が行う負荷分散方式がHash法等であるため、処理要求の分配先がそれぞれの処理要求に応じて指定されている。したがって各サーバの負荷状態のチェックのみを行い負荷分散方式の変更は行わない。
ステップＳ２７０では、サーバ１１〜１３は当該装置に関する負荷分散情報中のデータ「負荷分散方式（既存）」（ＩＤ＝８）を参照し、Hash法等による処理要求の分配先が冗長な構成を有しているか否かを判定する。分配先が冗長な構成を有していない場合には、ステップＳ２７６においてサーバ１１〜１３は、当該装置に接続された１階層上の装置に関する負荷分散情報中の「１階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして、処理を終了する。
分配先が冗長な構成を有している場合には、ステップＳ２７１においてサーバ１１〜１３は、図２２を参照して説明した処理数チェック処理を行う。【０１０４】
ステップＳ２７２において処理数チェック処理の戻り値が「１」であるときは、サーバ１１〜１３はステップＳ２７６を実行する。ステップＳ２７２において処理数チェック処理の戻り値が「０」であるときは、サーバ１１〜１３は処理をステップＳ２７３に移す。ステップＳ２７３では、図２３を参照して説明したコネクション数チェック処理を行う。【０１０５】
ステップＳ２７４において処理数チェック処理の戻り値が「０」であるときは、サーバ１１〜１３はステップＳ２７６を実行する。Ｓ２７４において、コネクション数チェック処理の戻り値が「−１」であるときは、サーバ１１〜１３は処理をステップＳ２７５に移し、当該装置の負荷分散情報中のデータ「装置状態」の値を「無効」に設定する。また、当該装置に接続された１階層上の装置に関する負荷分散情報中のデータ「１階層下のルート状態」のうち当該装置に関するデータの値を「無効」に設定する。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にして処理を終了する。
なお、ステップＳ２７０において、Hash法等による処理要求の分配先が冗長な構成を有しているか否かに関わらず処理をステップＳ２７６を実行するように負荷分散制御プログラム１０４を作成してもよい。【０１０６】
図１２の負荷分散情報補正処理（ステップＳ１０５）が完了すると、処理は図１３に示すステップＳ１０６へ移る。ステップＳ１０６では最上位層のサーバ１１〜１３は、負荷分散システム１内の最下位層の装置以外の下位層装置に、それぞれの記憶部２０２及び３０２に記憶される負荷分散情報の補正を要求する。このとき、サーバ１１〜１３は、全ての下位層装置に負荷分散情報補正要求を送る必要はなく、ステップＳ１０４及びステップＳ１０５によって最上位層のサーバ１１〜１３側で負荷分散情報が補正されるなどによって、負荷分散情報補正の補正が必要な装置にのみ送ってもよい。
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ１１〜１３の記憶部１０２に記憶され、かつステップＳ１０４及びステップＳ１０５によって変更された、下位層装置に関する負荷分散情報を含んだ負荷分散情報補正要求を、それぞれの装置へ送信する処理をサーバ１１〜１３に行わせる。【０１０７】
サーバ１１〜１３から下位層装置に送信される負荷分散情報補正要求のデータ構成例を図３０に示す。「要求種別」には、送信されたデータが負荷分散情報補正要求であることを示す種別データが入力され、ＩＤが「１」〜「１０」、「１６」〜「１８」、「２０」、「２２」、「２４」、「２６」〜「４０」であるデータが有効データとなる。但し最下位層にあるサーバ５１〜５９から送信されるデータはＩＤが「３３」〜「４０」であるデータが無効データとなる。【０１０８】
サーバ１１〜１３から各下位層装置に送信される負荷分散情報補正要求は、送信先の下位層装置がその記憶部２０２又は２０３に保持している負荷分散情報と、同じ装置に関する負荷分散情報を含んでいる。
すなわち、最下位層のサーバ５１〜５９に送信される負荷分散情報補正要求は、送信先のサーバ自身に関する負荷分散情報のみを含んでいる。中間層のサーバ３１〜３９並びに負荷分散装置２１及び４１〜４３へ送信される負荷分散情報補正要求は、送信先の装置自身に関する負荷分散情報に加えて、送信先の装置に接続されかつ当該装置よりも１つ下の層にある装置の負荷分散情報も含んでいる。【０１０９】
サーバ３１〜３９及び５１〜５９上で実行される制御プログラム２０４は、これらのサーバに、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部２０２に記憶されている負荷分散情報２０５の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。さらに制御プログラム２０４は、この負荷分散情報に従って、より上位の装置から受信した処理要求を１階層下の装置へ送信する処理をサーバ３１〜３９に行わせる。
このようにサーバ３１〜３９及び５１〜５９が、記憶部２０２に記憶されている負荷分散情報２０５の値を、最上位層のサーバ１１〜１３から送信された負荷分散情報が持つ値へ更新することにより、これらサーバ３１〜３９及び５１〜５９が保持する負荷分散情報が最上位層のサーバ１１〜１３が保持する負荷分散情報に整合する。【０１１０】
そして、サーバ３１〜３９は、１階層下の装置へ処理要求を送信する際に、負荷分散情報中のデータ「１階層下のルート状態」を参照する。そして、これら１階層下の装置のうちの装置Ｘが、末端のサーバ５１〜５９まで処理要求を送信できる有効経路を有していないときは、サーバ３１〜３９は装置Ｘへの処理要求の送信を行わない。【０１１１】
負荷分散装置２１及び４１〜４３上で実行される負荷分散プログラム３０５は、これらの負荷分散装置に、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部３０２に記憶されている負荷分散情報３０６の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理と、この負荷分散情報に従って、より上位の装置から受信した処理要求を１階層下の装置へ分配する処理を行わせる。
このように負荷分散装置２１及び４１〜４３が、記憶部３０２に記憶されている負荷分散情報３０６の値を、最上位層のサーバ１１〜１３から送信された負荷分散情報が持つ値に更新することにより、これら負荷分散装置２１及び４１〜４３が保持する負荷分散情報が最上位層のサーバ１１〜１３が保持する負荷分散情報に整合する。【０１１２】
そして、負荷分散装置２１及び４１〜４３は、１階層下の装置へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、負荷分散装置２１及び４１〜４３は、これら１階層下の装置のうちの装置Ｘが、末端のサーバ５１〜５９まで処理要求を送信できる有効経路を有していないとき、装置Ｘに対して処理要求の分配を行わない。【０１１３】
このように、サーバ１１〜１３から下位装置へ送信される負荷分散情報補正要求は、ある下位層装置からその下流にある末端へと至る有効経路の有無に応じて、その下位層装置への処理要求の送信の可否を定める情報を含んでいる。
したがって負荷分散情報補正要求は、特許請求の範囲に記載される可否通知に対応する。また、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる負荷分散制御プログラム１０４及びサーバ１１〜１３の通信インタフェース１０３は、特許請求の範囲に記載される送信可否通知手段に対応する。
同様に負荷分散装置２１及び４１〜４３上で実行される負荷分散プログラム３０５は、特許請求の範囲に記載される負荷分配手段に対応し、負荷分散プログラム３０５及び負荷分散装置２１及び４１〜４３の通信インタフェース３０３は、特許請求の範囲に記載される可否通知受信手段に対応する。【０１１４】
また、負荷分散装置２１及び４１〜４３は、１階層下の装置へ処理要求を分配する際に、負荷分散情報中のデータ「負荷分散方式切替フラグ」（ＩＤ＝９）を参照する。ある負荷分散装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」の値が「ＯＮ」であるとき、すなわちこの負荷分散装置の負荷分散方式が切り替えられるべきであると、サーバ１１〜１３から通知されたとき、この負荷分散装置は、その負荷分散方式を負荷分散情報中のデータ「負荷分散方式切替」（ＩＤ＝１０）が示す方式に変更する。【０１１５】
このように、サーバ１１〜１３から下位装置へ送信される負荷分散情報補正要求は、サーバ１１〜１３によって変更された負荷分散方式を負荷分散装置へ知らせる情報を含んでいる。したがって負荷分散情報補正要求は、特許請求の範囲に記載される負荷分散方式変更通知に対応する。また、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる負荷分散制御プログラム１０４及びサーバ１１〜１３の通信インタフェース１０３は、特許請求の範囲に記載される負荷分散方式通知手段に対応する。
同様に負荷分散プログラム３０５及び負荷分散装置２１及び４１〜４３の通信インタフェース３０３は、特許請求の範囲に記載される分散方式変更通知受信手段に対応する。【０１１６】
下位層装置は、負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、サーバ１１〜１３へ負荷分散情報補正完了通知を送信する。負荷分散情報補正完了通知の内容は、その「要求種別」のデータが送信されたデータが負荷分散情報補正完了通知であることを示す種別データであることを除いて、負荷分散情報補正の内容と同じである。
負荷分散システム１は、立ち上げ終了後、ステップＳ１０２〜ステップＳ１０６を定期的に繰り返す。【０１１７】
以下、図４に示した負荷分散システム１における障害発生時と障害からの復旧時の動作を説明する。図３１は、図４に示した負荷分散システム１に障害が生じた状態を示す図であり、第４層の負荷分散装置４１に障害が生じた後に第３層のサーバ３９にも障害が生じた状態を示している。図３２及び図３３は、図４に示した負荷分散システム１における障害発生時のシーケンスを示す図である。【０１１８】
負荷分散装置４１に障害が生じた場合には負荷分散装置４１からの応答信号が途絶えるので、ステップＳ２８０において、負荷分散装置４１へ処理要求を送信する１階層上のサーバ３１〜３３は、負荷分散装置４１に障害が生じたことを検出する。サーバ３１〜３３上で動作する制御プログラム２０４は、記憶部２０２に記憶された負荷分散装置４１に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ３１〜３３自身に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、負荷分散装置４１に関するデータの値を「無効」にする処理と、をサーバ３１〜３３に行わせる。【０１１９】
その後制御プログラム２０４は、ステップＳ２８１において、負荷分散装置４１に障害が生じたことを最上位層のサーバ１１〜１３へ通知する処理をサーバ３１〜３３に行わせ、ステップＳ２８２において、サーバ３１〜３３自身及び負荷分散装置４１に関する負荷分散情報を最上位層のサーバ１１〜１３へ送信する処理をサーバ３１〜３３に行わせる。
図３４に障害通知のデータ構成例を示す。「要求種別」には、このデータが障害通知であることを示す種別データが設定され、ＩＤ＝１〜４０を有するデータが全て有効データとなる。但し最下位層にあるサーバ５１〜５９から送信されるデータはＩＤ＝３３〜４０を有するデータが無効データとなる。
また、負荷分散情報通知のデータ構成は、図１６に示す負荷分散情報の返送データの構成と同様であり、その「要求種別」データに本データが負荷分散情報通知であることを示す種別データが設定されている。【０１２０】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ３１〜３３から負荷分散情報通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。
そして負荷分散制御プログラム１０４は、ステップＳ２８３において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、障害が生じた負荷分散装置４１に接続されかつその下流に配置されたサーバ５１〜サーバ５３に関する負荷分散情報中のデータ「上位装置からのルート状態」の値が「無効」に変更される。【０１２１】
また、負荷分散制御プログラム１０４は、ステップＳ２８４において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、負荷分散装置４１へ処理要求を送信するサーバ３１〜３３に関する負荷分散情報中のデータ「１階層下のルート状態」の値が「無効」に変更される。またサーバ３１〜３３は負荷分散装置４１以外に下層への経路を持たないので、これらサーバ３１〜３３の１階層上の負荷分散装置２１に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、サーバ３１〜３３へのルート状態を示す値が「無効」に変更され、サーバ３１〜３３に関する負荷分散情報中のデータ「上位装置からのルート状態」の値も「無効」に変更される。【０１２２】
負荷分散制御プログラム１０４は、ステップＳ２８５において、サーバ３１〜３３へ負荷分散情報通知への応答を送信する処理をサーバ１１〜１３に行わせる。そしてステップＳ２８６において負荷分散制御プログラム１０４は、ステップＳ２８２〜ステップＳ２８４の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」である負荷分散装置２１へ、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。【０１２３】
負荷分散装置２１上で実行される負荷分散プログラム３０５は、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部３０２に記憶されている負荷分散情報３０６の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を、負荷分散装置２１に行わせる（ステップＳ２８７）。
またこれ以後、負荷分散プログラム３０５は、更新された負荷分散情報に従って、より上位の装置から受信した処理要求を１階層下の装置へ分配する処理を、負荷分散装置２１に行わせる。
負荷分散装置２１は、１階層下のサーバ３１〜３９へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、負荷分散装置２１は、これら１階層下のサーバ３１〜３９のうち末端のサーバ５１〜５９へ処理要求を送信できる有効経路を有していないサーバ３１〜３３に対しては、処理要求の送信を行わない。
負荷分散装置４１は負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、ステップＳ２８８においてサーバ１１〜１３へ負荷分散情報補正完了通知を送信する。【０１２４】
図３３において、サーバ３９に障害が生じた場合にはサーバ３９からの応答信号が途絶えるので、ステップＳ２９０において、サーバ３９へ処理要求を分配する１階層上の負荷分散装置２１は、サーバ３９に障害が生じたことを検出する。負荷分散装置２１上で動作する負荷分散プログラム３０５は、記憶部３０２に記憶されたサーバ３９に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、負荷分散装置２１自身に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、サーバ３９に関するデータの値を「無効」にする処理と、を負荷分散装置２１に行わせる。【０１２５】
その後負荷分散プログラム３０５は、ステップＳ２９１において、サーバ３９に障害が生じたことを最上位層のサーバ１１〜１３へ通知する処理を負荷分散装置２１に行わせ、ステップＳ２９２において、負荷分散装置２１自身及びサーバ３９に関する負荷分散情報を最上位層のサーバ１１〜１３へ送信する負荷分散装置２１に行わせる。【０１２６】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、負荷分散装置２１負荷分散情報通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。
そして負荷分散制御プログラム１０４は、ステップＳ２９３において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。【０１２７】
また、負荷分散制御プログラム１０４は、ステップＳ２９４において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、サーバ３９へ処理要求を送信する負荷分散装置２１に関する負荷分散情報中のデータ「１階層下のルート状態」のうちサーバ３９に関する値が「無効」に変更される。ここで負荷分散装置２１はサーバ３９以外にも下層への経路を持つので、これら負荷分散装置２１の１階層上のサーバ１１〜１３に関する負荷分散情報中のデータ「１階層下のルート状態」や、負荷分散装置２１に関する負荷分散情報中のデータは変更されない。
負荷分散制御プログラム１０４は、ステップＳ２９５において、サーバ３１〜３３へ負荷分散情報通知への応答を送信する処理をサーバ１１〜１３に送信する。
その後、負荷分散装置２１は、１階層下のサーバ３１〜３９へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。サーバ３９に関するデータ「階層下のルート状態」の値は「無効」であるので、負荷分散装置２１は、サーバ３９に対しては処理要求の送信を行わない。【０１２８】
図３５及び図３６は、図４に示した負荷分散システム１における障害からの復旧時のシーケンスを示す図である。
図３５において、負荷分散装置４１が障害から復旧したとき、ステップＳ３００において、負荷分散装置４１上で実行される負荷分散プログラム３０５は、記憶部３０２に記憶された負荷分散装置４１に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部３０２に記憶されたサーバ５１〜サーバ５３に関する負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」に設定する処理とを、負荷分散装置４１に実行させる。【０１２９】
その後、負荷分散プログラム３０５は、ステップＳ３０１において、負荷分散装置４１が復旧したことを知らせる復旧通知を最上位層のサーバ１１〜１３へ送信する処理を負荷分散装置４１に実行させる。復旧通知は、負荷分散装置４１がステップＳ３００にて変更した、負荷分散装置４１及びサーバ５１〜５３に関する負荷分散情報を含んでいる。
図３７に復旧通知のデータ構成例を示す。「要求種別」には、このデータが復旧通知であることを示す種別データが設定され、ＩＤ＝１〜４０を有するデータが全て有効データとなる。但し最下位層にあるサーバ５１〜５９から送信されるデータはＩＤ＝３３〜４０を有するデータが無効データとなる。【０１３０】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、負荷分散装置４１から復旧通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。そして負荷分散制御プログラム１０４は、ステップＳ３０２において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。その結果、負荷分散装置４１の復旧による負荷分散情報の変化により生じる、記憶部１０２内に記憶された負荷分散情報の矛盾が解消される。
その後負荷分散制御プログラム１０４は、ステップＳ３０３において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、負荷分散装置４１へ処理要求を送信するサーバ３１〜３３に関する負荷分散情報中のデータ「１階層下のルート状態」の値が「有効」に変更される。またサーバ３１〜３３の１階層上の負荷分散装置２１に関する負荷分散情報中のデータ「１階層下のルート状態」のうちサーバ３１〜３３に関するデータの値が「有効」に変更され、サーバ３１〜３３に関する負荷分散情報中のデータ「上位装置からのルート状態」の値も「有効」に変更される。【０１３１】
ステップ３０４において負荷分散制御プログラム１０４は、ステップＳ３０１〜Ｓ３０３の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」であるサーバ３１〜３３へ、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
サーバ３１〜３３上で実行される制御プログラム２０４は、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部２０２に記憶されている負荷分散情報２０５の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、サーバ３１〜３３に行わせる（ステップＳ３０５）。またこれ以後、制御プログラム２０４は、更新された負荷分散情報に従って、サーバ１１〜サーバ１３から受信した処理要求をサーバ５１〜５３へ分配する処理を、サーバ３１〜３３に行わせる。
その後サーバ３１〜３３は、１階層下の負荷分散装置４１へ処理要求を送信する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。このデータの値はサーバ１１〜１３により「有効」に変更されているので、サーバ３１〜３３はサーバ５１〜５３への処理要求の分配を再開する。
サーバ３１〜３３は、ステップＳ３５６においてサーバ１１〜１３へ負荷分散情報補正完了通知を送信する。【０１３２】
ステップ３０７において負荷分散制御プログラム１０４は、ステップＳ３０２及びステップＳ３０３にて負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」である負荷分散装置２１へ、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
負荷分散装置２１上で実行される負荷分散プログラム３０５は、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部３０２に記憶されている負荷分散情報３０６の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、負荷分散装置２１に行わせる（ステップＳ３０８）。またこれ以後、負荷分散プログラム３０５は、更新された負荷分散情報に従って、より上位の装置から受信した処理要求を１階層下の装置へ送信する処理を、負荷分散装置２１に行わせる。
負荷分散装置２１は、１階層下のサーバ３１〜３９へ処理要求を送信する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そのうちサーバ３１〜３３に関するデータの値は「有効」に変更されているので、負荷分散装置２１はサーバ３１〜３３への処理要求の送信を再開する。
その後負荷分散装置２１は、ステップＳ３０９においてサーバ１１〜１３へ負荷分散情報補正完了通知を送信する。【０１３３】
図３６において、サーバ３９が障害から復旧したとき、ステップＳ３１０において、サーバ３９上で実行される制御プログラム２０４は、記憶部２０２に記憶されたサーバ３９に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部２０２に記憶された負荷分散装置４１に関する負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」に設定する処理とを、サーバ３９に実行させる。【０１３４】
その後制御プログラム２０４は、ステップＳ３１１において、サーバ３９が復旧したことを知らせる復旧通知を最上位層のサーバ１１〜１３へ送信する処理をサーバ３９に実行させる。復旧通知は、サーバ３９がステップＳ３１０にて変更したサーバ３９及び負荷分散装置４１に関する負荷分散情報を含んでいる。
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ３９から復旧通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。そして負荷分散制御プログラム１０４は、ステップＳ３１２において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。その結果、サーバ３９の復旧による負荷分散情報の変化により生じる、記憶部１０２内に記憶された負荷分散情報の矛盾が解消される。
その後、負荷分散制御プログラム１０４は、ステップＳ３１３において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、サーバ３９へ処理要求を分配する負荷分散装置２１に関する負荷分散情報中のデータ「１階層下のルート状態」のうちサーバ３９に関するデータの値が「有効」に変更される。【０１３５】
ステップ３１４において負荷分散制御プログラム１０４は、ステップＳ３１１〜Ｓ３１３の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」である負荷分散装置２１へ、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
負荷分散装置２１上で実行される負荷分散プログラム３０５は、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部３０２に記憶されている負荷分散情報３０６の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、負荷分散装置２１に行わせる（ステップＳ３１５）。またこれ以降、負荷分散プログラム３０５は、更新された負荷分散情報に従って、より上位の装置から受信した処理要求を１階層下の装置へ分配する処理を、負荷分散装置２１に行わせる。
負荷分散装置２１は、１階層下のサーバ３１〜３９へ処理要求を送信する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そのうちサーバ３９に関するデータの値はサーバ１１〜１３により「有効」に変更されているので、負荷分散装置２１はサーバ３９への処理要求の送信を再開する。
そしてステップＳ３１６において、負荷分散装置２１は、サーバ１１〜１３へ負荷分散情報補正完了通知を送信する。【０１３６】
図３８は、本発明の第２実施例による階層型負荷分散システム１の概略構成図である。本構成例では、サーバ上で動作する負荷分散アプリケーションによって負荷分散処理を行う。
最上位層（第１層）にあるサーバ１１〜１３はクライアントＣ１及びＣ２が要求した処理要求を受け付ける。サーバ１１〜１３は、その上で実行される負荷分散アプリケーションプログラムにより、受信した処理要求を１つ下の層（第２層）に配置されたサーバ３１〜３９へと分配して送信する。負荷分散アプリケーションプログラムによる負荷分散処理は、各種の負荷分散方式のうち状況に応じた方式に従って行われる。【０１３７】
第２層に配置されたサーバ３１〜３３は、その上で実行される負荷分散アプリケーションプログラムにより、受信した処理要求を１つ下の層（第３層）に配置されたサーバ５１〜５３へと分配して送信する。同様にサーバ３４〜３６は受信した処理要求をサーバ５４〜５６へと分配して送信し、サーバ３７〜３９は受信した処理要求をサーバ５７〜５９へと分配して送信する。末端のサーバ５１〜５９はこれらの処理要求を処理する。【０１３８】
図３９は、図３８に示す負荷分散システムにおいて最上位層に配置されるサーバ１１の概略構成図である。サーバ１２及び１３の構成もサーバ１１と同様である。
本構成によるサーバ１１は、図５に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。記憶部１０２には、通信インタフェース１０３を介して受信した処理要求を、サーバ１１に接続されている下位層のサーバ３１〜３９へと分配する負荷分散処理をＣＰＵ１０１に実行させるアプリケーションプログラムである負荷分散プログラム１０６を有している。
サーバ１１は、クライアントＣ１及びＣ２が発した処理要求を通信インタフェース１０３を介して受信し、受信した処理要求を下位層のサーバ３１〜３９へと分配し、分配された処理要求を通信インタフェース１０３を介して各々サーバ３１〜３９へと送信する。
また、サーバ１１〜１３の記憶部１０２に記憶される負荷分散情報１０５には、負荷分散システム１１に含まれる全てのサーバ１１〜１３、３１〜３９及び５１〜５９に関する負荷分散情報が含まれる。【０１３９】
図４０は、図３８に示す負荷分散システムにおいて中間層又は下位層に配置されるサーバ３１の概略構成図である。サーバ３２〜３９の構成もサーバ３１と同様である。
本構成によるサーバ３１は、図６に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。記憶部２０２には、通信インタフェース２０３を介して受信した処理要求を、サーバ３１に接続されている下位層のサーバ５１〜５３へと分配する負荷分散処理をＣＰＵ２０１に実行させるアプリケーションプログラムである負荷分散プログラム２０６を有している。
サーバ３１は、サーバ１１〜１３から送信された処理要求を通信インタフェース２０３を介して受信し、受信した処理要求を下位層のサーバ５１〜５９へと分配し、分配された処理要求を通信インタフェース２０３を介して各々サーバ５１〜５９へと送信する。【０１４０】
また、中間層に配置されたサーバ３１〜３９の記憶部２０２に記憶される負荷分散情報２０５には、自分自身である当該装置に関する負荷分散情報と、当該装置に接続されかつ当該装置よりも１つ下の層にある装置に関する負荷分散情報とが含まれる。例えばサーバ３１〜３９の記憶部２０２記憶される負荷分散情報２０５には、サーバ３１及びサーバ５１〜５３に関する負荷分散情報が含まれる。
また、最下位層のサーバ５１〜５９は、図６を参照して説明した構成と同様である。
以下、第２実施例による負荷分散システム１の説明においてこれらサーバ３１〜３９及び５１〜５９をまとめて「下位層装置」と記すことがある。【０１４１】
図４１は、図３８に示した負荷分散システムにおける立ち上げシーケンスを示す図である。下位層装置は、最上位層のサーバ１１〜１３に対してＴＣＰ／ＩＰリンクの確立を要求することによって、最上位層のサーバ１１〜１３との間のＴＣＰ／ＩＰリンクを確立する（ステップＳ１０１）。
そしてステップＳ１０２において、最上位層のサーバ１１〜１３の各々は、図１４を参照して説明した最上位サーバの死活監視処理を行う。
最上位層のサーバ１１〜１３とその下位層にある全装置との間のＴＣＰ／ＩＰリンクの接続の可否が確定すると、ステップＳ１０３において負荷分散制御プログラム１０４は、図１１に示した立ち上げシーケンスと同様に、負荷分散システム１内の全ての装置に関する負荷分散情報を収集する処理を実行させる。【０１４２】
サーバ３１〜３９で動作する負荷分散プログラム２０６は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部２０２に記憶している自己に関する負荷分散情報２０５を最上位層のサーバ１１〜１３に返送する処理を、各々のサーバに実行させる。このとき負荷分散プログラム２０６は、それぞれのサーバに接続されかつ各サーバよりも１階層下にあるサーバ５１〜５９から負荷分散情報を収集する処理を、各サーバ３１〜３９に実行させる。サーバ３１〜３９は、収集した負荷分散情報をそれぞれの記憶部２０２に記憶する。
またサーバ５１〜５９上で動作する制御プログラム２０４は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部２０２に記憶している自己に関する負荷分散情報２０５を最上位層のサーバ１１〜１３に返送する処理を、各々のサーバに実行させる。
返送される負荷分散情報のデータ構成は図１６を参照して説明した構成と同様である。【０１４３】
サーバ１１〜１３の負荷分散制御プログラム１０４は、他の最上位層のサーバ及び下位層装置から送信された負荷分散情報を受信する処理と、受信した負荷分散情報を各々の記憶部１０２に記憶する処理とを、サーバ１１〜１３に実行させる。
ステップＳ１０４では、最上位層のサーバ１１〜１３の各々は、ステップＳ１０３で収集した負荷分散情報に含まれる矛盾を解消する。この処理は図１７及び図１８を参照して説明した負荷分散情報矛盾解消処理を実行することにより行われる。
ステップＳ１０５では、各最上位層のサーバ１１〜１３は図１９〜図２９を参照して説明した負荷分散情報補正処理を実行し、サーバ１１〜１３の記憶部１０２に記憶された負荷分散情報を補正する。【０１４４】
そしてサーバ１１〜１３上で実行される負荷分散プログラム１０６は、補正された負荷分散情報に従って、クライアントＣ１及びＣ２から受信した処理要求を１階層下の装置へ送信する処理をサーバ１１〜１３に行わせる。
このとき、サーバ１１〜１３は、１階層下のサーバ３１〜３９へ処理要求を送信する際に、負荷分散情報中のデータ「１階層下のルート状態」を参照する。そして、これら１階層下のサーバ３１〜３９のうちサーバＸが、末端のサーバ５１〜５９まで処理要求を送信できる有効経路を有していないときは、サーバ１１〜１３はこのサーバＸへの処理要求の分配を行わない。【０１４５】
ステップＳ１０６では最上位層のサーバ１１〜１３は、負荷分散システム１内の最下位層の装置以外の下位層装置であって負荷分散情報が補正された下位層装置に対して、図１３に示したシーケンスと同様にそれぞれの記憶部２０２に記憶される負荷分散情報の補正を要求する。
サーバ３１〜３９上で実行される負荷分散プログラム２０６は、これらのサーバに、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部２０２に記憶されている負荷分散情報２０５の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。
またこれ以後、負荷分散プログラム２０６は、更新された負荷分散情報に従って、サーバ１１〜１３から受信した処理要求を下位層のサーバへ分配する処理を、サーバ３１〜３９に行わせる。
このときサーバ３１〜３９は、負荷分散情報中のデータ「１階層下のルート状態」を参照する。そして、これら１階層下のサーバ３１〜３９のうちサーバＸが、末端のサーバ５１〜５９まで処理要求を送信できる有効経路を有していないときは、サーバ３１〜３９はサーバＸへの処理要求の分配を行わない。【０１４６】
サーバ１１〜１３及び３１〜３９は、１階層下の装置へ処理要求を分配する際に、負荷分散情報中のデータ「負荷分散方式切替フラグ」を参照する。サーバＸに関する負荷分散情報中のデータ「負荷分散方式切替フラグ」の値が「ＯＮ」であるとき、このサーバＸは、その負荷分散方式を、負荷分散情報中のデータ「負荷分散方式切替」が示す方式に変更する。【０１４７】
また、サーバ５１〜５９上で実行される制御プログラム２０４は、これらのサーバに、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部２０２に記憶されている負荷分散情報２０５の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。
下位層装置は負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、図１３に示したシーケンスと同様にサーバ１１〜１３へ負荷分散情報補正完了通知を送信する。そして負荷分散システム１は、立ち上げ終了後、ステップＳ１０２〜ステップＳ１０６を定期的に繰り返す。【０１４８】
以下、図３８に示した負荷分散システム１における障害発生時と障害からの復旧時の動作を説明する。図４２は、図３８に示した負荷分散システム１に障害が生じた状態を示す図であり、第３層のサーバ５１〜５３に障害が生じた後に第２層のサーバ３９にも障害が生じた状態を示している。図４３は、図３８に示した負荷分散システムにおける障害発生時のシーケンスを示す図である。【０１４９】
サーバ５１〜５３に障害が生じた場合にはこれらサーバからの応答信号が途絶えるので、ステップＳ３４０において、１階層上のサーバ３１〜３３は、サーバ５１〜５３に障害が生じたことを検出する。サーバ３１〜３３上で動作する負荷分散プログラム２０６は、記憶部２０２に記憶されたサーバ５１〜５３に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ３１〜３３自身に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、サーバ５１〜５３に関するデータの値を「無効」にする処理と、をサーバ３１〜３３に行わせる。【０１５０】
その後負荷分散プログラム２０６は、ステップＳ３４１において、サーバ５１〜５３に障害が生じたことを最上位層のサーバ１１〜１３へ知らせる障害通知を送信する処理をサーバ３１〜３３に行わせ、ステップＳ３４２において、サーバ３１〜３３自身及びサーバ５１〜５３に関する負荷分散情報を最上位層のサーバ１１〜１３へ送信する処理をサーバ３１〜３３に行わせる。ここで送信される障害通知及び負荷分散情報通知のデータ構成は、それぞれ図３４及び図１６を参照して説明したデータ構成と同様である。【０１５１】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ３１〜３３から負荷分散情報通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。
そして負荷分散制御プログラム１０４は、ステップＳ３４３において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。
また、負荷分散制御プログラム１０４は、ステップＳ３４５において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、サーバ１１〜１３に関する負荷分散情報中のデータ「１階層下のルート状態」のうちサーバ３１〜３３に関するデータの値が「無効」に変更される。【０１５２】
負荷分散制御プログラム１０４は、ステップＳ３４６において、サーバ３１〜３３へ負荷分散情報通知への応答を送信する処理をサーバ１１〜１３に行わせる。
その後サーバ１１〜１３は、負荷分散プログラム１０６によって１階層下のサーバ３１〜３９へ対する負荷分散処理を行う際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、サーバ１１〜１３は、これら１階層下のサーバ３１〜３９のうち末端のサーバ５１〜５９へ処理要求を送信できる有効経路を有していないサーバ３１〜３３に対しては、処理要求の送信を行わない。【０１５３】
次に、サーバ３９に障害が生じた場合にはサーバ３９からの応答信号が途絶えるので、１階層上のサーバ１１〜１３は、サーバ３９に障害が生じたことを検出する。サーバ１１〜１３上で動作する負荷分散プログラム１０６は、記憶部１０２に記憶されたサーバ３９に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ１１〜１３自身に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、サーバ３９に関するデータの値を「無効」にする処理と、をサーバ１１〜１３に行わせる。
そして、サーバ１１〜１３上で動作する負荷分散制御プログラム１０４は、ステップＳ３４７において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。また、負荷分散制御プログラム１０４は、ステップＳ３４８において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。【０１５４】
その後サーバ１１〜１３は、負荷分散プログラム１０６によって１階層下のサーバ３１〜３９へ対する負荷分散処理を行う際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、サーバ１１〜１３は、これら１階層下のサーバ３１〜３９のうち末端のサーバ５１〜５９へ処理要求を送信できる有効経路を有していないサーバ３９に対しては、処理要求の送信を行わない。【０１５５】
図４４は、図３８に示した負荷分散システム１における障害からの復旧時のシーケンスを示す図である。サーバ５１〜５３が障害から復旧したとき、ステップＳ３５１において、サーバ５１〜５３上で実行される制御プログラム２０４は、記憶部２０２に記憶されたサーバ５１〜５３自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理を、サーバ５１〜５３に実行させる。【０１５６】
その後制御プログラム２０４は、ステップＳ３５２において、サーバ５１〜５３が復旧したことを知らせる復旧通知を最上位層のサーバ１１〜１３へ送信する処理をサーバ５１〜５３に実行させる。復旧通知は、ステップＳ３５１にて変更されたサーバ５１〜５３に関する負荷分散情報を含んでいる。
ここで送信される復旧通知のデータ項目は、図３７を参照して説明した復旧通知と同じである。【０１５７】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ５１〜５３から復旧通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。
そして負荷分散制御プログラム１０４は、ステップＳ３５３において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。その結果、サーバ５１〜５３の復旧による負荷分散情報の変化により生じる、記憶部１０２内に記憶された負荷分散情報の矛盾が解消される。【０１５８】
負荷分散制御プログラム１０４は、ステップＳ３５４において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、サーバ３１〜３３に関する負荷分散情報中のデータ「１階層下のルート状態」のうちサーバ５１〜５３に関するデータの値が「有効」に変更される。またサーバ１１〜１３に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、サーバ３１〜３３に関するデータの値が「有効」に変更され、サーバ３１〜３３に関する負荷分散情報中のデータ「上位装置からのルート状態」の値も「有効」に変更される。【０１５９】
ステップＳ３５５において負荷分散制御プログラム１０４は、ステップＳ３５２〜Ｓ３５４の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」であるサーバ３１〜３３へ、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
サーバ３１〜３３上で実行される負荷分散プログラム２０６は、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部２０２に記憶されている負荷分散情報２０５の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、サーバ３１〜３３に行わせる（ステップＳ３５６）。【０１６０】
またこれ以後、負荷分散プログラム２０６は、更新された負荷分散情報に従って、サーバ１１〜１３から受信した処理要求を下位層のサーバへ分配する処理を、サーバ３１〜３３に行わせる。
その後サーバ３１〜３３は、サーバ５１〜５９へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。データ「階層下のルート状態」のうちサーバ５１〜５３に関するデータの値は「有効」に変更されているので、サーバ３１〜３３はサーバ５１〜５３への処理要求の送信を再開する。【０１６１】
またサーバ１１〜１３は、負荷分散プログラム１０６によってサーバ３１〜３９への負荷分散処理を行う際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。データ「階層下のルート状態」のうちサーバ３１〜３３に関するデータの値は「有効」に変更されているので、サーバ１１〜１３はサーバ３１〜３３への処理要求の送信を再開する。
ステップＳ３５７においてサーバ３１〜３３へ負荷分散情報補正完了通知を送信する。【０１６２】
その後、サーバ３９が障害から復旧したとき、ステップＳ３５８において、サーバ３９上で実行される負荷分散プログラム２０６は、記憶部２０２に記憶されたサーバ３９自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部２０２に記憶されたサーバ５１〜５３に関する負荷分散情報中のデータ「上位装置からのルート状態」を「有効」に設定する処理とを、サーバ３９に実行させる。【０１６３】
その後負荷分散プログラム２０６は、ステップＳ３５９において、サーバ３９が復旧したことを知らせる復旧通知を最上位層のサーバ１１〜１３へ送信する処理をサーバ３９に実行させる。復旧通知は、サーバ３９がステップＳ３５７にて変更した、サーバ３１〜３３及び５１〜５３に関する負荷分散情報を含んでいる。
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ３９から復旧通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。
そして負荷分散制御プログラム１０４は、ステップＳ３６０において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。その結果、サーバ３９の復旧による負荷分散情報の変化により生じる、記憶部１０２内に記憶された負荷分散情報の矛盾が解消される。
負荷分散制御プログラム１０４は、ステップＳ３６１において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、サーバ１１〜１３に関する負荷分散情報中のデータ「１階層下のルート状態」のうちサーバ３９に関するデータの値が「有効」に変更される。
その後、サーバ１１〜１３は、サーバ３１〜３９への負荷分散処理を行う際に負荷分散情報中のデータ「階層下のルート状態」を参照する。データ「階層下のルート状態」のうちサーバ３９に関するデータの値は「有効」に変更されているので、サーバ１１〜１３はサーバ３９への処理要求の送信を再開する。【０１６４】
図３８に示す構成において、サーバ１１〜１３及び３１〜３９による負荷分散処理を、これらサーバ上で動作する負荷分散ミドルウエアにて実行してもよい。
図４５は、負荷分散ミドルウエアにより負荷分散処理を行う最上位層に配置されるサーバ１１の概略構成図である。サーバ１２及び１３の構成もサーバ１１と同様である。本構成によるサーバ１１は、図５に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。以下、特に説明がない限り同じ参照符号が付された構成要素同士は同じ機能を有する。
記憶部１０２には、通信インタフェース１０３を介して受信した処理要求を、サーバ１１に接続されている下位層のサーバ３１〜３９へと分配する負荷分散処理をＣＰＵ１０１に実行させる負荷分散ミドルウエア１０７を有している。
負荷分散ミドルウエア１０７は、自身の動作のために使用する負荷分散情報１０８を、記憶部１０２内に記憶する。この負荷分散情報１０８には、サーバ１１自身に関する負荷分散情報と、サーバ１１が処理要求を分配する階層のサーバ３１〜３９に関する負荷分散情報を含む。【０１６５】
図４６は、負荷分散ミドルウエアにより負荷分散処理を行う中間層又は下位層に配置されるサーバ３１の概略構成図である。サーバ３２〜３９の構成もサーバ３１と同様である。本構成によるサーバ３１は、図６に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。以下、特に説明がない限り同じ参照符号が付された構成要素同士は同じ機能を有する。
記憶部２０２には、通信インタフェース２０３を介して処理要求を受信した制御プログラム２０４からこの処理要求を受信して、サーバ３１に接続されている下位層のサーバ５１〜５３へと分配する負荷分散処理をＣＰＵ２０１に実行させる負荷分散ミドルウエア２０７を有している。
負荷分散ミドルウエア２０７は、自身の動作のために使用する負荷分散情報２０８を、記憶部２０２内に記憶する。この負荷分散情報２０８には、サーバ３１自身に関する負荷分散情報と、サーバ３１が処理要求を分配する階層のサーバ５１〜５３に関する負荷分散情報を含む。【０１６６】
図４７は、負荷分散ミドルウエアにより負荷分散処理を行う場合の立ち上げシーケンスを示す図である。
下位層装置は、最上位層のサーバ１１〜１３に対してＴＣＰ／ＩＰリンクの確立を要求することによって、最上位層のサーバ１１〜１３との間のＴＣＰ／ＩＰリンクを確立する（ステップＳ１０１）。
そしてステップＳ１０２において、最上位層のサーバ１１〜１３の各々は、図１４を参照して説明した最上位サーバの死活監視処理を行う。
最上位層のサーバ１１〜１３とその下位層にある全装置との間のＴＣＰ／ＩＰリンクの接続の可否が確定すると、ステップＳ１０３において負荷分散制御プログラム１０４は、図１２に示した立ち上げシーケンスと同様に、サーバ３１〜３９及びに５１〜５９に関する負荷分散情報を収集する処理を実行させる。【０１６７】
サーバ３１〜３９及び５１〜５９上で動作する制御プログラム２０４は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部２０２に記憶している自己に関する負荷分散情報２０５を最上位層のサーバ１１〜１３に返送する処理を、各々のサーバに実行させる。このときサーバ３１〜３９上で動作する制御プログラム２０４は、それぞれのサーバに接続されかつ各サーバよりも１階層下にあるサーバ５１〜５９から負荷分散情報を収集する処理を、各サーバ３１〜３９に実行させる。サーバ３１〜３９は、収集した負荷分散情報をそれぞれの記憶部２０２に記憶する。
返送される負荷分散情報のデータ構成は図１６を参照して説明した構成と同様である。
サーバ１１〜１３の負荷分散制御プログラム１０４は、他の最上位層のサーバ及び下位層装置から送信された負荷分散情報を受信する処理と、受信した負荷分散情報を各々の記憶部１０２に記憶する処理とを、サーバ１１〜１３に実行させる。【０１６８】
ステップＳ１０４では、最上位層のサーバ１１〜１３の各々は、図１７及び図１８を参照して説明した負荷分散情報矛盾解消処理を実行する。またステップＳ１０５では、各最上位層のサーバ１１〜１３は図１９〜図２９を参照して説明した負荷分散情報補正処理を実行する。
そしてサーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ１１〜１３に関する負荷分散情報と、１階層下のサーバ３１〜３９に関する負荷分散情報を、サーバ１１〜１３で実行される負荷分散ミドルウエア１０７へ通知する処理を、サーバ１１〜１３に実行させる。負荷分散ミドルウエア１０７は、負荷分散ミドルウエア１０７用に用意された記憶部１０２内の記憶領域に、これら通知された負荷分散情報を記憶する処理をサーバ１１〜１３に行わせる。【０１６９】
ステップＳ１０６では最上位層のサーバ１１〜１３は、負荷分散システム１内の最下位層の装置以外の下位層装置であって負荷分散情報が補正された下位層装置に対して、図１３に示したシーケンスと同様にそれぞれの記憶部２０２に記憶される負荷分散情報の補正を要求する。
サーバ３１〜３９上で実行される制御プログラム２０４は、これらのサーバに、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部２０２に記憶されている負荷分散情報２０５の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。
また制御プログラム２０４は、それぞれのサーバ自身に関する負荷分散情報と、それぞれのサーバ自身に接続された１階層下のサーバに関する負荷分散情報を、サーバ３１〜３９で実行される負荷分散ミドルウエア２０７へ通知する処理を、サーバ３１〜３９に実行させる。負荷分散ミドルウエア２０７は、負荷分散ミドルウエア２０７用に用意された記憶部２０２内の記憶領域に、これら通知された負荷分散情報を記憶する処理をサーバ３１〜３９に行わせる。【０１７０】
以後、サーバ１１〜１３上で実行される負荷分散ミドルウエア１０７は、補正された負荷分散情報に従ってクライアントＣ１及びＣ２から受信した処理要求を１階層下の装置へ送信する処理と、をサーバ１１〜１３に行わせる。
またサーバ３１〜３９上で実行される負荷分散ミドルウエア２０７は、制御プログラム２０４から受信した処理要求を下位層のサーバへ分配する処理を、サーバ３１〜３９に行わせる。これら負荷分散ミドルウエア１０７及び２０７は、上述した負荷分散プログラム１０６及び２０６と同様の負荷分散処理を行う。【０１７１】
下位層装置は負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、図１３に示したシーケンスと同様にサーバ１１〜１３へ負荷分散情報補正完了通知を送信する。そして負荷分散システム１は、立ち上げ終了後、ステップＳ１０２〜ステップＳ１０６を定期的に繰り返す。【０１７２】
図４８及び図４９は、負荷分散ミドルウエアにより負荷分散処理を行う場合の障害発生時のシーケンスを示す図である。図４２による例と同様に、第３層のサーバ５１〜５３に障害が生じた後に第２層のサーバ３９にも障害が生じた場合を考える。
図４８において、サーバ５１〜５３に障害が生じた場合にはこれらサーバからの応答信号が途絶えるので、ステップＳ３７１において、１階層上のサーバ３１〜３３は、サーバ５１〜５３に障害が生じたことを検出する。サーバ３１〜３３上で動作する制御プログラム２０４は、記憶部２０２に記憶されたサーバ５１〜５３に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ３１〜３３自身に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、サーバ５１〜５３に関するデータの値を「無効」にする処理と、をサーバ３１〜３３に行わせる。【０１７３】
その後制御プログラム２０４は、ステップＳ３７２において、サーバ５１〜５３に障害が生じたことを最上位層のサーバ１１〜１３へ知らせる障害通知を送信する処理をサーバ３１〜３３に行わせ、ステップＳ３７３において、サーバ３１〜３３自身及びサーバ５１〜５３に関する負荷分散情報を最上位層のサーバ１１〜１３へ送信する処理をサーバ３１〜３３に行わせる。【０１７４】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ３１〜３３から負荷分散情報通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理と、をサーバ１１〜１３に行わせる。
そして負荷分散制御プログラム１０４は、ステップＳ３７４において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。
また、負荷分散制御プログラム１０４は、ステップＳ３７５において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、記憶部１０２に記憶する負荷分散情報のうち、サーバ１１〜１３に関する負荷分散情報中のデータ「１階層下のルート状態」のうちサーバ３１〜３３に関するデータの値が「無効」に変更される。
負荷分散制御プログラム１０４は、ステップＳ３７６において、サーバ３１〜３３へ負荷分散情報通知への応答を送信する処理をサーバ１１〜１３に行わせる。【０１７５】
一方でステップＳ３７７において、サーバ３１〜３３上で動作する制御プログラム２０４は、ステップＳ３７１で変更した負荷分散情報をサーバ３１〜３３上で動作する負荷分散ミドルウエア２０７へ通知する処理を、サーバ３１〜３３に実行させる。
負荷分散ミドルウエア２０７は、負荷分散ミドルウエア２０７用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理（ステップＳ３７８）と、制御プログラム２０４へ応答メッセージを送信する処理（ステップＳ３７９）とを、サーバ３１〜３３に実行させる。【０１７６】
またステップＳ３８０において、サーバ１１〜１３上で動作する負荷分散制御プログラム１０４は、ステップＳ３７３〜Ｓ３７５の処理によって変更された負荷分散情報を負荷分散ミドルウエア１０７へ通知する処理を、サーバ１１〜１３に実行させる。
負荷分散ミドルウエア１０７は、負荷分散ミドルウエア１０７用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理（ステップＳ３８１）と、負荷分散制御プログラム１０４へ応答メッセージを送信する処理（ステップＳ３８２）とを、サーバ１１〜１３に実行させる。【０１７７】
以後、サーバ１１〜１３上で実行される負荷分散ミドルウエア１０７は、補正された負荷分散情報に従ってクライアントＣ１及びＣ２から受信した処理要求を１階層下の装置へ送信する処理と、をサーバ１１〜１３に行わせる。
またサーバ３１〜３９上で実行される負荷分散ミドルウエア２０７は、制御プログラム２０４から受信した処理要求を下位層のサーバへ分配する処理を、サーバ３１〜３９に行わせる。【０１７８】
図４９において、サーバ３９に障害が生じた場合にはサーバ３９からの応答信号が途絶えるので、１階層上のサーバ１１〜１３は、サーバ３９に障害が生じたことを検出する。
このときサーバ１１〜１３上で動作する負荷分散制御プログラム１０４は、記憶部１０２に記憶されたサーバ３９に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ１１〜１３自身に関する負荷分散情報中のデータ「１階層下のルート状態」のうち、サーバ３９に関するデータの値を「無効」にする処理と、をサーバ１１〜１３に行わせる。
サーバ１１〜１３上で動作する負荷分散制御プログラム１０４は、ステップＳ３９０において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。また、負荷分散制御プログラム１０４は、ステップＳ３９１において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。【０１７９】
またステップＳ３９２において、負荷分散制御プログラム１０４は、サーバ３９の障害検出からステップＳ３９１までに行われた変更が反映された負荷分散情報を負荷分散ミドルウエア１０７へ通知する処理を、サーバ１１〜１３に実行させる。
負荷分散ミドルウエア１０７は、負荷分散ミドルウエア１０７用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理（ステップＳ３９３）と、負荷分散制御プログラム１０４へ応答メッセージを送信する処理（ステップＳ３９４）とを、サーバ１１〜１３に実行させる。
以後、サーバ１１〜１３上で実行される負荷分散ミドルウエア１０７は、補正された負荷分散情報に従ってクライアントＣ１及びＣ２から受信した処理要求を１階層下の装置へ送信する処理と、をサーバ１１〜１３に行わせる。【０１８０】
図５０及び図５１は、負荷分散ミドルウエアにより負荷分散処理を行う場合の障害からの復旧時のシーケンスを示す図である。
図５０において、サーバ５１〜５３が障害から復旧したとき、ステップＳ４００において、サーバ５１〜５３上で実行される制御プログラム２０４は、記憶部２０２に記憶されたサーバ５１〜５３自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理を、サーバ５１〜５３に実行させる。
その後制御プログラム２０４は、ステップＳ４０１において、サーバ５１〜５３が復旧したことを知らせる復旧通知を最上位層のサーバ１１〜１３へ送信する処理をサーバ５１〜５３に実行させる。【０１８１】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ５１〜５３から復旧通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。そして負荷分散制御プログラム１０４は、ステップＳ４０２において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。その結果、サーバ５１〜５３の復旧による負荷分散情報の変化により生じる、記憶部１０２内に記憶された負荷分散情報の矛盾が解消される。【０１８２】
負荷分散制御プログラム１０４は、ステップＳ４０３において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、サーバ３１〜３３に関する負荷分散情報中のデータ「１階層下のルート状態」及び「上位装置からのルート状態」、サーバ１１〜１３に関する負荷分散情報中のデータ「１階層下のルート状態」が変更される。【０１８３】
ステップＳ４０４において負荷分散制御プログラム１０４は、ステップＳ４０１〜Ｓ４０３の処理により負荷分散情報が補正されたサーバ３１〜３３へ、負荷分散情報補正要求を送信する処理をサーバ１１〜１３に行わせる。
サーバ３１〜３３上で実行される制御プログラム２０４は、サーバ１１〜１３からの負荷分散情報補正要求を受信する処理と、記憶部２０２に記憶されている負荷分散情報２０５の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理（ステップＳ４０５）と、負荷分散情報補正完了通知をサーバ１１〜１３へ送信する処理（ステップＳ４０６）とを、サーバ３１〜３３に行わせる。【０１８４】
ステップＳ４０７において、サーバ３１〜３３上で動作する制御プログラム２０４は、ステップＳ４０５で変更した負荷分散情報をサーバ３１〜３３上で動作する負荷分散ミドルウエア２０７へ通知する処理を、サーバ３１〜３３に実行させる。
負荷分散ミドルウエア２０７は、負荷分散ミドルウエア２０７用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理（ステップＳ４０８）と、制御プログラム２０４へ応答メッセージを送信する処理（ステップＳ４０９）とを、サーバ３１〜３３に実行させる。【０１８５】
またステップＳ４１０において、サーバ１１〜１３上で動作する負荷分散制御プログラム１０４は、ステップＳ４０１〜Ｓ４０３の処理により変更された負荷分散情報を負荷分散ミドルウエア１０７へ通知する処理を、サーバ１１〜１３に実行させる。
負荷分散ミドルウエア１０７は、負荷分散ミドルウエア１０７用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理（ステップＳ４１１）と、負荷分散制御プログラム１０４へ応答メッセージを送信する処理（ステップＳ４１２）とを、サーバ１１〜１３に実行させる。【０１８６】
図５１において、サーバ３９が障害から復旧したとき、ステップＳ４２０において、サーバ３９上で実行される制御プログラム２０４は、記憶部２０２に記憶されたサーバ３９自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部２０２に記憶されたサーバ５１〜サーバ５３に関する負荷分散情報中のデータ「上位装置からのルート状態」を「有効」に設定する処理とを、サーバ３９に実行させる。その後制御プログラム２０４は、ステップＳ４２１において、サーバ３９が復旧したことを知らせる復旧通知を最上位層のサーバ１１〜１３へ送信する処理をサーバ３９に実行させる。【０１８７】
サーバ１１〜１３上で実行される負荷分散制御プログラム１０４は、サーバ３９から復旧通知を受信する処理と、記憶部１０２に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ１１〜１３に行わせる。
そして負荷分散制御プログラム１０４は、ステップＳ４２２において、図１７に示す負荷分散情報矛盾解消処理をサーバ１１〜１３に行わせる。その結果、サーバ３９の復旧による負荷分散情報の変化により生じる、記憶部１０２内に記憶された負荷分散情報の矛盾が解消される。
負荷分散制御プログラム１０４は、ステップＳ４２３において、図１９に示す負荷分散情報補正処理をサーバ１１〜１３に行わせる。その結果、サーバ１１〜１３に関する負荷分散情報中のデータ「１階層下のルート状態」が変更される。【０１８８】
ステップＳ４２４において、負荷分散制御プログラム１０４は、ステップＳ４２１〜Ｓ４２３の処理により変更された負荷分散情報を負荷分散ミドルウエア１０７へ通知する処理を、サーバ１１〜１３に実行させる。
負荷分散ミドルウエア１０７は、負荷分散ミドルウエア１０７用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理（ステップＳ４２５）と、負荷分散制御プログラム１０４へ応答メッセージを送信する処理（ステップＳ４２６）とを、サーバ１１〜１３に実行させる。【０１８９】
以上、本発明を特にその好ましい実施の形態を参照して詳細に説明したが、本発明の容易な理解のために、本発明の具体的な形態を以下に付記する。【０１９０】
（付記１）
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムであって、
前記ノードのいずれかであるマスタノードは、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とする負荷分散システム。【０１９１】
（付記２）
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする付記１に記載の負荷分散システム。【０１９２】
（付記３）
前記マスタノードは、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する送信可否決定手段と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する送信可否通知手段と、
を備えることを特徴とする付記２に記載の負荷分散システム。【０１９３】
（付記４）
前記マスタノードは、
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する負荷分散方式変更手段と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する負荷分散方式通知手段と、
を更に備えることを特徴とする付記２又は３に記載の負荷分散システム。【０１９４】
（付記５）
前記マスタノードは、
前記負荷分散情報記憶手段に当該ノードについて記憶した前記負荷分散情報と、当該ノードが有している前記負荷分散情報と、の間の整合処理を行うデータ整合手段を、更に備えることを特徴とする付記２又は３に記載の負荷分散システム。【０１９５】
（付記６）
前記データ整合手段は、前記マスタノードが負荷分散処理を開始した時に及び／又は周期的に前記整合処理を行うことを特徴とする付記５に記載の負荷分散システム。【０１９６】
（付記７）
前記マスタノードは、
前記ノードのいずれかが障害状態となったことをその１階層上の他のノードが通知する障害通知を受信する障害通知受信手段を有し、
前記データ整合手段は、前記障害通知を受信したとき前記整合処理を行うことを特徴とする付記５に記載の負荷分散システム。【０１９７】
（付記８）
前記マスタノードは、
前記ノードのいずれかが障害状態から復旧したことをそのノードが通知する復旧通知を受信する復旧通知受信手段を有し、
前記データ整合手段は、前記復旧通知を受信したとき前記整合処理を行うことを特徴とする付記５に記載の負荷分散システム。【０１９８】
（付記９）
前記マスタノードは、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報に存在する矛盾をチェックするデータチェック手段を、更に備えることを特徴とする付記２又は３に記載の負荷分散システム。【０１９９】
（付記１０）
前記データチェック手段は、前回受信した負荷分散情報と今回受信した負荷分散情報と間の相違点をチェックすることを特徴とする付記９に記載の負荷分散システム。【０２００】
（付記１１）
前記データチェック手段は、各前記ノードについて各々記憶された前記負荷分散情報が、それぞれの前記ノードを正常及び無効のいずれと示すかに関して、前記負荷分散情報に存在する矛盾をチェックすることを特徴とする付記９に記載の負荷分散システム。【０２０１】
（付記１２）
前記データチェック手段は、各前記ノードが末端へ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記９に記載の負荷分散システム。【０２０２】
（付記１３）
前記データチェック手段は、最上位層のノードから各前記ノードへ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記９に記載の負荷分散システム。【０２０３】
（付記１４）
前記データチェック手段は、当該ノードから末端へ至る有効経路が無いとき、又は最上位層のノードから当該ノードへ至る有効経路が無いとき、当該ノードについて前記負荷分散情報記憶手段に記憶された前記負荷分散情報に当該ノードが無効であることを設定することを特徴とする付記９に記載の負荷分散システム。【０２０４】
（付記１５）
前記負荷分散方式変更手段は、当該負荷分散手段により前記処理要求が分配される各ノードの負荷状態が所定の許容範囲内に維持されている間、当該負荷分散手段の負荷分散方式を前記現状の負荷分散方式に維持することを特徴とする付記４に記載の負荷分散システム。【０２０５】
（付記１６）
前記負荷分散方式変更手段は、当該負荷分散手段の負荷分散方式が、当該負荷分散手段にて受信した各前記処理要求の分配先をそれぞれの処理要求に応じて決定する方式であるとき、当該負荷分散手段の負荷分散方式を現状の負荷分散方式に維持することを特徴とする付記４に記載の負荷分散システム。【０２０６】
（付記１７）
前記階層構造の最上位層に、複数のノードがそれぞれ前記マスタノードとして配置され、
これらマスタノードの各々は、他のマスタノードが障害であるか否かを相互に監視する死活監視手段を備える、付記２又は３に記載の負荷分散システム。【０２０７】
（付記１８）
前記マスタノードは、前記他のマスタノードの障害通知及び／又は障害復旧通知を、前記負荷分散システムに処理要求を送信するクライアント装置及び／又は下位層のノードへ送信する障害通知手段を備えることを特徴とする付記１７に記載の負荷分散システム。【０２０８】
（付記１９）
前記下位層ノードは、
前記障害通知及び／又は障害復旧通知を受信する受信手段と、
前記所定の負荷分散情報と各前記マスタノードの死活状態を記憶する記憶手段と、
記憶する所定の負荷分散情報を、障害状態でない前記マスタノードへ送信する負荷分散情報送信手段と、
を備えることを特徴とする付記１８に記載の負荷分散システム。【０２０９】
（付記２０）
前記負荷分散手段は、上位層の前記ノードから送信された処理要求を１つ下位の層の前記ノードへと分配する負荷分散装置、並びに前記ノード上にて実行されることにより上位層の前記ノードから送信された処理要求を１つ下位の層の前記ノードへと分配する負荷分散処理をこのノードに実行させるアプリケーションプログラム及びミドルウエアのいずれかであることを特徴とする付記１〜１９のいずれか一項に記載の負荷分散システム。【０２１０】
（付記２１）
付記１又は２に記載の負荷分散システムにおける前記マスタノードとして動作するノード装置であって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とするノード装置。【０２１１】
（付記２２）
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する送信可否決定手段と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する送信可否通知手段と、
を備えることを特徴とする付記２１に記載のノード装置。【０２１２】
（付記２３）
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する負荷分散方式変更手段と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する負荷分散方式通知手段と、
を更に備えることを特徴とする付記２１又は２２に記載のノード装置。【０２１３】
（付記２４）
付記３に記載の負荷分散システムにおける前記負荷分散手段として動作する負荷分散装置であって、
前記可否通知を前記マスタノードから受信する可否通知受信手段と、
受信した前記可否通知に従って処理要求の分配を行う負荷分配手段と、
を備えることを特徴とする負荷分散装置。【０２１４】
（付記２５）
付記４、１５又は１６に記載の負荷分散システムにおける前記負荷分散手段として動作する負荷分散装置であって、
前記負荷分散方式変更通知を前記マスタノードから受信する分散方式変更通知受信手段と、
受け付けた処理要求の分配を変更された前記負荷分散方式に従って行う負荷分配手段と、
を備えることを特徴とする負荷分散装置。【０２１５】
（付記２６）
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける、前記ノードのいずれかであるマスタノードで実行される負荷分散制御プログラムであって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する処理と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する処理と、
を前記マスタノードに実行させることを特徴とする負荷分散制御プログラム。【０２１６】
（付記２７）
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする付記２６に記載の負荷分散制御プログラム。【０２１７】
（付記２８）
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する処理と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する処理と、
を前記マスタノードに実行させることを特徴とする付記２７に記載の負荷分散制御プログラム。【０２１８】
（付記２９）
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する処理と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する処理と、
を前記マスタノードに実行させることを特徴とする付記２７又は２８に記載の負荷分散制御プログラム。【０２１９】
（付記３０）
付記３に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記可否通知を前記マスタノードから受信する処理と、
受信した前記可否通知に従って前記処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。【０２２０】
（付記３１）
付記４、１５又は１６に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記負荷分散方式変更通知を前記マスタノードから受信する処理と、
前記負荷分散方式変更通知により変更された前記負荷分散方式に従って、処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。【０２２１】
（付記３２）
前記ノードにインストールされるアプリケーションプログラム又はミドルウエアであることを特徴とする付記３０又は付記３１に記載の負荷分散プログラム。【０２２２】
（付記３３）
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかが負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける負荷分散方法であって、
前記ノードのいずれかであるマスタノードにおいて、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信し、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する、
ことを特徴とする負荷分散方法。【０２２３】
（付記３４）
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする付記３３に記載の負荷分散方法。【０２２４】
（付記３５）
前記マスタノードにおいて、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定し、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を通知する、
を備えることを特徴とする付記３４に記載の負荷分散方法。【０２２５】
（付記３６）
前記マスタノードにおいて、
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更し、
変更された前記負荷分散方式を当該負荷分散手段へ通知する、
を更に備えることを特徴とする付記３４又は３５に記載の負荷分散方法。【０２２６】
（付記３７）
前記マスタノードにおいて、
前記負荷分散情報記憶手段に当該ノードについて記憶した前記負荷分散情報と、当該ノードが有している前記負荷分散情報と、の間の整合処理を行うことを特徴とする付記３４又は３５に記載の負荷分散方法。【０２２７】
（付記３８）
前記マスタノードが負荷分散処理を開始した時に及び／又は周期的に前記整合処理を行うことを特徴とする付記３７に記載の負荷分散方法。【０２２８】
（付記３９）
前記マスタノードにおいて、
前記ノードのいずれかが障害状態となったことをその１階層上の他のノードが通知する障害通知を受信し、
前記障害通知を受信したとき前記整合処理を行うことを特徴とする付記３７に記載の負荷分散方法。【０２２９】
（付記４０）
前記マスタノードにおいて、
前記ノードのいずれかが障害状態から復旧したことをそのノードが通知する復旧通知を受信し、
前記復旧通知を受信したとき前記整合処理を行うことを特徴とする付記３７に記載の負荷分散方法。【０２３０】
（付記４１）
前記マスタノードにおいて、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報に存在する矛盾をチェックすることを特徴とする付記３４又は３５に記載の負荷分散方法。【０２３１】
（付記４２）
前回受信した負荷分散情報と今回受信した負荷分散情報と間の相違点をチェックすることを特徴とする付記４１に記載の負荷分散方法。【０２３２】
（付記４３）
各前記ノードについて各々記憶された前記負荷分散情報が、それぞれの前記ノードを正常及び無効のいずれと示すかに関して、前記負荷分散情報に存在する矛盾をチェックすることを特徴とする付記４１に記載の負荷分散方法。【０２３３】
（付記４４）
各前記ノードが末端へ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記４１に記載の負荷分散方法。【０２３４】
（付記４５）
最上位層のノードから各前記ノードへ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記４１に記載の負荷分散方法。【０２３５】
（付記４６）
当該ノードから末端へ至る有効経路が無いとき、又は最上位層のノードから当該ノードへ至る有効経路が無いとき、当該ノードについて前記負荷分散情報記憶手段に記憶された前記負荷分散情報に当該ノードが無効であることを設定することを特徴とする付記４１に記載の負荷分散方法。【０２３６】
（付記４７）
当該負荷分散手段により前記処理要求が分配される各ノードの負荷状態が所定の許容範囲内に維持されている間、当該負荷分散手段の負荷分散方式を前記現状の負荷分散方式に維持することを特徴とする付記３６に記載の負荷分散方法。【０２３７】
（付記４８）
当該負荷分散手段の負荷分散方式が、当該負荷分散手段にて受信した各前記処理要求の分配先をそれぞれの処理要求に応じて決定する方式であるとき、当該負荷分散手段の負荷分散方式を現状の負荷分散方式に維持することを特徴とする付記３６に記載の負荷分散方法。【０２３８】
（付記４９）
前記負荷分散システムの前記階層構造の最上位層に、複数のノードがそれぞれ前記マスタノードとして配置され、
これらマスタノードの各々は、他のマスタノードが障害であるか否かを相互に監視することを特徴とする付記３４又は３５に記載の負荷分散方法。【０２３９】
（付記５０）
前記マスタノードは、前記他のマスタノードの障害通知及び／又は障害復旧通知を、前記負荷分散方法に処理要求を送信するクライアント装置及び／又は下位層のノードへ送信することを特徴とする付記４９に記載の負荷分散方法。【０２４０】
（付記５１）
前記下位層ノードにおいて、
前記障害通知及び／又は障害復旧通知を受信し、
前記所定の負荷分散情報と各前記マスタノードの死活状態を記憶し、
記憶する所定の負荷分散情報を、障害状態でない前記マスタノードへ送信する、
ことを特徴とする付記５０に記載の負荷分散方法。【０２４１】
（付記５２）
前記負荷分散手段は、上位層の前記ノードから送信された処理要求を１つ下位の層の前記ノードへと分配する負荷分散装置、並びに前記ノード上にて実行されることにより上位層の前記ノードから送信された処理要求を１つ下位の層の前記ノードへと分配する負荷分散処理をこのノードに実行させるアプリケーションプログラム及びミドルウエアのいずれかであることを特徴とする付記３３〜５１のいずれか一項に記載の負荷分散方法。【０２４２】
以上、本発明の好適な実施態様について詳述したが、当業者が種々の修正及び変更をなし得ること、並びに、特許請求の範囲は本発明の真の精神および趣旨の範囲内にあるこの様な全ての修正及び変更を包含することは、本発明の範囲に含まれることは当業者に理解されるべきものである。
【産業上の利用可能性】
【０２４３】
本発明は、クライアント装置から要求された処理要求を、複数のサーバ、負荷分散装置、ファイヤウオール等、ファイヤウオール機能付き負荷分散装置などに分配して処理する負荷分散システムに利用可能である。より詳しくは、各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを、これらノード等の負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムに利用可能である。
【図１】
2008129597.tif 000003
【図２】
2008129597.tif 000004
【図３】
2008129597.tif 000005
【図４】
2008129597.tif 000006
【図５】
2008129597.tif 000007
【図６】
2008129597.tif 000008
【図７】
2008129597.tif 000009
【図８】
2008129597.tif 000010
【図９】
2008129597.tif 000011
【図１０】
2008129597.tif 000012
【図１１】
2008129597.tif 000013
【図１２】
2008129597.tif 000014
【図１３】
2008129597.tif 000015
【図１４】
2008129597.tif 000016
【図１５】
2008129597.tif 000017
【図１６】
2008129597.tif 000018
【図１７】
2008129597.tif 000019
【図１８】
2008129597.tif 000020
【図１９】
2008129597.tif 000021
【図２０】
2008129597.tif 000022
【図２１】
2008129597.tif 000023
【図２２】
2008129597.tif 000024
【図２３】
2008129597.tif 000025
【図２４】
2008129597.tif 000026
【図２５】
2008129597.tif 000027
【図２６】
2008129597.tif 000028
【図２７】
2008129597.tif 000029
【図２８】
2008129597.tif 000030
【図２９】
2008129597.tif 000031
【図３０】
2008129597.tif 000032
【図３１】
2008129597.tif 000033
【図３２】
2008129597.tif 000034
【図３３】
2008129597.tif 000035
【図３４】
2008129597.tif 000036
【図３５】
2008129597.tif 000037
【図３６】
2008129597.tif 000038
【図３７】
2008129597.tif 000039
【図３８】
2008129597.tif 000040
【図３９】
2008129597.tif 000041
【図４０】
2008129597.tif 000042
【図４１】
2008129597.tif 000043
【図４２】
2008129597.tif 000044
【図４３】
2008129597.tif 000045
【図４４】
2008129597.tif 000046
【図４５】
2008129597.tif 000047
【図４６】
2008129597.tif 000048
【図４７】
2008129597.tif 000049
【図４８】
2008129597.tif 000050
【図４９】
2008129597.tif 000051
【図５０】
2008129597.tif 000052
【図５１】
2008129597.tif 000053
【手続補正書】
【提出日】平成21年8月24日(2009.8.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムであって、
前記ノードのいずれかであるマスタノードは、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とする負荷分散システム。
【請求項２】
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする請求項１に記載の負荷分散システム。
【請求項３】
前記マスタノードは、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する送信可否決定手段と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する送信可否通知手段と、
を備えることを特徴とする請求項２に記載の負荷分散システム。
【請求項４】
前記マスタノードは、
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する負荷分散方式変更手段と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する負荷分散方式通知手段と、
を更に備えることを特徴とする請求項２又は３に記載の負荷分散システム。
【請求項５】
請求項１又は２に記載の負荷分散システムにおける前記マスタノードとして動作するノード装置であって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とするノード装置。
【請求項６】
請求項３に記載の負荷分散システムにおける前記負荷分散手段として動作する負荷分散装置であって、
前記可否通知を前記マスタノードから受信する可否通知受信手段と、
受信した前記可否通知に従って処理要求の分配を行う負荷分配手段と、
を備えることを特徴とする負荷分散装置。
【請求項７】
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける、前記ノードのいずれかであるマスタノードで実行される負荷分散制御プログラムであって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する処理と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する処理と、
を前記マスタノードに実行させることを特徴とする負荷分散制御プログラム。
【請求項８】
請求項３に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記可否通知を前記マスタノードから受信する処理と、
受信した前記可否通知に従って前記処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。
【請求項９】
請求項４に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記負荷分散方式変更通知を前記マスタノードから受信する処理と、
前記負荷分散方式変更通知により変更された前記負荷分散方式に従って、処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。
【請求項１０】
各層が１つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかが負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける負荷分散方法であって、
前記ノードのいずれかであるマスタノードにおいて、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信し、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する、
ことを特徴とする負荷分散方法。
【国際調査報告】
2008129597.tif 000054
2008129597.tif 000055
2008129597.tif 000056