JP5246157B2 - 負荷分散システム - Google Patents

負荷分散システム Download PDF

Info

Publication number
JP5246157B2
JP5246157B2 JP2009510636A JP2009510636A JP5246157B2 JP 5246157 B2 JP5246157 B2 JP 5246157B2 JP 2009510636 A JP2009510636 A JP 2009510636A JP 2009510636 A JP2009510636 A JP 2009510636A JP 5246157 B2 JP5246157 B2 JP 5246157B2
Authority
JP
Japan
Prior art keywords
load distribution
servers
load
distribution information
layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009510636A
Other languages
English (en)
Other versions
JPWO2008129597A1 (ja
Inventor
泰弘 西川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008129597A1 publication Critical patent/JPWO2008129597A1/ja
Application granted granted Critical
Publication of JP5246157B2 publication Critical patent/JP5246157B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、クライアント装置から要求された処理要求を、複数のサーバに分配して処理する負荷分散システムに関する。より詳しくは、各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかをロードバランサー等の負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムに関する。
負荷分散システムは、クライアント装置から要求された処理要求を複数のサーバに分配することにより、大量の処理要求を高速に処理することを可能とする。近年では、通信速度の低下を防止する等の目的から、複数のサーバを階層的に接続した階層構造を有する負荷分散システムが利用されている。図1に、階層的に接続した階層構造を有する負荷分散システムの概念的な構成図を示す。
概念的には、階層型負荷分散システム1は、各ノード111〜113、121、131〜139、142〜143及び151〜159を階層的に接続したネットワークとして示すことが可能であり、処理要求を処理、分配又は転送する機能を有するサーバ、これらノード又はファイヤウオール等の各種装置をこれらノードとして有している。
フロントエンドと呼ばれる最上位層のノード装置111〜113が、クライアント装置(以下、単に「クライアント」と示す)C1及びC2からネットワークNを経由して処理要求を受信すると、この処理要求は上位層のノードから下位層のノードへと順次転送される。そして末端に至るまでの途中にて負荷分散ノード121及び141〜143が複数のノードに処理要求を分配し、これによって各ノードの負荷が分散される。
なお、負荷分散ノード121及び141〜143は、負荷分散装置や、サーバ上で実行されこのサーバで負荷分散処理を行わせる負荷分散アプリケーションプログラム、負荷分散ミドルウエア等としてよい。
また、最上位層のノード装置111〜113は、サーバ装置に限られず、負荷分散装置や、ファイヤウオール装置又はファイヤウオール機能付き負荷分散装置など、様々な装置としてよい。
このように、階層型負荷分散システム1は、様々な構成によって実現することが可能である。以下、本明細書では、説明の目的のみのために特定の構成例を用いるが、本発明はこれら特定の構成に限られることなく、様々な構成の階層型負荷分散システム1に適用することができる。
図2は、従来の階層型負荷分散システムの構成例を示す図である。この負荷分散システム1では、最上位層(第1層)にあるサーバ11〜13がクライアントC1及びC2が要求した処理要求を受け付け、これら処理要求を1つ下の層(第2層)に配置された負荷分散装置21(LB: Load Balancer)へと送信する。
負荷分散装置21は、各種の負荷分散方式のうち状況に応じた方式に従って、サーバ11〜13から受信した処理要求を1つ下の層(第3層)に配置されたサーバ31〜39へと分配して送信する。負荷分散方式としては、例えば最小コネクション(Least Connection)、ラウンドロビン(Round Robin)のほか、処理要求の送信先や送信元のアドレスのハッシュ(Hash)関数の値により分散先を決定する方法(以下、本明細書において「Hash法」と示す)、処理要求のHTTPヘッダの内容に応じて分散先を決定する方法(以下、本明細書において「HTTPヘッダ法」と示す)、及び重み付け法が、一般に使用されている。
第3層に配置されたサーバ31〜33は、負荷分散装置21から受信した処理要求を、1つ下の階層(第4層)に配置された負荷分散装置41へ送信する。同様にサーバ34〜36は、負荷分散装置21から受信した処理要求を負荷分散装置42へ送信する。またサーバ37〜39は、負荷分散装置21から受信した処理要求を負荷分散装置43へ送信する。
第4層に配置された負荷分散装置41は、上記の各種の負荷分散方式のうち状況に応じた方式に従って、サーバ31〜33から受信した処理要求を最下層(第5層)に配置されたサーバ51〜53へ分配する。同様に、負荷分散装置42はサーバ34〜36から受信した処理要求をサーバ54〜56へと分配し、負荷分散装置43はサーバ37〜39から受信した処理要求をサーバ57〜59へと分配する。
特開2003−196178号公報
従来の階層型負荷分散システム1では、各サーバ又は各負荷分散装置は、それぞれに接続されている1階層下の装置状態のみを監視して処理要求を送信しており、2階層以上下位の層の装置の状態に関わらず処理要求を送信していた。
そのため、例えば図3に示すように、階層途中の負荷分散装置41に障害が生じても、負荷分散装置41よりも2階層上の負荷分散装置21は、このような事情に関係なく負荷分散装置41の上の階層に配置されたサーバ31〜33へ処理要求を送信してしまう。その結果、これら処理要求が無駄になり、またサーバ31〜33から負荷分散装置41への要求の再送信が繰り返し行われ処理遅延が生じていた。
また、階層途中の装置(図示の例ではサーバ34及び35)に障害が生じると、その下流に接続されたサーバ(図示の例ではサーバ54〜56)と、その他のサーバ(図示の例ではサーバ57〜59)との間に負荷量の偏りが生じていた。
上記問題点に鑑み、本発明は、従来の階層型負荷分散システムに生じていた処理遅延とサーバ間の負荷量の偏りを防止することを目的とする。
上記目的を達成するため、本発明では、各階層に1つ以上のノードを含む階層型負荷分散システムにおいて、これらノードのいずれかにおいて、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括して管理する。ここに負荷分散情報とは、処理要求を分配されるノードにおける処理受付数及び処理実行数、処理要求を分配されるノードの接続状況及び負荷状況、並びに負荷分散ノードにて行われる負荷分散方式の、いずれかを示す情報である。
本発明によれば、負荷分散情報を一括して1つのノード(以下「マスタノード」と記す)で管理することができるようになるため、このマスタノードにて、階層構造に含まれる全てのノードの負荷処理状態が把握できる。このため例えば障害などの負荷処理が困難な状態にあるノードへの無駄な処理要求を避けて処理遅延を防ぐことができる。また、負荷分散情報を一括して管理することにより、マスタノードにて、階層構造に含まれる全てのノードの負荷状態のバランスを把握することができる。これにより、階層構造中のノード間の負荷量の偏りが低減するように、各負荷分散ノードにて行われる負荷分散処理の内容を決定することが可能となる。
本発明の第1形態によれば、各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムが提供される。本負荷分散システムでは、上記ノードのいずれかであるマスタノードは、このマスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括して記憶する負荷分散情報記憶手段と、を備える。
本発明の第2形態によれば、上記第1形態による負荷分散システムにおいてマスタノードとして動作するノード装置が提供される。本ノード装置は、該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括して記憶する負荷分散情報記憶手段と、を備える。マスタノードは、例えばサーバ装置、負荷分散装置や、ファイヤウオール装置又はファイヤウオール機能付き負荷分散装置であってよい。
本発明の第3形態によれば、上記第1形態による負荷分散システムにおいて負荷分散手段として動作する負荷分散装置が提供される。本負荷分散装置は、可否通知をマスタノードから受信する可否通知受信手段と、受信した可否通知に従って処理要求の分配を行う負荷分配手段と、を備える。
本発明の第4形態によれば、各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける、これらノードのいずれかであるマスタノードで実行される負荷分散制御プログラムが提供される。本負荷分散制御プログラムは、マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する処理と、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括してマスタノードに設けられた所定の負荷分散情報記憶手段に記憶する処理と、をマスタノードに実行させる。
本発明の第5形態によれば、上記第1形態による負荷分散システムにおいて負荷分散手段として実行される負荷分散プログラムが提供される。本負荷分散プログラムは、可否通知を前記マスタノードから受信する処理と、受信した可否通知に従って処理要求の分配を行う処理と、をいずれかのノードに実行させる。
本発明の第6形態によれば、各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかが負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける負荷分散方法が提供される。本負荷分散方法では、これらノードのいずれかであるマスタノードにおいて、マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信し、階層構造に含まれる全てのノードに関する各々の負荷分散情報を一括してマスタノードに設けられた所定の負荷分散情報記憶手段に記憶する。
ノードを階層的に接続した階層構造を有する負荷分散システムの概念的な構成図である。 従来の階層型負荷分散システムの構成例を示す図である。 図1に示す階層型負荷分散システムにおける障害状態の説明図である。 本発明の第1実施例による階層型負荷分散システムの概略構成図である。 図4に示す階層型荷分散システムにおいて最上位層に配置されるサーバの概略構成図である。 図4に示す階層型負荷分散システムにおいて中間層又は下位層に配置されるサーバの概略構成図である。 図4に示す階層型負荷分散システムにおける負荷分散装置の概略構成図である。 装置1台当たりの負荷分散情報のデータ構造の例を示す図である。 最上位層にあるサーバに記憶される負荷分散情報のデータ構造の例を示す図である。 中間層にある装置に記憶される負荷分散情報のデータ構造の例を示す図(その1)である。 中間層にある装置に記憶される負荷分散情報のデータ構造の例を示す図(その2)である。 図4に示した階層型負荷分散システムの立ち上げシーケンスを示す図(その1)である。 図4に示した階層型負荷分散システムの立ち上げシーケンスを示す図(その2)である。 最上位サーバの死活監視処理のフローチャートである。 負荷分散情報抽出要求のデータ構成例を示す図である。 図15に示す負荷分散情報抽出要求に対する負荷分散情報返送のデータ構成例を示す図である。 負荷分散情報矛盾解消処理のフローチャートである。 図15に示す負荷分散情報矛盾解消処理から呼び出されるサブルーチンである上下関係矛盾解消処理のフローチャートである。 負荷分散情報補正処理のフローチャートである。 図19に示す負荷分散情報補正処理から呼び出されるサブルーチンである補正分散方式変更処理のフローチャート(その1)である。 図19に示す負荷分散情報補正処理から呼び出されるサブルーチンである補正分散方式変更処理のフローチャート(その2)である。 図20に示す補正分散方式変更処理から呼び出される処理数チェック処理のフローチャートである。 図21に示す補正分散方式変更処理から呼び出されるコネクション数チェック処理のフローチャートである。 図21に示す補正分散方式変更処理から呼び出される、処理分散方式の変更要否の判定処理のフローチャートである。 図21に示す負荷チェック処理として呼び出されるCPU使用率チェック処理のフローチャートである。 図21に示す負荷チェック処理として呼び出されるメモリ使用率チェック処理のフローチャートである。 図21に示す負荷チェック処理として呼び出されるプロセス使用率チェック処理のフローチャートである。 図21に示す負荷チェック処理として呼び出される残リソース量チェック処理のフローチャートである。 図19に示す負荷分散情報補正処理から呼び出されるサブルーチンである分散先指定時処理のフローチャート(その1)である。 負荷分散情報補正要求のデータ構成例を示す図である。 図4に示した階層型負荷分散システムに障害が生じた状態を示す図である。 図4に示した階層型負荷分散システムにおける障害発生時のシーケンスを示す図(その1)である。 図4に示した階層型負荷分散システムにおける障害発生時のシーケンスを示す図(その2)である。 障害通知のデータ構成例を示す図である。 図4に示した階層型負荷分散システムにおける障害からの復旧時のシーケンスを示す図(その1)である。 図4に示した階層型負荷分散システムにおける障害からの復旧時のシーケンスを示す図(その2)である。 復旧通知のデータ構成例を示す図である。 本発明の第2実施例による階層型負荷分散システムの概略構成図である。 図38に示す階層型負荷分散システムにおいて最上位層に配置されるサーバの概略構成図である。 図38に示す階層型負荷分散システムにおいて中間層又は下位層に配置されるサーバの概略構成図である。 図38に示した階層型負荷分散システムにおける立ち上げシーケンスを示す図である。 図38に示した階層型負荷分散システムに障害が生じた状態を示す図である。 図38に示した階層型負荷分散システムにおける障害発生時のシーケンスを示す図である。 図38に示した階層型負荷分散システムにおける障害からの復旧時のシーケンスを示す図である。 負荷分散ミドルウエアにより負荷分散処理を行う最上位層に配置されるサーバの概略構成図である。 負荷分散ミドルウエアにより負荷分散処理を行う中間層又は下位層に配置されるサーバの概略構成図である。 負荷分散ミドルウエアにより負荷分散処理を行う場合の立ち上げシーケンスを示す図である。 負荷分散ミドルウエアにより負荷分散処理を行う場合の障害発生時のシーケンスを示す図である(その1)。 負荷分散ミドルウエアにより負荷分散処理を行う場合の障害発生時のシーケンスを示す図である(その2)。 負荷分散ミドルウエアにより負荷分散処理を行う場合の障害からの復旧時のシーケンスを示す図である(その1)。 負荷分散ミドルウエアにより負荷分散処理を行う場合の障害からの復旧時のシーケンスを示す図である(その2)。
符号の説明
1 負荷分散システム
11〜13、31〜39、51〜59 サーバ
21、41〜43 負荷
C1、C2 クライアント
N ネットワーク
以下、添付する図面を参照して本発明の実施例を説明する。図4は、本発明の第1実施例による階層型負荷分散システムの概略構成図である。階層型負荷分散システム1の全体構成は、図2を参照して説明した従来の負荷分散システムと同様であり、同じ構成要素には同じ参照番号を付し説明を省略する。また以下の説明において、階層型負荷分散システムを単に「負荷分散システム」と示すことがある。
図5は、図4に示す負荷分散システム1において最上位層(第1層)に配置されるサーバ11〜13のうちのサーバ11の概略構成図である。サーバ12及び13の構成もサーバ11と同様である。
サーバ11は、CPU101と、CPU101により実行されるプログラムやCPU101による処理に必要なデータを記憶する記憶部102と、サーバ11がネットワークNや負荷分散システム1内の他の装置(すなわちサーバ12、13、31〜39及びサーバ51〜59並びに負荷分散装置21、41〜43)と通信を行うための通信インタフェース103と、を備えている。サーバ11は、クライアントC1及びC2が発した処理要求を、通信インタフェース103を介してネットワークNから受信し、その処理要求を通信インタフェース103を介してより下位の装置へ送信する。
記憶部102には、負荷分散装置21、41〜43による負荷分散処理の制御や、負荷分散システム1内における処理要求の送信経路の制御を行う負荷分散制御プログラム104と、負荷分散システム1内の各装置の動作状態を示す負荷分散情報105が記憶されている。
負荷分散制御プログラム104の動作と負荷分散情報105については後述する。
図6は、図4に示す中間層に配置されるサーバ31の概略構成図である。サーバ32〜39及びサーバ51〜59の構成もサーバ31と同様である。
サーバ31は、CPU201と、CPU201により実行されるプログラムやCPU201による処理に必要なデータを記憶する記憶部202と、負荷分散システム1内の他の装置のうちサーバ31が接続されているより上位の装置(すなわち負荷分散装置21)及びより下位の装置(すなわち負荷分散装置41)と通信を行うための通信インタフェース203と、を備えている。
サーバ31は、負荷分散装置21から送信された処理要求を通信インタフェース203を介して受信し、これらの処理要求を通信インタフェース203を介して下位層の負荷分散装置41へ送信する。記憶部202には、サーバ31に受信した処理要求を下位層へ送信させる制御プログラム204と、後述する負荷分散情報205が記憶されている。
但し、負荷分散システム1の末端、すなわち最下層(第5層)に配置されるサーバ51〜59の場合には、より下位の装置を持たず、受信した処理要求を自ら処理する。
図7は、図4に示す負荷分散システム1における負荷分散装置21の概略構成図である。負荷分散装置41〜43の構成も負荷分散装置21と同様である。
負荷分散装置21は、CPU301と、CPU301により実行されるプログラムやCPU301による処理に必要なデータを記憶する記憶部302と、負荷分散システム1内の他の装置のうち負荷分散装置21が接続されているより上位の装置(すなわちサーバ11〜13)と通信を行うための通信インタフェース303及びより下位の装置(すなわちサーバ31〜39)と通信を行うための通信インタフェース304と、を備えている。
記憶部302には、通信インタフェース303を介して受信した処理要求を、負荷分散装置21に接続されている下位層のサーバ31〜39へと分配する負荷分散処理をCPU301に実行させる負荷分散プログラム305と、後述する負荷分散情報306とが記憶されている。
負荷分散装置21は、サーバ11〜13から送信された処理要求を通信インタフェース303を介して受信し、受信した処理要求の分配先を下位層のサーバ31〜39のいずれかに決定し、これら処理要求を通信インタフェース304を介して各々サーバ31〜39へと送信する。
以下、第1実施例による負荷分散システム1の説明においてこれらサーバ31〜39及び51〜59、並びに負荷分散装置21及び41〜43をまとめて「下位層装置」と記すことがある。
以下、上述の負荷分散情報について説明する。負荷分散情報は、負荷分散システム1の各装置ごとに、当該装置に適用される負荷分散方式、当該装置の負荷状況、最上位層から当該装置へと至る有効な経路の有無を示す情報である。
例えば、当該装置がサーバ31〜39及び51〜59などの負荷分散装置から処理要求を分配される装置である場合には、負荷分散情報には、当該装置における処理受付数及び処理実行数や、当該装置のノードの接続状況及び負荷状況、また当該装置に対して行われる負荷分散方式を示す情報が含まれる。
また当該装置が負荷分散装置21及び41〜43である場合には、負荷分散情報には、前記負荷分散手段が行う負荷分散方式を示す情報が含まれる。
負荷分散情報は、上述の通りサーバ11〜13の記憶部102と、サーバ31〜39及び51〜59の記憶部202と、負荷分散装置21及び41〜43の記憶部302と、に記憶されている。負荷分散情報の各データの値は、負荷分散システム1の構成に応じて予め初期設定され、または従前の負荷分散システム1の動作のために変更された場合にはその値が保持されている。
図8に装置1台あたりの負荷分散情報のデータ構造の例を示す。負荷分散情報は、図8に示すデータ構造を各装置毎に有する。以下の説明において、図8に示すデータ構造を持つある負荷分散情報が、ある装置Xの状態を示すものであるときには、「装置Xに関する負荷分散情報」と記載する。
負荷分散情報に含まれる各データには、データの種類毎に予め識別番号が割り当てられており、この識別番号を図8において「情報要素ID」と示す。また以下の説明では「情報要素ID」を単に「ID」と示す。
ID=「1」のデータは、当該装置が配置される階層の番号を示し、例えばサーバ11に関する負荷分散情報の場合にはこのデータは「1」の値を有し、負荷分散装置41に関する負荷分散情報の場合にはこのデータは「4」の値を有する。
ID=「2」のデータは、負荷分散システム1内において当該装置に割り当てられた階層毎のシーケンス番号を示す。また、ID=「3」のデータは当該装置に割り当てられたIPアドレスを示す。ID=「4」のデータは同階層にある全装置数を示す。
ID=「5」のデータは、当該装置の状態を示し、例えば正常動作を行っている場合には「正常」を示す値を有し、当該装置が障害状態である場合には「障害」を示す値を有する。また、当該装置が正常であっても、より下位の装置の障害等の原因によって当該装置から末端サーバまで処理要求を送信する有効な経路が存在しない場合や、最上位層のサーバ11〜13から当該装置まで処理要求を送信する有効な経路が存在しない場合には「無効」を示す値を有する。その他、本データには、障害中ではないが正常に動作していないことを示すために、当該装置が立ち上げ中であることを示す「立ち上げ中」や、他の装置とのIPコネクションが確立できていないことを示す「IPコネクション未確立」などの値を有してもよい。また、当該装置が負荷分散処理を行う装置である場合には、「正常」の代わりに負荷分散が正常に行われていることを示す「負荷分散正常」の値を、「障害」の代わりに負荷分散が正常に行われていないことを示す「負荷分散異常」の値を有してもよい。
ID=「6」のデータは、最上位層のサーバ11〜13から当該装置まで処理要求を送信する有効な経路の有無を示し、有効な経路がある場合及びない場合にそれぞれ「有効」及び「無効」の値を有する。
ID=「7」のデータは、当該装置が負荷分散を行う手段の種別を示す。例えば図4に示す構成例では、負荷分散装置21及び41〜43が負荷分散処理を行うが、後述するように負荷分散アプリケーションプログラムや、負荷分散ミドルウエアが負荷分散処理を行うように、負荷分散システム1を構成してもよい。
ID=「8」のデータは、当該装置に対してその上流の装置が行う負荷分散方式の種別を示す。
負荷分散方式の種別としては、例えばラウンドロビン、Least Connection及び重み付け法(以下、これらをまとめて「ラウンドロビン等」と記すことがある)や、処理要求の分配先が一意に特定されるHash法及びHTTPヘッダ法(以下、これらをまとめて「Hash法等」と記すことがある)がある。また、ID=「8」のデータは、当該装置に対して負荷分散が行われない場合には「対象外」を示す値を有する。例えば、負荷分散装置41の上流の装置であるサーバ31は、負荷分散処理を行なわず処理要求を全て負荷分散装置41に送信するため、このような負荷分散装置41に関する負荷分散情報においては、ID=「8」のデータは「対象外」を示す値を有する。
また、Hash法等を使用する場合でも処理要求の分配先が冗長な構成を有する場合もある。すなわち、ある処理要求に対してHash法等によって複数の装置が分配先として特定され、次にラウンドロビン等によってこれらの装置の間で処理要求が分配される場合もある。このような場合には、負荷分散方式の種別として、2種の負荷分散方式を組み合わせることを示すデータを有する。
例えばまずHash法により処理要求を分配し、次に分配先として特定される複数の装置の間でラウンドロビンを用いて処理要求を分配する場合には、ID=「8」のデータは、Hash法とラウンドロビンを組み合わせたことを示す値「Hash-ラウンドロビン」を有する。
また同様に、Hash法により処理要求を分配し、次に分配先として特定される複数の装置の間で最小コネクション法や重み付け法を用いて処理要求を分配する場合には、ID=「8」のデータは、それぞれ「Hash-最小コネクション法」及び「Hash-重み付け法」の値を有する。
また例えば、HTTPヘッダ法により処理要求を分配し、次に分配先として特定される複数の装置の間でラウンドロビン、最小コネクション法又は重み付け法を用いて処理要求を分配する場合には、ID=「8」のデータは、それぞれ「HTTPヘッダ-ラウンドロビン」、「HTTPヘッダ-最小コネクション法」又は「HTTPヘッダ-重み付け法」の値を有する。
ID=「9」及び「10」の各データについては後述する。
ID=「11」のデータ(「処理受付数」)は当該装置が受け付けた処理要求の数を示す。
ID=「12」のデータ(「処理実行数」)は、当該装置が受け付けた処理要求のうち下位層への送信が完了した処理要求の数を示す。当該装置が最下位層のサーバ(本構成例ではサーバ51〜59)である場合には当該サーバにより処理が完了した処理要求の数を示す。
ID=「13」のデータは、当該装置と負荷分散システム1内の他の装置との間にIPコネクションが確立しているか否かを示し、IPコネクションが確立している場合及び確立していない場合にそれぞれ「IPコネクション確立」及び「IPコネクション未確立」の値を有する。
ID=「14」のデータは、当該装置が現在使用しているIPコネクション数を示し、ID=「15」のデータは、当該装置に残されている使用可能なIPコネクション数を示す。
ID=「16」〜「18」のデータ領域は、負荷分散装置が行う負荷分散処理における負荷分散方式をラウンドロビンからLeast Connectionに変更する際に、最上位層のサーバ11〜13によって使用される。負荷分散システム1では、サーバ31〜39及びサーバ51〜59の負荷状態が所定の基準を満たすとき、それぞれのサーバへ処理要求を分配する上位の装置が行う負荷分散処理における負荷分散方式が、ラウンドロビンからLeast Connectionに切り替えられる。
図20及び図21を参照して後述する負荷分散方式変更処理では、あるサーバの処理受付数(ID=11)が処理実行数(ID=12)よりも大きいか否かを判定し、処理受付数が処理実行数よりも大きいと判定した回数をカウントし、所定の保有時間中にこのカウント数が所定の閾値を超えたときに、ある装置にサーバに処理要求を分配する負荷分散方式が、ラウンドロビンからLeast Connectionに切り替えられる。
ID=「17」のデータ領域には、処理受付数が処理実行数よりも大きいと判定した回数が記録され、ID=「16」のデータ領域には、ID=「17」のデータ領域に記録される回数のカウントを保有すべき期間(保有時間)が記録される。負荷分散方式変更処理では、この保有時間が経過した後に、ID=「17」の領域に記録された判定回数がID=「18」の領域に記録されている所定の閾値を超えたか否かを判定する。すなわちID=「18」の領域には、ID=「16」の領域に記録された保有時間の間にカウントされID=「17」の領域に記録された判定回数と対比すべき閾値が記録される。
ID=「17」の領域に記録された判定回数とID=「18」の領域に記録されている閾値を比較した後、ID=「17」の領域の値はリセットされる。
ID=「19」のデータは、当該装置のCPU使用率を示し、ID=「20」のデータは当該装置のCPU使用率として許容される値の閾値を与える。
ID=「21」のデータは、当該装置のメモリ使用率を示し、ID=「22」のデータは当該装置のメモリ使用率として許容される値の閾値を与える。
ID=「23」のデータは、当該装置のプロセス使用率を示し、ID=「24」のデータは当該装置のプロセス使用率として許容される値の閾値を与える。
ID=「25」のデータは、当該装置のリソース使用量を示し、ID=「26」のデータは当該装置のリソース使用量として許容される値の閾値を与える。
ID=「27」〜「29」のデータ領域は、負荷分散装置が行う負荷分散処理における負荷分散方式をラウンドロビン又はLeast Connectionから重み付け法に変更する際に、最上位層のサーバ11〜13によって使用される。負荷分散システム1では、サーバ31〜39及びサーバ51〜59の負荷状態が所定の基準を満たすとき、それぞれのサーバへ処理要求を分配する上位の装置が使用する負荷分散方式が重み付け法に切り替えられる。
図20及び図21を参照して後述する負荷分散方式変更処理では、あるサーバのCPU使用率、メモリ使用率、プロセス利用率及び残リソース数が許容値以内であるにも関わらず処理受付数が処理実行数よりも大きいと判定した回数をカウントし、所定の保有時間中にこのカウント数が所定の閾値を超えたときに、ある装置にサーバに処理要求を分配する負荷分散方式が、重み付け方式に切り替えられる。
ID=「28」のデータ領域には、処理受付数が処理実行数よりも大きいと判定した回数が記録され、ID=「27」のデータ領域には、ID=「28」のデータ領域に記録される回数のカウントを保有すべき期間(保有時間)が記録される。負荷分散方式変更処理では、この保有時間が経過した後に、ID=「28」の領域に記録された判定回数がID=「29」の領域に記録されている所定の閾値を超えたか否かを判定する。すなわちID=「29」には、ID=「27」の領域に記録された保有時間の間にカウントされID=「28」の領域に記録された判定回数と対比すべき閾値が記録される。
ID=「28」の領域に記録された判定回数とID=「29」の領域に記録されている閾値を比較した後、ID=「28」の領域の値はリセットされる。
ID=「30」のデータは、最上位層の装置(例えばサーバ11〜13)に接続されているクライアントのIPアドレスを示し、最上位層の装置に接続されているクライアントが複数あるときは、クライアント数分のIPアドレスを有する。また当該装置が最上位層の装置でない場合には、ID=「30」のデータとして、当該装置と接続されている1階層上の装置のIPアドレスを記録してもよい。
ID=「31」のデータは、クライアントが接続されている最上位層の装置のIPアドレスを示す。複数の最上位層の装置にクライアントが接続されているときは、接続しているサーバ数分のIPアドレスを有する。図4に示す構成例では最上位層に複数のサーバ11〜13が設けられているため、これら最上位層のサーバはID=「31」のデータを参照することによって、他の最上位のサーバのIPアドレスを知ることができる。
ID=「32」のデータは、最上位層の装置に関する負荷分散情報として用意され、当該装置の正常及び障害状態を、クライアントC1及びC2並びに負荷分散システム1内の他の装置に通知したか否かを示す。
ID=「33」〜「40」のデータは、当該装置に接続されかつ当該装置よりも1階層下の装置に関する情報である。例えば図4に示す構成において、負荷分散装置21に関する負荷分散情報のID=「33」〜「40」のデータは、サーバ31〜39に関する情報を有する。また、例えば負荷分散装置41に関する負荷分散情報のID=「33」〜「39」のデータは、サーバ51〜53に関する情報を有する。
ID=「33」のデータは、当該装置よりも1階層下の階層の番号を示す。
ID=「34」のデータは、当該装置に接続されかつ当該装置よりも1階層下の階層の装置の数を示し、当該装置が負荷分散装置である場合には当該装置の負荷分散処理によって処理要求が分配される装置数を示す。
ID=「35」のデータは、当該装置に接続されかつ当該装置よりも1階層下の階層の装置のそれぞれの装置番号を示し、このような1階層下の装置が複数ある場合には、ID=「35」のデータはこれらの装置の数分のデータを有する。
ID=「36」のデータは、当該装置に接続されかつ当該装置よりも1階層下の装置が負荷分散を行う場合にはその負荷分散方式の種別を示す。このような1階層下の装置が複数ある場合には、ID=「36」のデータはこれらの装置の数分のデータを有する。
ID=「37」のデータは、当該装置に接続されかつ当該装置よりも1階層下の階層の装置のIPアドレスを示す。このような装置が複数ある場合にはID=「37」のデータはこれらの装置の数分のデータを有する。
ID=「38」のデータは、当該装置に接続されかつ当該装置よりも1階層下の装置が負荷分散を行う場合には、その負荷分散処理が、負荷分散装置、サーバ上で動作する負荷分散アプリケーションプログラム、負荷分散ミドルウエアのいずれにより行われるかを示す。このような1階層下の装置が複数ある場合にはID=「38」のデータはこれらの装置の数分のデータを有する。
ID=「39」のデータは、当該装置に接続されかつ当該装置よりも1階層下の装置の装置状態を示し、上述のそれぞれの装置状態に応じて「正常」、「障害」、「無効」を示す値を有する。上述したように「立ち上げ中」、「IPコネクション未確立」、「負荷分散正常」及び「負荷分散異常」などの値を有してもよい。このような1階層下の装置が複数ある場合には、ID=「39」のデータはこれらの装置の数分のデータを有する。
ID=「40」のデータは、当該装置に接続されかつ当該装置よりも1階層下の階層の装置の各々が、末端のサーバ51〜59まで処理要求を送信できる有効経路を有しているか否かを示し、有効経路がある場合には「有効」の値を有し、ない場合には「無効」の値を有する。このような1階層下の装置が複数ある場合には、ID=「40」のデータはこれらの装置の数分のデータを有する。
図9は、最上位層のサーバ11〜13の記憶部102に記憶される負荷分散情報のデータ構造の例を示す図である。最上位層のサーバ11〜13は、負荷分散システム1に含まれる全ての装置に関する負荷分散情報を記憶する。したがって本実施例における最上位層のサーバ11〜13は、特許請求の範囲に記載されるマスタノードに対応する。本実施例ではマスタノードを実現する装置としてサーバを用いるが、マスタノードは、負荷分散装置や、ファイヤウオール装置又はファイヤウオール機能付き負荷分散装置など、様々な装置としてよい。
最上位層のサーバ11〜13は、同じ階層の他の最上位層のサーバ、及び下位層装置から、これらの装置とネットワーク層にて確立されたリンクを介して負荷分散情報を収集する。また下位層装置のいずれかが障害状態にある場合には、その装置に接続され且つその装置よりも1つ上位層に配置された装置から、その障害状態にある装置の負荷分散情報を収集する。
中間層に配置されたサーバ31〜39は、自分自身である当該装置に関する負荷分散情報と、当該装置に接続されかつ当該装置よりも1つ下の層にある装置に関する負荷分散情報を、その記憶部202に記憶する。また、中間層に配置された負荷分散装置21及び41〜43もまた、自分自身である当該装置に関する負荷分散情報と、当該装置に接続されかつ当該装置よりも1つ下の層にある装置に関する負荷分散情報を、その記憶部302に記憶する。
図10は、第2層に配置された負荷分散装置21に記憶される負荷分散情報のデータ構造の例を示す図であり、図11は、第4層に配置された負荷分散装置41に記憶される負荷分散情報のデータ構造の例を示す図である。中間層に配置されたサーバ31〜39、及び負荷分散装置21及び41〜43の各々は、自分自身である当該装置に接続されかつ当該装置よりも1つ下の層にある装置から、これらの装置とネットワーク層にて確立されたリンクを介して負荷分散情報を収集する。
また、最下位層にあるサーバ51〜59は、各々自分自身である当該装置に関する負荷分散情報のみを、その記憶部202に記憶する。
図12及び図13は、図4に示した負荷分散システム1の立ち上げシーケンスを示す図である。負荷分散システム1内の全装置を起動すると、下位層装置は、最上位層のサーバ11〜13に対してTCP/IPリンクの確立を要求することによって、最上位層のサーバ11〜13との間のTCP/IPリンクを確立する(ステップS101)。
そしてステップS102において、最上位層のサーバ11〜13の各々は、他の最上位層のサーバが正常に動作しているかどうかを判定する最上位サーバの死活監視処理を行う。
図14に、最上位層のサーバ11〜13上で動作する負荷分散制御プログラム104により実行される最上位サーバの死活監視処理のフローチャートを示す。最上位層のサーバ11〜13は、他の最上位層のサーバに対してTCP/IPメッセージを送信し、その送信が正常に送信されるか否かに応じてメッセージを送信した先のサーバが正常か否かを判定することにより、互いに死活監視を行う。例えば、サーバ11はサーバ12にTCP/IPメッセージを送信してサーバ12の死活監視を行い、サーバ12はサーバ13にTCP/IPメッセージを送信してサーバ13の死活監視を行い、サーバ13はサーバ11にTCP/IPメッセージを送信してサーバ11の死活監視を行う。以下、サーバ11における処理を例にして説明を行う。
ステップS111ではサーバ11は、TCP/IPレベルの死活監視メッセージを次の最上位層のサーバ12に送信する。
ステップS112ではサーバ11は、ステップS111の送信結果が正常であるか否かを判定する。送信結果が正常であるとき処理をステップS113へ進める。
ステップS113では、最上位層のサーバ11の記憶部102に記憶された最上位層のサーバ12に関する負荷分散情報中のデータ「通知済み情報」(ID=32)を参照する。そして、このデータが、「ON」すなわち「以前にクライアントC1及びC2並びに負荷分散システム1内の下位層装置に最上位層のサーバ12が異常であることを通知し、かつその後に正常になったことをまだ通知していないこと」を示すときは、最上位層のサーバ11は、ステップS114においてクライアントC1及びC2に最上位層のサーバ12が正常であることを通知し、ステップS115において負荷分散システム1内の下位層装置に最上位層のサーバ12が正常であることを通知する。
そしてステップS116において、最上位層のサーバ11は、その記憶部102に記憶された最上位層のサーバ12に関する負荷分散情報中のデータ「通知済み情報」の値を、「OFF」にする。データ「通知済み情報」の値が「OFF」にされることにより、「以前にクライアントC1及びC2並びに負荷分散システム1内の下位層装置に最上位層のサーバ12が正常であることを通知し、かつその後に異常になったことをまだ通知していないこと」が記憶される。その後、処理をステップS121へ進める。
ステップS111における判定において送信結果が異常であるときは、処理をステップS117へ進める。
ステップS117では、最上位層のサーバ11の記憶部102に記憶された最上位層のサーバ12に関する負荷分散情報中のデータ「通知済み情報」を参照する。そして、このデータが「OFF」を示すときは、最上位層のサーバ11は、ステップS118においてクライアントC1及びC2に最上位層のサーバ12が異常であることを通知し、ステップS119において負荷分散システム1内の下位層装置に最上位層のサーバ12が異常であることを通知する。
そしてステップS120において、最上位層のサーバ11は、記憶部102に記憶された最上位層のサーバ12に関する負荷分散情報中のデータ「通知済み情報」の値を、「ON」にする。
図12に戻り、最上位サーバの死活監視処理S102が終了し、最上位層のサーバ11〜13とその下位層にある全装置との間のTCP/IPリンクの接続の可否が確定すると、ステップS103において負荷分散制御プログラム104は、全ての下位層装置に対して負荷分散情報抽出要求を行い、これらの下位層装置に関する負荷分散情報を収集する処理をサーバ11〜13に実行させる。このとき併せて、負荷分散制御プログラム104は、各サーバ11〜13に、他の最上位層のサーバに関する負荷分散情報を収集する処理を実行させる。
サーバ11〜13が送信する負荷分散情報送信要求のデータ構成例を図15に示す。
本実施例において、負荷分散情報に関するその抽出要求や、送信(通知)、補正要求などの際に負荷分散システム1内でやりとりされる通信データは、以下に説明する一定のフォーマットに従って作成され、TCP/IPレベルで送受信される。この通信データは、上述した負荷分散情報に「要求種別」と「IDビットマップ情報」を付加した構成を有している。
「要求種別」は、送信された通信データの内容の種別を示すデータである。「要求種別」は、通信データの内容の種別が、負荷分散情報抽出要求、並びに後述する負荷分散情報返送、負荷分散情報補正要求、負荷分散情報補正完了通知、負荷分散情報通知、負荷分散情報通知への応答、装置の障害通知及び装置の復旧通知などのいずれであるかを示す。
「IDビットマップ情報」は、送信された通信データに含まれる負荷分散情報のうち、どのIDを持つデータが有効データであるかを示すビットマップ情報である。
図15に示す負荷分散情報抽出要求の場合、「要求種別」には、送信されたデータが負荷分散情報抽出要求であることを示す種別データが入力され、ID=1〜4であるデータのみが有効データとなる。そして負荷分散情報中のデータ「階層番号」(ID=1)及び「装置番号」(ID=2)によって、負荷分散情報の送信が要求される装置を特定する。
サーバ31〜39及び51〜59上で動作する制御プログラム204は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部202に記憶している自己に関する負荷分散情報205を最上位層のサーバ11〜13に返送する処理を、各々のサーバに実行させる。
同様に負荷分散装置21及び41〜43上で動作する負荷分散プログラム305は、負荷分散情報抽出要求を受信すると、各負荷分散装置が各々記憶部302に記憶している自己に関する負荷分散情報306を最上位層のサーバ11〜13に返送する処理を、各々の負荷分散装置に実行させる。
このとき例えば、制御プログラム204及び負荷分散プログラム305は、図14に示す死活監視処理により異常であると判定された最上位層のサーバ11〜13を、負荷分散情報の送信対象から除外するように、サーバ及び負荷分散装置を動作させる。このため制御プログラム204及び負荷分散プログラム305は、図14に示す死活監視処理において、いずれかの最上位層のサーバが異常である旨の通知を受けたことを、サーバの記憶部202及び負荷分散装置の記憶部302にそれぞれ記憶しておく。
下位層装置が返送する負荷分散情報のデータ構成例を図16に示す。「要求種別」には、送信されたデータが負荷分散情報の返送データであることを示す種別データが入力され、ID=1〜40を有するデータが全て有効データとなる。但し最下位層にあるサーバ51〜59から送信されるデータはID=33〜40を有するデータが無効データとなる。
サーバ11〜13の負荷分散制御プログラム104は、他の最上位層のサーバ及び下位層装置から送信された負荷分散情報を受信する処理と、受信した負荷分散情報を各々の記憶部102に記憶する処理とを、サーバ11〜13に実行させる。したがって負荷分散制御プログラム104及び通信インタフェース103は、特許請求の範囲に記載された負荷分散情報受信手段に対応する。
サーバ31〜39の制御プログラム204は、最上位層のサーバ11〜13へ自己の負荷分散情報を返送するのに併せて、それぞれのサーバに接続されかつ各サーバよりも1階層下にある負荷分散装置41〜43から負荷分散情報を収集する処理を、各サーバ31〜39に実行させる。サーバ31〜39は、収集した負荷分散情報をそれぞれの記憶部202に記憶する。
負荷分散装置21及び41〜43の負荷分散プログラム305は、最上位層のサーバ11〜13へ自己の負荷分散情報を返送するのに併せて、それぞれの負荷分散装置に接続されかつ各負荷分散装置よりも1階層下にあるサーバ31〜39及び51〜59から負荷分散情報を収集する処理を、各負荷分散装置21及び41〜43に実行させる。そして各負荷分散装置21及び41〜43は、収集した負荷分散情報をそれぞれの記憶部302に記憶する。
これら中間層にあるサーバ31〜39並びに負荷分散装置21及び41〜43と、これらの装置より1階層下にある装置との間で負荷分散情報を授受する際に行われる処理は、上述した最上位層11〜13と下位層装置との間で負荷分散情報を収集する処理と同様である。
ステップS104では、最上位層のサーバ11〜13の各々は、ステップS103で収集した負荷分散情報に含まれる矛盾をチェックしてこれを解消する。負荷分散情報に含まれる矛盾とは、例えば、ある1つの装置に関する負荷分散情報中のデータ「装置状態」(ID=5)の値が「障害」であるにも関わらず、データ「IPコネクション確立状態」(ID=13)の値が「IPコネクション確立」となっている等の、1つの装置における正常状態及び異常状態(若しくは無効状態)に関する矛盾であってよい。
また、負荷分散情報に含まれる矛盾の他の例は、装置間の上下関係に関する矛盾、すなわち上位装置に関する負荷分散情報中のデータ「装置状態」の値が「障害」又は「無効」であるのにも関わらず、その上位装置の下流にある装置に関する負荷分散情報中のデータ「装置状態」の値が「正常」である等の矛盾であってもよい。
図17に、負荷分散制御プログラム104により実行される負荷分散情報矛盾解消処理のフローチャートを示す。
ステップS130において、各最上位層のサーバ11〜13は、負荷分散システム1内の全装置のうち、各装置から前回に収集した負荷分散情報と、今回のステップS103で収集した負荷分散情報とを比べて、情報に変化があった装置を選択する。そしてここで選択した当該装置について、以下のステップS131〜S134を実行する。このように前回に収集した負荷分散情報と今回収集した負荷分散情報との間の相違点に絞って処理を行うことで、負荷分散情報矛盾解消処理を迅速に行うことができる。
各最上位層のサーバ11〜13は、ステップS131において当該装置に関する負荷分散情報中のデータ「処理受付数」(ID=11)、「CPU使用率」(ID=19)、「メモリ使用率」(ID=21)、「プロセス使用率」(ID=23)及び「リソース使用量」(ID=25)を参照し、これらの値に異常がある場合(例えばこれらの値が所定の許容範囲を超える場合)には、ステップS132にて負荷分散情報中のデータ「装置状態」の値を「障害」に設定する。
また各最上位層のサーバ11〜13は、ステップS131において当該装置に関する負荷分散情報中の「装置状態」を参照し、その値が「障害」である場合にはステップS132にて負荷分散情報中のデータ「IPコネクション確立状態」(ID=13)の値を「IPコネクション未確立」にする。
またさらに各最上位層のサーバ11〜13は、ステップS131において当該装置に関する負荷分散情報中のデータ「IPコネクション確立状態」を参照し、その値が「IPコネクション未確立」である場合にはステップS132にて負荷分散情報中のデータ「装置状態」(ID=5)の値を「障害」にする。
ステップS133では、各最上位層のサーバ11〜13は当該装置に関する負荷分散情報中のデータ「負荷分散方式(既存)」(ID=8)を参照し、当該装置に適用される負荷分散方式がHash法等でありかつこの負荷分散方式による処理要求の分配先が単独構成であるか否かを判定する。負荷分散方式がHash法等でありかつ分配先が単独構成である場合には、現在使用されている負荷分散方式を優先して使用するために、次のステップS134をスキップして処理を終了する。「負荷分散方式(既存)」が「対象外」である場合にも同様とする。
ステップS133において、当該装置に適用される負荷分散方式がラウンドロビン等であると判定され、または当該装置に適用される負荷分散方式がHash法等であっても処理要求の分配先が冗長な構成を有すると判定された場合には、処理をステップS134に移行する。
なお、ステップS131において、当該装置に適用される負荷分散方式がHash法等である場合には、現在使用されている負荷分散方式を優先して使用するために、処理要求の分配先が単独構成であるか否かに関わらず処理を終了してもよい。
ステップS134において各最上位層のサーバ11〜13は、当該装置及びその下流にある装置についての上下関係の矛盾を解消する上下関係矛盾解消処理を呼び出す。図18は、ステップS134にて呼び出されるサブルーチンである上下関係矛盾解消処理のフローチャートである。
ステップS140において各最上位層のサーバ11〜13は、当該装置が最下位層にある装置であるか否かを判定し、当該装置が最下位層にある場合には何もせずに処理を終了する。
ステップS141において各最上位層のサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「装置状態」の値が「正常」であるか否かを判定し、「正常」である場合には何もせずに処理を終了する。
ステップS142において各最上位層のサーバ11〜13は、当該装置に接続されかつ当該装置よりも1つ下位層にある装置を選択する。そして選択した下位装置に関する負荷分散情報中のデータ「装置状態」が「正常」であればその値を「無効」にし、また選択した下位装置に関する負荷分散情報中のデータ「上位装置からのルート状態」(ID=6)の値も「無効」にする(ステップS143及びステップS144)。
ステップS145では、選択した下位装置及びその下流にある装置についての上下関係の矛盾を解消するように上下関係矛盾解消処理の再帰呼び出しを行う。
ステップS146では、当該装置に接続されかつ当該装置よりも1つ下位層装置の全てについてステップS143〜S145を実行したか否かを判定する。そして全ての下位装置について実行した場合には処理を終了し、そうでない場合には、次の下位装置を選択して(ステップS147)、処理をステップS143に戻す。
図12に戻りステップS105では、各最上位層のサーバ11〜13は負荷分散情報補正処理を実行し、サーバ11〜13の記憶部102に記憶された負荷分散情報を補正する。負荷分散情報補正処理では、負荷分散システム1内のある装置が、その下流の末端のサーバまで処理要求を送信できる有効な経路を有するか否かをチェックし、このような有効経路を有しない場合にはその装置に対する処理要求を無効にする。また負荷分散情報補正処理では、負荷分散システム1内で負荷分散処理を行う各装置(本構成例では各負荷分散装置21及び41〜43)が行う負荷分散処理の負荷分散方式の変更を行う。
図19は、最上位層のサーバ11〜13上で動作する負荷分散制御プログラム104により実行される負荷分散情報補正処理のフローチャートである。
ステップS160においてサーバ11〜13は、負荷分散システム1内の下から2番目の階層(本構成例では第4層)を処理対象層として選択する。そしてステップS161においてサーバ11〜13は、選択された階層中のいずれかの装置を、処理対象とすべき当該装置として選択する。
ステップS162においてサーバ11〜13は、当該装置に関する負荷分散情報を記憶部102から読み出し、負荷分散情報中のデータ「1階層下のルート状態」(ID=39)を参照する。そしてサーバ11〜13は、データ「1階層下のルート状態」の値が全て「無効」であるか否か、すなわち当該装置に接続されかつ当該装置よりも1階層下の装置の全てが、負荷分散システム1の末端へ処理要求を送信できる有効な経路を有していないかどうかを判定する。
データ「1階層下のルート状態」の値が全て「無効」と判定された場合には、当該装置はその下流の末端に処理要求を送信できる有効な経路を有さないことを意味する。したがってサーバ11〜13は、ステップS163において当該装置の負荷分散情報中のデータ「装置状態」の値を「無効」に設定する。
また、ステップS164において、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、当該装置に関するデータの値を「無効」にする。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」(ID=6)の値を「無効」にする。
ステップS165においてサーバ11〜13は、ステップS163及びステップS164によって変更された負荷分散情報の内容を、その記憶部202に記憶される負荷分散情報にマージする。その後、処理はステップS172に移る。
ステップ162において、データ「1階層下のルート状態」が全て「無効」でないと判定された場合には、サーバ11〜13は、当該装置に関する負荷分散情報中のデータ「装置状態」の値が「正常」であるか否かを判定する。
データ「装置状態」が「正常」でないと判定された場合、サーバ11〜13はステップS164において、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」の中の、当該装置に関するデータの値を「無効」にする。また当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にする。
ステップS165においてサーバ11〜13は、ステップS164によって変更された負荷分散情報の内容を、記憶部202に記憶される負荷分散情報にマージする。その後、処理はステップS172に移る。
データ「装置状態」が「正常」であると判定された場合、サーバ11〜13は、ステップS166において、当該装置に関する負荷分散情報中のデータ「負荷分散方式(既存)」を参照する。
当該装置に対してその上流の装置が行う負荷分散方式がラウンドロビン等である場合は、サーバ11〜13はステップS168にて負荷分散方式変更処理を呼び出す。ステップS169においてサーバ11〜13は、ステップS168によって変更された負荷分散情報の内容を、記憶部202に記憶される負荷分散情報にマージする。その後、処理はステップS172に移る。
当該装置に対してその上流の装置が行う負荷分散方式がHash法等である場合は、サーバ11〜13はステップS170にて分配先指定時負荷分散方式変更処理を呼び出す。ステップS171においてサーバ11〜13は、ステップS170によって変更された負荷分散情報の内容を、記憶部202に記憶される負荷分散情報にマージする。その後、処理はステップS172に移る。
負荷分散方式変更処理及び分配先指定時負荷分散方式変更処理については後述する。当該装置が負荷分散の対象外である場合には、処理はステップS172に移る。
ステップS172において、サーバ11〜13は処理対象層として現在選択されている階層に含まれる全ての装置について、ループS162〜S173を実行したか否かを判定する。処理対象層の全ての装置についてループS162〜S173を実行したと判定された場合には処理はステップS174に移る。そうでない場合にはサーバ11〜13はステップS173において、処理対象層中のまだ処理対象となっていない装置を当該装置として選択し、処理をステップS162に戻る。
ステップS174において、サーバ11〜13は負荷分散システム1の全階層について、ループS161〜S175を実行したか否かを判定する。全階層についてループS161〜S175を実行したと判定された場合には処理が終了する。そうでない場合には現在の処理対象層よりも1階層上の層を処理対象層として選択し(ステップS175)、処理をステップS161に戻す。
サーバ11〜13は、負荷分散制御プログラム104を実行し上述の負荷分散情報補正処理を行うことにより、負荷分散システム1の各装置について、各装置がその下流の末端に処理要求を送信できる有効な経路を持っているか否かが下位層から順に決定する。そしてある装置Xがその下流の末端に処理要求を送信できる有効な経路を持っていないとき、サーバ11〜13は、装置Xの1階層上の装置に関する負荷分散情報において、データ「1階層下のルート状態」の中の装置Xに関するデータの値を「無効」にする。すなわちサーバ11〜13は、装置Xからその下流の末端に処理要求を送信する経路が「無効」であることを、装置Xへ処理要求を送信する上位の装置に関する負荷分散情報に記録する。
これによりサーバ11〜13は、負荷分散システム1の各装置がその下流の末端に処理要求を送信できる有効な経路を持っているか否かに応じて、その装置への処理要求の送信の可否を決定する。したがって負荷分散制御プログラム104は、特許請求の範囲に記載された送信可否決定手段に対応する。
図20及び図21は、図19に示す負荷分散情報補正処理のステップS168により呼び出されるサブルーチンである補正分散方式変更処理のフローチャートである。
ステップS180において、サーバ11〜13は、負荷分散情報補正処理を前回行ったときから現在までに、処理対象である当該装置と同じ階層の他の装置に適用される負荷分散処理方式に変更があったか否かを判定する。
変更があったと判定された場合には、当該装置に対しても同じ負荷分散処理を行うことが好ましいと仮定できるので、ステップS181においてサーバ11〜13は、当該装置に適用する負荷分散方式を変更する。
負荷分散方式の変更に際して、サーバ11〜13は、記憶部202に記憶された負荷分散情報のうち、当該装置に対して処理要求を分配する1階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替」(ID=10)の値を、当該装置と同じ階層の他の装置に適用されている負荷分散方式の種別と同じ値にセットする。また、この1階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」(ID=9)の値を「OFF」から「ON」に変更する。
このように負荷分散情報を変更することによって、後に述べるようにこの変更された負荷分散情報が当該装置の1階層上の装置に送信されたとき、この負荷分散情報は、負荷分散方式を変更すべきことを当該装置の1階層上の装置に知らせることになる。
ステップS182では、サーバ11〜13は、当該装置が中間層のサーバであるときは、受け付けた処理要求の数とそのうち下位層への送信が完了した数との関係をチェックする。当該装置が最下位層のサーバ51〜59であるときは、受け付けた処理要求の数とそのうち処理が完了した数との関係をチェックする処理数チェック処理を実行する。図22に処理数チェック処理のフローチャートを示す。
ステップS200では、サーバ11〜13は、当該装置に関する負荷分散情報中のデータ「処理受付数」と「処理実行数」とを比較する。処理数チェック処理は、処理受付数が処理実行数よりも大きくない場合に、戻り値として当該装置に対する負荷分散処理に問題が無いことを示す値「1」を呼び出し元に返す(ステップS201)。処理受付数が処理実行数よりも大きい場合には負荷分散処理に問題があることを示す値「0」を呼び出し元に返す(ステップS202)。
図20及び図21に戻りステップS183において処理数チェック処理の戻り値が「1」であるときは、サーバ11〜13は処理をステップS195に移し、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。そして当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして処理を終了する。
ステップS183において処理数チェック処理の戻り値が「0」であるときは、サーバ11〜13は処理をステップS184に移す。ステップS184では、当該装置が有するコネクション数がチェックされる。図23にコネクション数チェック処理のフローチャートを示す。
ステップS210及びステップS211では、サーバ11〜13は、当該装置に関する負荷分散情報中のデータ「IPコネクション確立状態」(ID=13)とデータ「残りIPコネクション数」(ID=15)を参照する。
IPコネクションが確立していない場合又は残りIPコネクション数がない場合は、コネクション数チェック処理は、当該装置への処理要求の分配を無効とすべきことを示す値「−1」を戻り値として呼び出し元に返す(ステップS212)。IPコネクションが確立しておりかつ残りIPコネクション数があるときは、コネクション数チェック処理は、戻り値として負荷分散方式を変更するか否か判定することが必要であることを示す値「0」を呼び出し元に返す(ステップS213)。
図21に戻りステップS185において、コネクション数チェック処理の戻り値が「−1」であるときは、サーバ11〜13は処理をステップS194に移し、当該装置の負荷分散情報中のデータ「装置状態」の値を「無効」に設定する。また、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」のうち当該装置に関するデータの値を「無効」に設定する。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にする。
ステップS185においてコネクション数チェック処理の戻り値が「0」であるときは、サーバ11〜13は処理をステップS186に移す。ステップS186では、当該装置に適用される負荷分散方式を、通常のラウンドロビンからLeast Connectionへと変更すべきか否かが判定される。図24は、ステップS186で呼び出される処理分散方式の変更要否の判定処理のフローチャートである。
ステップS220においてサーバ11〜13は、記憶部102に記憶されている当該装置に関する負荷分散情報中のデータ「Least Connectionへの切替に使用するカウント数」(ID=17)(以下、ステップS186の説明において単に「カウント数」と記す)を1だけ増加させる。
ステップS221においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「Least Connectionへの切替に使用するカウント数の閾値」(ID=18)(以下、ステップS186の説明において単に「閾値」と記す)を参照し、カウント数と閾値を比較する。
ステップS221での比較においてカウント数が閾値を超えるとき、呼び出し元への戻り値が「要」にセットされ(ステップS223)、そうでない場合には戻り値は「不要」にセットされる(ステップS224)。
ステップS225においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「Least Connectionへの切替に使用するカウント保有時間」(ID=16)(以下、ステップS186の説明において単に「保有時間」と記す)を参照し、カウントを開始してからこの保有時間が経過したか否かを判定する。
ステップS225の判定において保有時間が経過している場合には、ステップS226においてサーバ11〜13は「カウント数」の値を0に戻す。
図21のステップS187において、サーバ11〜13は、ステップS186の処理からの戻り値が「不要」であるときは処理をステップS189に移す。
一方で戻り値が「要」であるときは、ステップS188においてサーバ11〜13は、当該装置に処理要求を分配する1階層上の負荷分配装置の負荷分散方式を、Least Connection に変更する。このときサーバ11〜13は、記憶部202に記憶された負荷分散情報のうち、当該装置に対して処理要求を分配する1階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替」(ID=10)の値を「Least Connection」に変更する。また、この1階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」(ID=9)の値を「OFF」から「ON」に変更する。
そしてステップS195においてサーバ11〜13は、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。また、当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして処理を終了する。
このようにサーバ11〜13は、負荷分散制御プログラム104を実行して図20及び図21に示す負荷分散方式変更処理を行うことにより、サーバ等である装置Xの負荷状態が所定の基準、すなわち「処理受付数が処理実行数を超える状態が所定時間以上持続する」という基準を満たすとき、装置Xへ負荷を分配する負荷分散装置等の上位装置が採用する負荷分散方式を変更する。したがって、負荷分散制御プログラム104は、特許請求の範囲に記載された負荷分散方式変更手段に対応する。
ステップS189においてサーバ11〜13は、当該装置のその他の負荷状態をチェックする。図25〜図28にステップS189の負荷チェック処理の例を示す。
図25は、負荷チェック処理S189として呼び出されるCPU使用率チェック処理のフローチャートである。
ステップS230においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「CPU使用率」(ID=19)とデータ「CPU使用率閾値」(ID=20)を比較する。CPU使用率チェック処理は、CPU使用率がCPU使用率閾値よりも小さくない場合に、当該装置への処理要求の分配を無効とすべきことを示す戻り値「−1」を呼び出し元に返し(ステップS231)、CPU使用率がCPU使用率閾値よりも小さい場合には、戻り値として値「0」を呼び出し元に返す(ステップS232)。
図26は、図21に示す負荷チェック処理S189として呼び出されるメモリ使用率チェック処理のフローチャートである。
ステップS240においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「メモリ使用率」(ID=21)とデータ「メモリ使用率閾値」(ID=22)を比較する。メモリ使用率チェック処理は、メモリ使用率がメモリ使用率閾値よりも小さくない場合に戻り値「−1」を呼び出し元に返し(ステップS241)、メモリ使用率がメモリ使用率閾値よりも小さい場合には、戻り値「0」を呼び出し元に返す(ステップS242)。
図27は、図21に示す負荷チェック処理S189として呼び出されるプロセス使用率チェック処理のフローチャートである。
ステップS250においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「プロセス使用率」(ID=23)とデータ「プロセス使用率閾値」(ID=24)を比較する。プロセス使用率チェック処理は、プロセス使用率がプロセス使用率閾値よりも小さくない場合に、戻り値「−1」を呼び出し元に返し(ステップS251)、プロセス使用率がプロセス使用率閾値よりも小さい場合には、戻り値「0」を呼び出し元に返す。
図28は、図21に示す負荷チェック処理S189として呼び出される残リソース量チェック処理のフローチャートである。
ステップS260においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「リソース使用量」(ID=25)とデータ「リソース使用量閾値」(ID=26)を比較する。プロセス使用率チェック処理は、プロセス使用率がプロセス使用率閾値よりも大きく残りリソース量が所定の許容値よりも小さい場合には、戻り値「−1」を呼び出し元に返し(ステップS261)、プロセス使用率がプロセス使用率閾値よりも小さい場合には、戻り値「0」を呼び出し元に返す(ステップS262)。
負荷チェック処理S189は、これらの図25〜図28に示す処理を組み合わせて行ってもよい。このときCPU使用率チェック処理、メモリ使用率チェック処理、プロセス使用率チェック処理、残リソース量チェック処理の順序で行ってよい。
図21に戻りステップS190において、負荷チェック処理の戻り値が「−1」であるときは、サーバ11〜13は処理をステップS194に移し、当該装置の負荷分散情報中のデータ「装置状態」を「無効」に設定する。また、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」のうち当該装置に関するデータの値を「無効」に設定する。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にする。
ステップS190において負荷チェック処理の戻り値が「0」であるときは、サーバ11〜13は処理をステップS191に移す。ステップS191では、当該装置に適用される負荷分散方式を、ラウンドロビンやLeast Connectionから重み付け法へと変更すべきか否かが判定される。
ステップS191では、図24を参照して説明した処理分散方式の変更要否の判定処理と同様の処理を行う。
ステップS220においてサーバ11〜13は、記憶部102に記憶されている当該装置に関する負荷分散情報中のデータ「重み付け法への切替に使用するカウント数」(ID=28)(以下、ステップS191の説明において単に「カウント数」と記す)を1だけ増加させる。
ステップS221においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「重み付け法への切替に使用するカウント数の閾値」(ID=29)(以下、ステップS191の説明において単に「閾値」と記す)を参照し、カウント数と閾値を比較する。
ステップS221での比較においてカウント数が閾値を超えるとき、呼び出し元への戻り値が「要」にセットされ(ステップS223)、そうでない場合には戻り値は「不要」にセットされる(ステップS224)。
ステップS225においてサーバ11〜13は、当該装置に関する負荷分散情報中のデータ「重み付け法への切替に使用するカウント保有時間」(ID=27)(以下、ステップS191の説明において単に「保有時間」と記す)を参照し、カウントを開始してからこの保有時間が経過したか否かを判定する。
ステップS225の判定において保有時間が経過している場合には、ステップS226においてサーバ11〜13は「カウント数」の値を0に戻す。
図21のステップS192において、サーバ11〜13は、ステップS191の処理からの戻り値が「不要」であるときは処理をステップS195に移す。
一方で戻り値が「要」であるときは、ステップS193においてサーバ11〜13は、当該装置に処理要求を分配する1階層上の負荷分配装置の負荷分散方式を、重み付け法に変更する。このときサーバ11〜13は、記憶部202に記憶された負荷分散情報のうち、当該装置に対して処理要求を分配する1階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替」の値を「重み付け法」に変更する。また、この1階層上の装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」の値を「OFF」から「ON」に変更する。
そしてステップS195においてサーバ11〜13は、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして処理を終了する。
図29は、図19に示す負荷分散情報補正処理のステップS170により呼び出されるサブルーチンである分散先指定時処理のフローチャートである。
分散先指定時処理が呼び出される場合、当該装置に対してその上流の装置が行う負荷分散方式がHash法等であるため、処理要求の分配先がそれぞれの処理要求に応じて指定されている。したがって各サーバの負荷状態のチェックのみを行い負荷分散方式の変更は行わない。
ステップS270では、サーバ11〜13は当該装置に関する負荷分散情報中のデータ「負荷分散方式(既存)」(ID=8)を参照し、Hash法等による処理要求の分配先が冗長な構成を有しているか否かを判定する。分配先が冗長な構成を有していない場合には、ステップS276においてサーバ11〜13は、当該装置に接続された1階層上の装置に関する負荷分散情報中の「1階層下のルート状態」のうち当該装置に関するデータの値を「有効」に設定する。当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」にして、処理を終了する。
分配先が冗長な構成を有している場合には、ステップS271においてサーバ11〜13は、図22を参照して説明した処理数チェック処理を行う。
ステップS272において処理数チェック処理の戻り値が「1」であるときは、サーバ11〜13はステップS276を実行する。ステップS272において処理数チェック処理の戻り値が「0」であるときは、サーバ11〜13は処理をステップS273に移す。ステップS273では、図23を参照して説明したコネクション数チェック処理を行う。
ステップS274において処理数チェック処理の戻り値が「0」であるときは、サーバ11〜13はステップS276を実行する。S274において、コネクション数チェック処理の戻り値が「−1」であるときは、サーバ11〜13は処理をステップS275に移し、当該装置の負荷分散情報中のデータ「装置状態」の値を「無効」に設定する。また、当該装置に接続された1階層上の装置に関する負荷分散情報中のデータ「1階層下のルート状態」のうち当該装置に関するデータの値を「無効」に設定する。さらに当該装置の負荷分散情報中のデータ「上位装置からのルート状態」の値を「無効」にして処理を終了する。
なお、ステップS270において、Hash法等による処理要求の分配先が冗長な構成を有しているか否かに関わらず処理をステップS276を実行するように負荷分散制御プログラム104を作成してもよい。
図12の負荷分散情報補正処理(ステップS105)が完了すると、処理は図13に示すステップS106へ移る。ステップS106では最上位層のサーバ11〜13は、負荷分散システム1内の最下位層の装置以外の下位層装置に、それぞれの記憶部202及び302に記憶される負荷分散情報の補正を要求する。このとき、サーバ11〜13は、全ての下位層装置に負荷分散情報補正要求を送る必要はなく、ステップS104及びステップS105によって最上位層のサーバ11〜13側で負荷分散情報が補正されるなどによって、負荷分散情報補正の補正が必要な装置にのみ送ってもよい。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ11〜13の記憶部102に記憶され、かつステップS104及びステップS105によって変更された、下位層装置に関する負荷分散情報を含んだ負荷分散情報補正要求を、それぞれの装置へ送信する処理をサーバ11〜13に行わせる。
サーバ11〜13から下位層装置に送信される負荷分散情報補正要求のデータ構成例を図30に示す。「要求種別」には、送信されたデータが負荷分散情報補正要求であることを示す種別データが入力され、IDが「1」〜「10」、「16」〜「18」、「20」、「22」、「24」、「26」〜「40」であるデータが有効データとなる。但し最下位層にあるサーバ51〜59から送信されるデータはIDが「33」〜「40」であるデータが無効データとなる。
サーバ11〜13から各下位層装置に送信される負荷分散情報補正要求は、送信先の下位層装置がその記憶部202又は203に保持している負荷分散情報と、同じ装置に関する負荷分散情報を含んでいる。
すなわち、最下位層のサーバ51〜59に送信される負荷分散情報補正要求は、送信先のサーバ自身に関する負荷分散情報のみを含んでいる。中間層のサーバ31〜39並びに負荷分散装置21及び41〜43へ送信される負荷分散情報補正要求は、送信先の装置自身に関する負荷分散情報に加えて、送信先の装置に接続されかつ当該装置よりも1つ下の層にある装置の負荷分散情報も含んでいる。
サーバ31〜39及び51〜59上で実行される制御プログラム204は、これらのサーバに、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部202に記憶されている負荷分散情報205の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。さらに制御プログラム204は、この負荷分散情報に従って、より上位の装置から受信した処理要求を1階層下の装置へ送信する処理をサーバ31〜39に行わせる。
このようにサーバ31〜39及び51〜59が、記憶部202に記憶されている負荷分散情報205の値を、最上位層のサーバ11〜13から送信された負荷分散情報が持つ値へ更新することにより、これらサーバ31〜39及び51〜59が保持する負荷分散情報が最上位層のサーバ11〜13が保持する負荷分散情報に整合する。
そして、サーバ31〜39は、1階層下の装置へ処理要求を送信する際に、負荷分散情報中のデータ「1階層下のルート状態」を参照する。そして、これら1階層下の装置のうちの装置Xが、末端のサーバ51〜59まで処理要求を送信できる有効経路を有していないときは、サーバ31〜39は装置Xへの処理要求の送信を行わない。
負荷分散装置21及び41〜43上で実行される負荷分散プログラム305は、これらの負荷分散装置に、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部302に記憶されている負荷分散情報306の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理と、この負荷分散情報に従って、より上位の装置から受信した処理要求を1階層下の装置へ分配する処理を行わせる。
このように負荷分散装置21及び41〜43が、記憶部302に記憶されている負荷分散情報306の値を、最上位層のサーバ11〜13から送信された負荷分散情報が持つ値に更新することにより、これら負荷分散装置21及び41〜43が保持する負荷分散情報が最上位層のサーバ11〜13が保持する負荷分散情報に整合する。
そして、負荷分散装置21及び41〜43は、1階層下の装置へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、負荷分散装置21及び41〜43は、これら1階層下の装置のうちの装置Xが、末端のサーバ51〜59まで処理要求を送信できる有効経路を有していないとき、装置Xに対して処理要求の分配を行わない。
このように、サーバ11〜13から下位装置へ送信される負荷分散情報補正要求は、ある下位層装置からその下流にある末端へと至る有効経路の有無に応じて、その下位層装置への処理要求の送信の可否を定める情報を含んでいる。
したがって負荷分散情報補正要求は、特許請求の範囲に記載される可否通知に対応する。また、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる負荷分散制御プログラム104及びサーバ11〜13の通信インタフェース103は、特許請求の範囲に記載される送信可否通知手段に対応する。
同様に負荷分散装置21及び41〜43上で実行される負荷分散プログラム305は、特許請求の範囲に記載される負荷分配手段に対応し、負荷分散プログラム305及び負荷分散装置21及び41〜43の通信インタフェース303は、特許請求の範囲に記載される可否通知受信手段に対応する。
また、負荷分散装置21及び41〜43は、1階層下の装置へ処理要求を分配する際に、負荷分散情報中のデータ「負荷分散方式切替フラグ」(ID=9)を参照する。ある負荷分散装置に関する負荷分散情報中のデータ「負荷分散方式切替フラグ」の値が「ON」であるとき、すなわちこの負荷分散装置の負荷分散方式が切り替えられるべきであると、サーバ11〜13から通知されたとき、この負荷分散装置は、その負荷分散方式を負荷分散情報中のデータ「負荷分散方式切替」(ID=10)が示す方式に変更する。
このように、サーバ11〜13から下位装置へ送信される負荷分散情報補正要求は、サーバ11〜13によって変更された負荷分散方式を負荷分散装置へ知らせる情報を含んでいる。したがって負荷分散情報補正要求は、特許請求の範囲に記載される負荷分散方式変更通知に対応する。また、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる負荷分散制御プログラム104及びサーバ11〜13の通信インタフェース103は、特許請求の範囲に記載される負荷分散方式通知手段に対応する。
同様に負荷分散プログラム305及び負荷分散装置21及び41〜43の通信インタフェース303は、特許請求の範囲に記載される分散方式変更通知受信手段に対応する。
下位層装置は、負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、サーバ11〜13へ負荷分散情報補正完了通知を送信する。負荷分散情報補正完了通知の内容は、その「要求種別」のデータが送信されたデータが負荷分散情報補正完了通知であることを示す種別データであることを除いて、負荷分散情報補正の内容と同じである。
負荷分散システム1は、立ち上げ終了後、ステップS102〜ステップS106を定期的に繰り返す。
以下、図4に示した負荷分散システム1における障害発生時と障害からの復旧時の動作を説明する。図31は、図4に示した負荷分散システム1に障害が生じた状態を示す図であり、第4層の負荷分散装置41に障害が生じた後に第3層のサーバ39にも障害が生じた状態を示している。図32及び図33は、図4に示した負荷分散システム1における障害発生時のシーケンスを示す図である。
負荷分散装置41に障害が生じた場合には負荷分散装置41からの応答信号が途絶えるので、ステップS280において、負荷分散装置41へ処理要求を送信する1階層上のサーバ31〜33は、負荷分散装置41に障害が生じたことを検出する。サーバ31〜33上で動作する制御プログラム204は、記憶部202に記憶された負荷分散装置41に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ31〜33自身に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、負荷分散装置41に関するデータの値を「無効」にする処理と、をサーバ31〜33に行わせる。
その後制御プログラム204は、ステップS281において、負荷分散装置41に障害が生じたことを最上位層のサーバ11〜13へ通知する処理をサーバ31〜33に行わせ、ステップS282において、サーバ31〜33自身及び負荷分散装置41に関する負荷分散情報を最上位層のサーバ11〜13へ送信する処理をサーバ31〜33に行わせる。
図34に障害通知のデータ構成例を示す。「要求種別」には、このデータが障害通知であることを示す種別データが設定され、ID=1〜40を有するデータが全て有効データとなる。但し最下位層にあるサーバ51〜59から送信されるデータはID=33〜40を有するデータが無効データとなる。
また、負荷分散情報通知のデータ構成は、図16に示す負荷分散情報の返送データの構成と同様であり、その「要求種別」データに本データが負荷分散情報通知であることを示す種別データが設定されている。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ31〜33から負荷分散情報通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。
そして負荷分散制御プログラム104は、ステップS283において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、障害が生じた負荷分散装置41に接続されかつその下流に配置されたサーバ51〜サーバ53に関する負荷分散情報中のデータ「上位装置からのルート状態」の値が「無効」に変更される。
また、負荷分散制御プログラム104は、ステップS284において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、負荷分散装置41へ処理要求を送信するサーバ31〜33に関する負荷分散情報中のデータ「1階層下のルート状態」の値が「無効」に変更される。またサーバ31〜33は負荷分散装置41以外に下層への経路を持たないので、これらサーバ31〜33の1階層上の負荷分散装置21に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、サーバ31〜33へのルート状態を示す値が「無効」に変更され、サーバ31〜33に関する負荷分散情報中のデータ「上位装置からのルート状態」の値も「無効」に変更される。
負荷分散制御プログラム104は、ステップS285において、サーバ31〜33へ負荷分散情報通知への応答を送信する処理をサーバ11〜13に行わせる。そしてステップS286において負荷分散制御プログラム104は、ステップS282〜ステップS284の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」である負荷分散装置21へ、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
負荷分散装置21上で実行される負荷分散プログラム305は、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部302に記憶されている負荷分散情報306の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を、負荷分散装置21に行わせる(ステップS287)。
またこれ以後、負荷分散プログラム305は、更新された負荷分散情報に従って、より上位の装置から受信した処理要求を1階層下の装置へ分配する処理を、負荷分散装置21に行わせる。
負荷分散装置21は、1階層下のサーバ31〜39へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、負荷分散装置21は、これら1階層下のサーバ31〜39のうち末端のサーバ51〜59へ処理要求を送信できる有効経路を有していないサーバ31〜33に対しては、処理要求の送信を行わない。
負荷分散装置41は負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、ステップS288においてサーバ11〜13へ負荷分散情報補正完了通知を送信する。
図33において、サーバ39に障害が生じた場合にはサーバ39からの応答信号が途絶えるので、ステップS290において、サーバ39へ処理要求を分配する1階層上の負荷分散装置21は、サーバ39に障害が生じたことを検出する。負荷分散装置21上で動作する負荷分散プログラム305は、記憶部302に記憶されたサーバ39に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、負荷分散装置21自身に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、サーバ39に関するデータの値を「無効」にする処理と、を負荷分散装置21に行わせる。
その後負荷分散プログラム305は、ステップS291において、サーバ39に障害が生じたことを最上位層のサーバ11〜13へ通知する処理を負荷分散装置21に行わせ、ステップS292において、負荷分散装置21自身及びサーバ39に関する負荷分散情報を最上位層のサーバ11〜13へ送信する負荷分散装置21に行わせる。
サーバ11〜13上で実行される負荷分散制御プログラム104は、負荷分散装置21負荷分散情報通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。
そして負荷分散制御プログラム104は、ステップS293において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。
また、負荷分散制御プログラム104は、ステップS294において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、サーバ39へ処理要求を送信する負荷分散装置21に関する負荷分散情報中のデータ「1階層下のルート状態」のうちサーバ39に関する値が「無効」に変更される。ここで負荷分散装置21はサーバ39以外にも下層への経路を持つので、これら負荷分散装置21の1階層上のサーバ11〜13に関する負荷分散情報中のデータ「1階層下のルート状態」や、負荷分散装置21に関する負荷分散情報中のデータは変更されない。
負荷分散制御プログラム104は、ステップS295において、サーバ31〜33へ負荷分散情報通知への応答を送信する処理をサーバ11〜13に送信する。
その後、負荷分散装置21は、1階層下のサーバ31〜39へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。サーバ39に関するデータ「階層下のルート状態」の値は「無効」であるので、負荷分散装置21は、サーバ39に対しては処理要求の送信を行わない。
図35及び図36は、図4に示した負荷分散システム1における障害からの復旧時のシーケンスを示す図である。
図35において、負荷分散装置41が障害から復旧したとき、ステップS300において、負荷分散装置41上で実行される負荷分散プログラム305は、記憶部302に記憶された負荷分散装置41に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部302に記憶されたサーバ51〜サーバ53に関する負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」に設定する処理とを、負荷分散装置41に実行させる。
その後、負荷分散プログラム305は、ステップS301において、負荷分散装置41が復旧したことを知らせる復旧通知を最上位層のサーバ11〜13へ送信する処理を負荷分散装置41に実行させる。復旧通知は、負荷分散装置41がステップS300にて変更した、負荷分散装置41及びサーバ51〜53に関する負荷分散情報を含んでいる。
図37に復旧通知のデータ構成例を示す。「要求種別」には、このデータが復旧通知であることを示す種別データが設定され、ID=1〜40を有するデータが全て有効データとなる。但し最下位層にあるサーバ51〜59から送信されるデータはID=33〜40を有するデータが無効データとなる。
サーバ11〜13上で実行される負荷分散制御プログラム104は、負荷分散装置41から復旧通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。そして負荷分散制御プログラム104は、ステップS302において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。その結果、負荷分散装置41の復旧による負荷分散情報の変化により生じる、記憶部102内に記憶された負荷分散情報の矛盾が解消される。
その後負荷分散制御プログラム104は、ステップS303において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、負荷分散装置41へ処理要求を送信するサーバ31〜33に関する負荷分散情報中のデータ「1階層下のルート状態」の値が「有効」に変更される。またサーバ31〜33の1階層上の負荷分散装置21に関する負荷分散情報中のデータ「1階層下のルート状態」のうちサーバ31〜33に関するデータの値が「有効」に変更され、サーバ31〜33に関する負荷分散情報中のデータ「上位装置からのルート状態」の値も「有効」に変更される。
ステップ304において負荷分散制御プログラム104は、ステップS301〜S303の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」であるサーバ31〜33へ、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
サーバ31〜33上で実行される制御プログラム204は、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部202に記憶されている負荷分散情報205の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、サーバ31〜33に行わせる(ステップS305)。またこれ以後、制御プログラム204は、更新された負荷分散情報に従って、サーバ11〜サーバ13から受信した処理要求をサーバ51〜53へ分配する処理を、サーバ31〜33に行わせる。
その後サーバ31〜33は、1階層下の負荷分散装置41へ処理要求を送信する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。このデータの値はサーバ11〜13により「有効」に変更されているので、サーバ31〜33はサーバ51〜53への処理要求の分配を再開する。
サーバ31〜33は、ステップS356においてサーバ11〜13へ負荷分散情報補正完了通知を送信する。
ステップ307において負荷分散制御プログラム104は、ステップS302及びステップS303にて負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」である負荷分散装置21へ、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
負荷分散装置21上で実行される負荷分散プログラム305は、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部302に記憶されている負荷分散情報306の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、負荷分散装置21に行わせる(ステップS308)。またこれ以後、負荷分散プログラム305は、更新された負荷分散情報に従って、より上位の装置から受信した処理要求を1階層下の装置へ送信する処理を、負荷分散装置21に行わせる。
負荷分散装置21は、1階層下のサーバ31〜39へ処理要求を送信する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そのうちサーバ31〜33に関するデータの値は「有効」に変更されているので、負荷分散装置21はサーバ31〜33への処理要求の送信を再開する。
その後負荷分散装置21は、ステップS309においてサーバ11〜13へ負荷分散情報補正完了通知を送信する。
図36において、サーバ39が障害から復旧したとき、ステップS310において、サーバ39上で実行される制御プログラム204は、記憶部202に記憶されたサーバ39に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部202に記憶された負荷分散装置41に関する負荷分散情報中のデータ「上位装置からのルート状態」の値を「有効」に設定する処理とを、サーバ39に実行させる。
その後制御プログラム204は、ステップS311において、サーバ39が復旧したことを知らせる復旧通知を最上位層のサーバ11〜13へ送信する処理をサーバ39に実行させる。復旧通知は、サーバ39がステップS310にて変更したサーバ39及び負荷分散装置41に関する負荷分散情報を含んでいる。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ39から復旧通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。そして負荷分散制御プログラム104は、ステップS312において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。その結果、サーバ39の復旧による負荷分散情報の変化により生じる、記憶部102内に記憶された負荷分散情報の矛盾が解消される。
その後、負荷分散制御プログラム104は、ステップS313において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、サーバ39へ処理要求を分配する負荷分散装置21に関する負荷分散情報中のデータ「1階層下のルート状態」のうちサーバ39に関するデータの値が「有効」に変更される。
ステップ314において負荷分散制御プログラム104は、ステップS311〜S313の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」である負荷分散装置21へ、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
負荷分散装置21上で実行される負荷分散プログラム305は、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部302に記憶されている負荷分散情報306の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、負荷分散装置21に行わせる(ステップS315)。またこれ以降、負荷分散プログラム305は、更新された負荷分散情報に従って、より上位の装置から受信した処理要求を1階層下の装置へ分配する処理を、負荷分散装置21に行わせる。
負荷分散装置21は、1階層下のサーバ31〜39へ処理要求を送信する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そのうちサーバ39に関するデータの値はサーバ11〜13により「有効」に変更されているので、負荷分散装置21はサーバ39への処理要求の送信を再開する。
そしてステップS316において、負荷分散装置21は、サーバ11〜13へ負荷分散情報補正完了通知を送信する。
図38は、本発明の第2実施例による階層型負荷分散システム1の概略構成図である。本構成例では、サーバ上で動作する負荷分散アプリケーションによって負荷分散処理を行う。
最上位層(第1層)にあるサーバ11〜13はクライアントC1及びC2が要求した処理要求を受け付ける。サーバ11〜13は、その上で実行される負荷分散アプリケーションプログラムにより、受信した処理要求を1つ下の層(第2層)に配置されたサーバ31〜39へと分配して送信する。負荷分散アプリケーションプログラムによる負荷分散処理は、各種の負荷分散方式のうち状況に応じた方式に従って行われる。
第2層に配置されたサーバ31〜33は、その上で実行される負荷分散アプリケーションプログラムにより、受信した処理要求を1つ下の層(第3層)に配置されたサーバ51〜53へと分配して送信する。同様にサーバ34〜36は受信した処理要求をサーバ54〜56へと分配して送信し、サーバ37〜39は受信した処理要求をサーバ57〜59へと分配して送信する。末端のサーバ51〜59はこれらの処理要求を処理する。
図39は、図38に示す負荷分散システムにおいて最上位層に配置されるサーバ11の概略構成図である。サーバ12及び13の構成もサーバ11と同様である。
本構成によるサーバ11は、図5に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。記憶部102には、通信インタフェース103を介して受信した処理要求を、サーバ11に接続されている下位層のサーバ31〜39へと分配する負荷分散処理をCPU101に実行させるアプリケーションプログラムである負荷分散プログラム106を有している。
サーバ11は、クライアントC1及びC2が発した処理要求を通信インタフェース103を介して受信し、受信した処理要求を下位層のサーバ31〜39へと分配し、分配された処理要求を通信インタフェース103を介して各々サーバ31〜39へと送信する。
また、サーバ11〜13の記憶部102に記憶される負荷分散情報105には、負荷分散システム11に含まれる全てのサーバ11〜13、31〜39及び51〜59に関する負荷分散情報が含まれる。
図40は、図38に示す負荷分散システムにおいて中間層又は下位層に配置されるサーバ31の概略構成図である。サーバ32〜39の構成もサーバ31と同様である。
本構成によるサーバ31は、図6に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。記憶部202には、通信インタフェース203を介して受信した処理要求を、サーバ31に接続されている下位層のサーバ51〜53へと分配する負荷分散処理をCPU201に実行させるアプリケーションプログラムである負荷分散プログラム206を有している。
サーバ31は、サーバ11〜13から送信された処理要求を通信インタフェース203を介して受信し、受信した処理要求を下位層のサーバ51〜59へと分配し、分配された処理要求を通信インタフェース203を介して各々サーバ51〜59へと送信する。
また、中間層に配置されたサーバ31〜39の記憶部202に記憶される負荷分散情報205には、自分自身である当該装置に関する負荷分散情報と、当該装置に接続されかつ当該装置よりも1つ下の層にある装置に関する負荷分散情報とが含まれる。例えばサーバ31〜39の記憶部202記憶される負荷分散情報205には、サーバ31及びサーバ51〜53に関する負荷分散情報が含まれる。
また、最下位層のサーバ51〜59は、図6を参照して説明した構成と同様である。
以下、第2実施例による負荷分散システム1の説明においてこれらサーバ31〜39及び51〜59をまとめて「下位層装置」と記すことがある。
図41は、図38に示した負荷分散システムにおける立ち上げシーケンスを示す図である。下位層装置は、最上位層のサーバ11〜13に対してTCP/IPリンクの確立を要求することによって、最上位層のサーバ11〜13との間のTCP/IPリンクを確立する(ステップS101)。
そしてステップS102において、最上位層のサーバ11〜13の各々は、図14を参照して説明した最上位サーバの死活監視処理を行う。
最上位層のサーバ11〜13とその下位層にある全装置との間のTCP/IPリンクの接続の可否が確定すると、ステップS103において負荷分散制御プログラム104は、図11に示した立ち上げシーケンスと同様に、負荷分散システム1内の全ての装置に関する負荷分散情報を収集する処理を実行させる。
サーバ31〜39で動作する負荷分散プログラム206は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部202に記憶している自己に関する負荷分散情報205を最上位層のサーバ11〜13に返送する処理を、各々のサーバに実行させる。このとき負荷分散プログラム206は、それぞれのサーバに接続されかつ各サーバよりも1階層下にあるサーバ51〜59から負荷分散情報を収集する処理を、各サーバ31〜39に実行させる。サーバ31〜39は、収集した負荷分散情報をそれぞれの記憶部202に記憶する。
またサーバ51〜59上で動作する制御プログラム204は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部202に記憶している自己に関する負荷分散情報205を最上位層のサーバ11〜13に返送する処理を、各々のサーバに実行させる。
返送される負荷分散情報のデータ構成は図16を参照して説明した構成と同様である。
サーバ11〜13の負荷分散制御プログラム104は、他の最上位層のサーバ及び下位層装置から送信された負荷分散情報を受信する処理と、受信した負荷分散情報を各々の記憶部102に記憶する処理とを、サーバ11〜13に実行させる。
ステップS104では、最上位層のサーバ11〜13の各々は、ステップS103で収集した負荷分散情報に含まれる矛盾を解消する。この処理は図17及び図18を参照して説明した負荷分散情報矛盾解消処理を実行することにより行われる。
ステップS105では、各最上位層のサーバ11〜13は図19〜図29を参照して説明した負荷分散情報補正処理を実行し、サーバ11〜13の記憶部102に記憶された負荷分散情報を補正する。
そしてサーバ11〜13上で実行される負荷分散プログラム106は、補正された負荷分散情報に従って、クライアントC1及びC2から受信した処理要求を1階層下の装置へ送信する処理をサーバ11〜13に行わせる。
このとき、サーバ11〜13は、1階層下のサーバ31〜39へ処理要求を送信する際に、負荷分散情報中のデータ「1階層下のルート状態」を参照する。そして、これら1階層下のサーバ31〜39のうちサーバXが、末端のサーバ51〜59まで処理要求を送信できる有効経路を有していないときは、サーバ11〜13はこのサーバXへの処理要求の分配を行わない。
ステップS106では最上位層のサーバ11〜13は、負荷分散システム1内の最下位層の装置以外の下位層装置であって負荷分散情報が補正された下位層装置に対して、図13に示したシーケンスと同様にそれぞれの記憶部202に記憶される負荷分散情報の補正を要求する。
サーバ31〜39上で実行される負荷分散プログラム206は、これらのサーバに、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部202に記憶されている負荷分散情報205の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。
またこれ以後、負荷分散プログラム206は、更新された負荷分散情報に従って、サーバ11〜13から受信した処理要求を下位層のサーバへ分配する処理を、サーバ31〜39に行わせる。
このときサーバ31〜39は、負荷分散情報中のデータ「1階層下のルート状態」を参照する。そして、これら1階層下のサーバ31〜39のうちサーバXが、末端のサーバ51〜59まで処理要求を送信できる有効経路を有していないときは、サーバ31〜39はサーバXへの処理要求の分配を行わない。
サーバ11〜13及び31〜39は、1階層下の装置へ処理要求を分配する際に、負荷分散情報中のデータ「負荷分散方式切替フラグ」を参照する。サーバXに関する負荷分散情報中のデータ「負荷分散方式切替フラグ」の値が「ON」であるとき、このサーバXは、その負荷分散方式を、負荷分散情報中のデータ「負荷分散方式切替」が示す方式に変更する。
また、サーバ51〜59上で実行される制御プログラム204は、これらのサーバに、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部202に記憶されている負荷分散情報205の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。
下位層装置は負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、図13に示したシーケンスと同様にサーバ11〜13へ負荷分散情報補正完了通知を送信する。そして負荷分散システム1は、立ち上げ終了後、ステップS102〜ステップS106を定期的に繰り返す。
以下、図38に示した負荷分散システム1における障害発生時と障害からの復旧時の動作を説明する。図42は、図38に示した負荷分散システム1に障害が生じた状態を示す図であり、第3層のサーバ51〜53に障害が生じた後に第2層のサーバ39にも障害が生じた状態を示している。図43は、図38に示した負荷分散システムにおける障害発生時のシーケンスを示す図である。
サーバ51〜53に障害が生じた場合にはこれらサーバからの応答信号が途絶えるので、ステップS340において、1階層上のサーバ31〜33は、サーバ51〜53に障害が生じたことを検出する。サーバ31〜33上で動作する負荷分散プログラム206は、記憶部202に記憶されたサーバ51〜53に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ31〜33自身に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、サーバ51〜53に関するデータの値を「無効」にする処理と、をサーバ31〜33に行わせる。
その後負荷分散プログラム206は、ステップS341において、サーバ51〜53に障害が生じたことを最上位層のサーバ11〜13へ知らせる障害通知を送信する処理をサーバ31〜33に行わせ、ステップS342において、サーバ31〜33自身及びサーバ51〜53に関する負荷分散情報を最上位層のサーバ11〜13へ送信する処理をサーバ31〜33に行わせる。ここで送信される障害通知及び負荷分散情報通知のデータ構成は、それぞれ図34及び図16を参照して説明したデータ構成と同様である。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ31〜33から負荷分散情報通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。
そして負荷分散制御プログラム104は、ステップS343において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。
また、負荷分散制御プログラム104は、ステップS345において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、サーバ11〜13に関する負荷分散情報中のデータ「1階層下のルート状態」のうちサーバ31〜33に関するデータの値が「無効」に変更される。
負荷分散制御プログラム104は、ステップS346において、サーバ31〜33へ負荷分散情報通知への応答を送信する処理をサーバ11〜13に行わせる。
その後サーバ11〜13は、負荷分散プログラム106によって1階層下のサーバ31〜39へ対する負荷分散処理を行う際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、サーバ11〜13は、これら1階層下のサーバ31〜39のうち末端のサーバ51〜59へ処理要求を送信できる有効経路を有していないサーバ31〜33に対しては、処理要求の送信を行わない。
次に、サーバ39に障害が生じた場合にはサーバ39からの応答信号が途絶えるので、1階層上のサーバ11〜13は、サーバ39に障害が生じたことを検出する。サーバ11〜13上で動作する負荷分散プログラム106は、記憶部102に記憶されたサーバ39に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ11〜13自身に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、サーバ39に関するデータの値を「無効」にする処理と、をサーバ11〜13に行わせる。
そして、サーバ11〜13上で動作する負荷分散制御プログラム104は、ステップS347において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。また、負荷分散制御プログラム104は、ステップS348において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。
その後サーバ11〜13は、負荷分散プログラム106によって1階層下のサーバ31〜39へ対する負荷分散処理を行う際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。そして、サーバ11〜13は、これら1階層下のサーバ31〜39のうち末端のサーバ51〜59へ処理要求を送信できる有効経路を有していないサーバ39に対しては、処理要求の送信を行わない。
図44は、図38に示した負荷分散システム1における障害からの復旧時のシーケンスを示す図である。サーバ51〜53が障害から復旧したとき、ステップS351において、サーバ51〜53上で実行される制御プログラム204は、記憶部202に記憶されたサーバ51〜53自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理を、サーバ51〜53に実行させる。
その後制御プログラム204は、ステップS352において、サーバ51〜53が復旧したことを知らせる復旧通知を最上位層のサーバ11〜13へ送信する処理をサーバ51〜53に実行させる。復旧通知は、ステップS351にて変更されたサーバ51〜53に関する負荷分散情報を含んでいる。
ここで送信される復旧通知のデータ項目は、図37を参照して説明した復旧通知と同じである。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ51〜53から復旧通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。
そして負荷分散制御プログラム104は、ステップS353において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。その結果、サーバ51〜53の復旧による負荷分散情報の変化により生じる、記憶部102内に記憶された負荷分散情報の矛盾が解消される。
負荷分散制御プログラム104は、ステップS354において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、サーバ31〜33に関する負荷分散情報中のデータ「1階層下のルート状態」のうちサーバ51〜53に関するデータの値が「有効」に変更される。またサーバ11〜13に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、サーバ31〜33に関するデータの値が「有効」に変更され、サーバ31〜33に関する負荷分散情報中のデータ「上位装置からのルート状態」の値も「有効」に変更される。
ステップS355において負荷分散制御プログラム104は、ステップS352〜S354の処理によって負荷分散情報が補正された下位層装置のうち、負荷分散情報中のデータ「上位装置からのルート状態」が「有効」であるサーバ31〜33へ、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる。この負荷分散情報補正要求には補正された負荷分散情報が含まれている。
サーバ31〜33上で実行される負荷分散プログラム206は、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部202に記憶されている負荷分散情報205の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理とを、サーバ31〜33に行わせる(ステップS356)。
またこれ以後、負荷分散プログラム206は、更新された負荷分散情報に従って、サーバ11〜13から受信した処理要求を下位層のサーバへ分配する処理を、サーバ31〜33に行わせる。
その後サーバ31〜33は、サーバ51〜59へ処理要求を分配する際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。データ「階層下のルート状態」のうちサーバ51〜53に関するデータの値は「有効」に変更されているので、サーバ31〜33はサーバ51〜53への処理要求の送信を再開する。
またサーバ11〜13は、負荷分散プログラム106によってサーバ31〜39への負荷分散処理を行う際に、負荷分散情報中のデータ「階層下のルート状態」を参照する。データ「階層下のルート状態」のうちサーバ31〜33に関するデータの値は「有効」に変更されているので、サーバ11〜13はサーバ31〜33への処理要求の送信を再開する。
ステップS357においてサーバ31〜33へ負荷分散情報補正完了通知を送信する。
その後、サーバ39が障害から復旧したとき、ステップS358において、サーバ39上で実行される負荷分散プログラム206は、記憶部202に記憶されたサーバ39自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部202に記憶されたサーバ51〜53に関する負荷分散情報中のデータ「上位装置からのルート状態」を「有効」に設定する処理とを、サーバ39に実行させる。
その後負荷分散プログラム206は、ステップS359において、サーバ39が復旧したことを知らせる復旧通知を最上位層のサーバ11〜13へ送信する処理をサーバ39に実行させる。復旧通知は、サーバ39がステップS357にて変更した、サーバ31〜33及び51〜53に関する負荷分散情報を含んでいる。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ39から復旧通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。
そして負荷分散制御プログラム104は、ステップS360において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。その結果、サーバ39の復旧による負荷分散情報の変化により生じる、記憶部102内に記憶された負荷分散情報の矛盾が解消される。
負荷分散制御プログラム104は、ステップS361において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、サーバ11〜13に関する負荷分散情報中のデータ「1階層下のルート状態」のうちサーバ39に関するデータの値が「有効」に変更される。
その後、サーバ11〜13は、サーバ31〜39への負荷分散処理を行う際に負荷分散情報中のデータ「階層下のルート状態」を参照する。データ「階層下のルート状態」のうちサーバ39に関するデータの値は「有効」に変更されているので、サーバ11〜13はサーバ39への処理要求の送信を再開する。
図38に示す構成において、サーバ11〜13及び31〜39による負荷分散処理を、これらサーバ上で動作する負荷分散ミドルウエアにて実行してもよい。
図45は、負荷分散ミドルウエアにより負荷分散処理を行う最上位層に配置されるサーバ11の概略構成図である。サーバ12及び13の構成もサーバ11と同様である。本構成によるサーバ11は、図5に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。以下、特に説明がない限り同じ参照符号が付された構成要素同士は同じ機能を有する。
記憶部102には、通信インタフェース103を介して受信した処理要求を、サーバ11に接続されている下位層のサーバ31〜39へと分配する負荷分散処理をCPU101に実行させる負荷分散ミドルウエア107を有している。
負荷分散ミドルウエア107は、自身の動作のために使用する負荷分散情報108を、記憶部102内に記憶する。この負荷分散情報108には、サーバ11自身に関する負荷分散情報と、サーバ11が処理要求を分配する階層のサーバ31〜39に関する負荷分散情報を含む。
図46は、負荷分散ミドルウエアにより負荷分散処理を行う中間層又は下位層に配置されるサーバ31の概略構成図である。サーバ32〜39の構成もサーバ31と同様である。本構成によるサーバ31は、図6に示すサーバと同様の構成を有しており、同一の構成要素には同じ参照番号を付して説明を省略する。以下、特に説明がない限り同じ参照符号が付された構成要素同士は同じ機能を有する。
記憶部202には、通信インタフェース203を介して処理要求を受信した制御プログラム204からこの処理要求を受信して、サーバ31に接続されている下位層のサーバ51〜53へと分配する負荷分散処理をCPU201に実行させる負荷分散ミドルウエア207を有している。
負荷分散ミドルウエア207は、自身の動作のために使用する負荷分散情報208を、記憶部202内に記憶する。この負荷分散情報208には、サーバ31自身に関する負荷分散情報と、サーバ31が処理要求を分配する階層のサーバ51〜53に関する負荷分散情報を含む。
図47は、負荷分散ミドルウエアにより負荷分散処理を行う場合の立ち上げシーケンスを示す図である。
下位層装置は、最上位層のサーバ11〜13に対してTCP/IPリンクの確立を要求することによって、最上位層のサーバ11〜13との間のTCP/IPリンクを確立する(ステップS101)。
そしてステップS102において、最上位層のサーバ11〜13の各々は、図14を参照して説明した最上位サーバの死活監視処理を行う。
最上位層のサーバ11〜13とその下位層にある全装置との間のTCP/IPリンクの接続の可否が確定すると、ステップS103において負荷分散制御プログラム104は、図12に示した立ち上げシーケンスと同様に、サーバ31〜39及びに51〜59に関する負荷分散情報を収集する処理を実行させる。
サーバ31〜39及び51〜59上で動作する制御プログラム204は、負荷分散情報抽出要求を受信すると、各サーバが各々記憶部202に記憶している自己に関する負荷分散情報205を最上位層のサーバ11〜13に返送する処理を、各々のサーバに実行させる。このときサーバ31〜39上で動作する制御プログラム204は、それぞれのサーバに接続されかつ各サーバよりも1階層下にあるサーバ51〜59から負荷分散情報を収集する処理を、各サーバ31〜39に実行させる。サーバ31〜39は、収集した負荷分散情報をそれぞれの記憶部202に記憶する。
返送される負荷分散情報のデータ構成は図16を参照して説明した構成と同様である。
サーバ11〜13の負荷分散制御プログラム104は、他の最上位層のサーバ及び下位層装置から送信された負荷分散情報を受信する処理と、受信した負荷分散情報を各々の記憶部102に記憶する処理とを、サーバ11〜13に実行させる。
ステップS104では、最上位層のサーバ11〜13の各々は、図17及び図18を参照して説明した負荷分散情報矛盾解消処理を実行する。またステップS105では、各最上位層のサーバ11〜13は図19〜図29を参照して説明した負荷分散情報補正処理を実行する。
そしてサーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ11〜13に関する負荷分散情報と、1階層下のサーバ31〜39に関する負荷分散情報を、サーバ11〜13で実行される負荷分散ミドルウエア107へ通知する処理を、サーバ11〜13に実行させる。負荷分散ミドルウエア107は、負荷分散ミドルウエア107用に用意された記憶部102内の記憶領域に、これら通知された負荷分散情報を記憶する処理をサーバ11〜13に行わせる。
ステップS106では最上位層のサーバ11〜13は、負荷分散システム1内の最下位層の装置以外の下位層装置であって負荷分散情報が補正された下位層装置に対して、図13に示したシーケンスと同様にそれぞれの記憶部202に記憶される負荷分散情報の補正を要求する。
サーバ31〜39上で実行される制御プログラム204は、これらのサーバに、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部202に記憶されている負荷分散情報205の値を負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理を行わせる。
また制御プログラム204は、それぞれのサーバ自身に関する負荷分散情報と、それぞれのサーバ自身に接続された1階層下のサーバに関する負荷分散情報を、サーバ31〜39で実行される負荷分散ミドルウエア207へ通知する処理を、サーバ31〜39に実行させる。負荷分散ミドルウエア207は、負荷分散ミドルウエア207用に用意された記憶部202内の記憶領域に、これら通知された負荷分散情報を記憶する処理をサーバ31〜39に行わせる。
以後、サーバ11〜13上で実行される負荷分散ミドルウエア107は、補正された負荷分散情報に従ってクライアントC1及びC2から受信した処理要求を1階層下の装置へ送信する処理と、をサーバ11〜13に行わせる。
またサーバ31〜39上で実行される負荷分散ミドルウエア207は、制御プログラム204から受信した処理要求を下位層のサーバへ分配する処理を、サーバ31〜39に行わせる。これら負荷分散ミドルウエア107及び207は、上述した負荷分散プログラム106及び206と同様の負荷分散処理を行う。
下位層装置は負荷分散情報補正要求を受信し、自己が記憶する負荷分散情報を更新し終えると、図13に示したシーケンスと同様にサーバ11〜13へ負荷分散情報補正完了通知を送信する。そして負荷分散システム1は、立ち上げ終了後、ステップS102〜ステップS106を定期的に繰り返す。
図48及び図49は、負荷分散ミドルウエアにより負荷分散処理を行う場合の障害発生時のシーケンスを示す図である。図42による例と同様に、第3層のサーバ51〜53に障害が生じた後に第2層のサーバ39にも障害が生じた場合を考える。
図48において、サーバ51〜53に障害が生じた場合にはこれらサーバからの応答信号が途絶えるので、ステップS371において、1階層上のサーバ31〜33は、サーバ51〜53に障害が生じたことを検出する。サーバ31〜33上で動作する制御プログラム204は、記憶部202に記憶されたサーバ51〜53に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ31〜33自身に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、サーバ51〜53に関するデータの値を「無効」にする処理と、をサーバ31〜33に行わせる。
その後制御プログラム204は、ステップS372において、サーバ51〜53に障害が生じたことを最上位層のサーバ11〜13へ知らせる障害通知を送信する処理をサーバ31〜33に行わせ、ステップS373において、サーバ31〜33自身及びサーバ51〜53に関する負荷分散情報を最上位層のサーバ11〜13へ送信する処理をサーバ31〜33に行わせる。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ31〜33から負荷分散情報通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理と、をサーバ11〜13に行わせる。
そして負荷分散制御プログラム104は、ステップS374において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。
また、負荷分散制御プログラム104は、ステップS375において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、記憶部102に記憶する負荷分散情報のうち、サーバ11〜13に関する負荷分散情報中のデータ「1階層下のルート状態」のうちサーバ31〜33に関するデータの値が「無効」に変更される。
負荷分散制御プログラム104は、ステップS376において、サーバ31〜33へ負荷分散情報通知への応答を送信する処理をサーバ11〜13に行わせる。
一方でステップS377において、サーバ31〜33上で動作する制御プログラム204は、ステップS371で変更した負荷分散情報をサーバ31〜33上で動作する負荷分散ミドルウエア207へ通知する処理を、サーバ31〜33に実行させる。
負荷分散ミドルウエア207は、負荷分散ミドルウエア207用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理(ステップS378)と、制御プログラム204へ応答メッセージを送信する処理(ステップS379)とを、サーバ31〜33に実行させる。
またステップS380において、サーバ11〜13上で動作する負荷分散制御プログラム104は、ステップS373〜S375の処理によって変更された負荷分散情報を負荷分散ミドルウエア107へ通知する処理を、サーバ11〜13に実行させる。
負荷分散ミドルウエア107は、負荷分散ミドルウエア107用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理(ステップS381)と、負荷分散制御プログラム104へ応答メッセージを送信する処理(ステップS382)とを、サーバ11〜13に実行させる。
以後、サーバ11〜13上で実行される負荷分散ミドルウエア107は、補正された負荷分散情報に従ってクライアントC1及びC2から受信した処理要求を1階層下の装置へ送信する処理と、をサーバ11〜13に行わせる。
またサーバ31〜39上で実行される負荷分散ミドルウエア207は、制御プログラム204から受信した処理要求を下位層のサーバへ分配する処理を、サーバ31〜39に行わせる。
図49において、サーバ39に障害が生じた場合にはサーバ39からの応答信号が途絶えるので、1階層上のサーバ11〜13は、サーバ39に障害が生じたことを検出する。
このときサーバ11〜13上で動作する負荷分散制御プログラム104は、記憶部102に記憶されたサーバ39に関する負荷分散情報中のデータ「装置状態」の値を「障害」に変更する処理と、サーバ11〜13自身に関する負荷分散情報中のデータ「1階層下のルート状態」のうち、サーバ39に関するデータの値を「無効」にする処理と、をサーバ11〜13に行わせる。
サーバ11〜13上で動作する負荷分散制御プログラム104は、ステップS390において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。また、負荷分散制御プログラム104は、ステップS391において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。
またステップS392において、負荷分散制御プログラム104は、サーバ39の障害検出からステップS391までに行われた変更が反映された負荷分散情報を負荷分散ミドルウエア107へ通知する処理を、サーバ11〜13に実行させる。
負荷分散ミドルウエア107は、負荷分散ミドルウエア107用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理(ステップS393)と、負荷分散制御プログラム104へ応答メッセージを送信する処理(ステップS394)とを、サーバ11〜13に実行させる。
以後、サーバ11〜13上で実行される負荷分散ミドルウエア107は、補正された負荷分散情報に従ってクライアントC1及びC2から受信した処理要求を1階層下の装置へ送信する処理と、をサーバ11〜13に行わせる。
図50及び図51は、負荷分散ミドルウエアにより負荷分散処理を行う場合の障害からの復旧時のシーケンスを示す図である。
図50において、サーバ51〜53が障害から復旧したとき、ステップS400において、サーバ51〜53上で実行される制御プログラム204は、記憶部202に記憶されたサーバ51〜53自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理を、サーバ51〜53に実行させる。
その後制御プログラム204は、ステップS401において、サーバ51〜53が復旧したことを知らせる復旧通知を最上位層のサーバ11〜13へ送信する処理をサーバ51〜53に実行させる。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ51〜53から復旧通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。そして負荷分散制御プログラム104は、ステップS402において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。その結果、サーバ51〜53の復旧による負荷分散情報の変化により生じる、記憶部102内に記憶された負荷分散情報の矛盾が解消される。
負荷分散制御プログラム104は、ステップS403において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、サーバ31〜33に関する負荷分散情報中のデータ「1階層下のルート状態」及び「上位装置からのルート状態」、サーバ11〜13に関する負荷分散情報中のデータ「1階層下のルート状態」が変更される。
ステップS404において負荷分散制御プログラム104は、ステップS401〜S403の処理により負荷分散情報が補正されたサーバ31〜33へ、負荷分散情報補正要求を送信する処理をサーバ11〜13に行わせる。
サーバ31〜33上で実行される制御プログラム204は、サーバ11〜13からの負荷分散情報補正要求を受信する処理と、記憶部202に記憶されている負荷分散情報205の値をこの負荷分散情報補正要求に含まれている負荷分散情報が持つ値へ更新する処理(ステップS405)と、負荷分散情報補正完了通知をサーバ11〜13へ送信する処理(ステップS406)とを、サーバ31〜33に行わせる。
ステップS407において、サーバ31〜33上で動作する制御プログラム204は、ステップS405で変更した負荷分散情報をサーバ31〜33上で動作する負荷分散ミドルウエア207へ通知する処理を、サーバ31〜33に実行させる。
負荷分散ミドルウエア207は、負荷分散ミドルウエア207用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理(ステップS408)と、制御プログラム204へ応答メッセージを送信する処理(ステップS409)とを、サーバ31〜33に実行させる。
またステップS410において、サーバ11〜13上で動作する負荷分散制御プログラム104は、ステップS401〜S403の処理により変更された負荷分散情報を負荷分散ミドルウエア107へ通知する処理を、サーバ11〜13に実行させる。
負荷分散ミドルウエア107は、負荷分散ミドルウエア107用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理(ステップS411)と、負荷分散制御プログラム104へ応答メッセージを送信する処理(ステップS412)とを、サーバ11〜13に実行させる。
図51において、サーバ39が障害から復旧したとき、ステップS420において、サーバ39上で実行される制御プログラム204は、記憶部202に記憶されたサーバ39自身に関する負荷分散情報中のデータ「装置状態」の値を「正常」に設定する処理と、記憶部202に記憶されたサーバ51〜サーバ53に関する負荷分散情報中のデータ「上位装置からのルート状態」を「有効」に設定する処理とを、サーバ39に実行させる。その後制御プログラム204は、ステップS421において、サーバ39が復旧したことを知らせる復旧通知を最上位層のサーバ11〜13へ送信する処理をサーバ39に実行させる。
サーバ11〜13上で実行される負荷分散制御プログラム104は、サーバ39から復旧通知を受信する処理と、記憶部102に記憶する負荷分散情報の値を、受信した負荷分散情報が持つ値に更新する処理とをサーバ11〜13に行わせる。
そして負荷分散制御プログラム104は、ステップS422において、図17に示す負荷分散情報矛盾解消処理をサーバ11〜13に行わせる。その結果、サーバ39の復旧による負荷分散情報の変化により生じる、記憶部102内に記憶された負荷分散情報の矛盾が解消される。
負荷分散制御プログラム104は、ステップS423において、図19に示す負荷分散情報補正処理をサーバ11〜13に行わせる。その結果、サーバ11〜13に関する負荷分散情報中のデータ「1階層下のルート状態」が変更される。
ステップS424において、負荷分散制御プログラム104は、ステップS421〜S423の処理により変更された負荷分散情報を負荷分散ミドルウエア107へ通知する処理を、サーバ11〜13に実行させる。
負荷分散ミドルウエア107は、負荷分散ミドルウエア107用の記憶領域に記憶される負荷分散情報の値を、通知された負荷分散情報の値に更新する処理(ステップS425)と、負荷分散制御プログラム104へ応答メッセージを送信する処理(ステップS426)とを、サーバ11〜13に実行させる。
以上、本発明を特にその好ましい実施の形態を参照して詳細に説明したが、本発明の容易な理解のために、本発明の具体的な形態を以下に付記する。
(付記1)
各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムであって、
前記ノードのいずれかであるマスタノードは、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とする負荷分散システム。
(付記2)
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする付記1に記載の負荷分散システム。
(付記3)
前記マスタノードは、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する送信可否決定手段と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する送信可否通知手段と、
を備えることを特徴とする付記2に記載の負荷分散システム。
(付記4)
前記マスタノードは、
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する負荷分散方式変更手段と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する負荷分散方式通知手段と、
を更に備えることを特徴とする付記2又は3に記載の負荷分散システム。
(付記5)
前記マスタノードは、
前記負荷分散情報記憶手段に当該ノードについて記憶した前記負荷分散情報と、当該ノードが有している前記負荷分散情報と、の間の整合処理を行うデータ整合手段を、更に備えることを特徴とする付記2又は3に記載の負荷分散システム。
(付記6)
前記データ整合手段は、前記マスタノードが負荷分散処理を開始した時に及び/又は周期的に前記整合処理を行うことを特徴とする付記5に記載の負荷分散システム。
(付記7)
前記マスタノードは、
前記ノードのいずれかが障害状態となったことをその1階層上の他のノードが通知する障害通知を受信する障害通知受信手段を有し、
前記データ整合手段は、前記障害通知を受信したとき前記整合処理を行うことを特徴とする付記5に記載の負荷分散システム。
(付記8)
前記マスタノードは、
前記ノードのいずれかが障害状態から復旧したことをそのノードが通知する復旧通知を受信する復旧通知受信手段を有し、
前記データ整合手段は、前記復旧通知を受信したとき前記整合処理を行うことを特徴とする付記5に記載の負荷分散システム。
(付記9)
前記マスタノードは、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報に存在する矛盾をチェックするデータチェック手段を、更に備えることを特徴とする付記2又は3に記載の負荷分散システム。
(付記10)
前記データチェック手段は、前回受信した負荷分散情報と今回受信した負荷分散情報と間の相違点をチェックすることを特徴とする付記9に記載の負荷分散システム。
(付記11)
前記データチェック手段は、各前記ノードについて各々記憶された前記負荷分散情報が、それぞれの前記ノードを正常及び無効のいずれと示すかに関して、前記負荷分散情報に存在する矛盾をチェックすることを特徴とする付記9に記載の負荷分散システム。
(付記12)
前記データチェック手段は、各前記ノードが末端へ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記9に記載の負荷分散システム。
(付記13)
前記データチェック手段は、最上位層のノードから各前記ノードへ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記9に記載の負荷分散システム。
(付記14)
前記データチェック手段は、当該ノードから末端へ至る有効経路が無いとき、又は最上位層のノードから当該ノードへ至る有効経路が無いとき、当該ノードについて前記負荷分散情報記憶手段に記憶された前記負荷分散情報に当該ノードが無効であることを設定することを特徴とする付記9に記載の負荷分散システム。
(付記15)
前記負荷分散方式変更手段は、当該負荷分散手段により前記処理要求が分配される各ノードの負荷状態が所定の許容範囲内に維持されている間、当該負荷分散手段の負荷分散方式を前記現状の負荷分散方式に維持することを特徴とする付記4に記載の負荷分散システム。
(付記16)
前記負荷分散方式変更手段は、当該負荷分散手段の負荷分散方式が、当該負荷分散手段にて受信した各前記処理要求の分配先をそれぞれの処理要求に応じて決定する方式であるとき、当該負荷分散手段の負荷分散方式を現状の負荷分散方式に維持することを特徴とする付記4に記載の負荷分散システム。
(付記17)
前記階層構造の最上位層に、複数のノードがそれぞれ前記マスタノードとして配置され、
これらマスタノードの各々は、他のマスタノードが障害であるか否かを相互に監視する死活監視手段を備える、付記2又は3に記載の負荷分散システム。
(付記18)
前記マスタノードは、前記他のマスタノードの障害通知及び/又は障害復旧通知を、前記負荷分散システムに処理要求を送信するクライアント装置及び/又は下位層のノードへ送信する障害通知手段を備えることを特徴とする付記17に記載の負荷分散システム。
(付記19)
前記下位層ノードは、
前記障害通知及び/又は障害復旧通知を受信する受信手段と、
前記所定の負荷分散情報と各前記マスタノードの死活状態を記憶する記憶手段と、
記憶する所定の負荷分散情報を、障害状態でない前記マスタノードへ送信する負荷分散情報送信手段と、
を備えることを特徴とする付記18に記載の負荷分散システム。
(付記20)
前記負荷分散手段は、上位層の前記ノードから送信された処理要求を1つ下位の層の前記ノードへと分配する負荷分散装置、並びに前記ノード上にて実行されることにより上位層の前記ノードから送信された処理要求を1つ下位の層の前記ノードへと分配する負荷分散処理をこのノードに実行させるアプリケーションプログラム及びミドルウエアのいずれかであることを特徴とする付記1〜19のいずれか一項に記載の負荷分散システム。
(付記21)
付記1又は2に記載の負荷分散システムにおける前記マスタノードとして動作するノード装置であって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する負荷分散情報受信手段と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
を備えることを特徴とするノード装置。
(付記22)
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する送信可否決定手段と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する送信可否通知手段と、
を備えることを特徴とする付記21に記載のノード装置。
(付記23)
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する負荷分散方式変更手段と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する負荷分散方式通知手段と、
を更に備えることを特徴とする付記21又は22に記載のノード装置。
(付記24)
付記3に記載の負荷分散システムにおける前記負荷分散手段として動作する負荷分散装置であって、
前記可否通知を前記マスタノードから受信する可否通知受信手段と、
受信した前記可否通知に従って処理要求の分配を行う負荷分配手段と、
を備えることを特徴とする負荷分散装置。
(付記25)
付記4、15又は16に記載の負荷分散システムにおける前記負荷分散手段として動作する負荷分散装置であって、
前記負荷分散方式変更通知を前記マスタノードから受信する分散方式変更通知受信手段と、
受け付けた処理要求の分配を変更された前記負荷分散方式に従って行う負荷分配手段と、
を備えることを特徴とする負荷分散装置。
(付記26)
各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける、前記ノードのいずれかであるマスタノードで実行される負荷分散制御プログラムであって、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信する処理と、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する処理と、
を前記マスタノードに実行させることを特徴とする負荷分散制御プログラム。
(付記27)
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする付記26に記載の負荷分散制御プログラム。
(付記28)
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定する処理と、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を知らせる可否通知を送信する処理と、
を前記マスタノードに実行させることを特徴とする付記27に記載の負荷分散制御プログラム。
(付記29)
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更する処理と、
変更された前記負荷分散方式を知らせる負荷分散方式変更通知を当該負荷分散手段へ送信する処理と、
を前記マスタノードに実行させることを特徴とする付記27又は28に記載の負荷分散制御プログラム。
(付記30)
付記3に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記可否通知を前記マスタノードから受信する処理と、
受信した前記可否通知に従って前記処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。
(付記31)
付記4、15又は16に記載の負荷分散システムのいずれかのノードにおいて前記負荷分散手段として実行される負荷分散プログラムであって、
前記負荷分散方式変更通知を前記マスタノードから受信する処理と、
前記負荷分散方式変更通知により変更された前記負荷分散方式に従って、処理要求の分配を行う処理と、
を前記いずれかのノードに実行させることを特徴とする負荷分散プログラム。
(付記32)
前記ノードにインストールされるアプリケーションプログラム又はミドルウエアであることを特徴とする付記30又は付記31に記載の負荷分散プログラム。
(付記33)
各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかが負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムにおける負荷分散方法であって、
前記ノードのいずれかであるマスタノードにおいて、
該マスタノードと別の他の当該ノードが有する所定の負荷分散情報を、当該ノード又はそれより上位層にある他のノードから受信し、
前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して、前記マスタノードに設けられた所定の負荷分散情報記憶手段に記憶する、
ことを特徴とする負荷分散方法。
(付記34)
前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする付記33に記載の負荷分散方法。
(付記35)
前記マスタノードにおいて、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報から判定される、当該ノードからその下流にある末端へ至る有効経路の有無に応じて、当該ノードへの処理要求の可否を決定し、
当該ノードへ処理要求を送信する他のノードへ、当該ネットワークへの処理要求の可否を通知する、
を備えることを特徴とする付記34に記載の負荷分散方法。
(付記36)
前記マスタノードにおいて、
当該ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、当該ノードに処理要求を分配する当該負荷分散手段の負荷分散方式を変更し、
変更された前記負荷分散方式を当該負荷分散手段へ通知する、
を更に備えることを特徴とする付記34又は35に記載の負荷分散方法。
(付記37)
前記マスタノードにおいて、
前記負荷分散情報記憶手段に当該ノードについて記憶した前記負荷分散情報と、当該ノードが有している前記負荷分散情報と、の間の整合処理を行うことを特徴とする付記34又は35に記載の負荷分散方法。
(付記38)
前記マスタノードが負荷分散処理を開始した時に及び/又は周期的に前記整合処理を行うことを特徴とする付記37に記載の負荷分散方法。
(付記39)
前記マスタノードにおいて、
前記ノードのいずれかが障害状態となったことをその1階層上の他のノードが通知する障害通知を受信し、
前記障害通知を受信したとき前記整合処理を行うことを特徴とする付記37に記載の負荷分散方法。
(付記40)
前記マスタノードにおいて、
前記ノードのいずれかが障害状態から復旧したことをそのノードが通知する復旧通知を受信し、
前記復旧通知を受信したとき前記整合処理を行うことを特徴とする付記37に記載の負荷分散方法。
(付記41)
前記マスタノードにおいて、
前記負荷分散情報記憶手段に記憶された前記負荷分散情報に存在する矛盾をチェックすることを特徴とする付記34又は35に記載の負荷分散方法。
(付記42)
前回受信した負荷分散情報と今回受信した負荷分散情報と間の相違点をチェックすることを特徴とする付記41に記載の負荷分散方法。
(付記43)
各前記ノードについて各々記憶された前記負荷分散情報が、それぞれの前記ノードを正常及び無効のいずれと示すかに関して、前記負荷分散情報に存在する矛盾をチェックすることを特徴とする付記41に記載の負荷分散方法。
(付記44)
各前記ノードが末端へ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記41に記載の負荷分散方法。
(付記45)
最上位層のノードから各前記ノードへ至る有効経路の有無に応じてそのノードの有効及び無効を判定することを特徴とする付記41に記載の負荷分散方法。
(付記46)
当該ノードから末端へ至る有効経路が無いとき、又は最上位層のノードから当該ノードへ至る有効経路が無いとき、当該ノードについて前記負荷分散情報記憶手段に記憶された前記負荷分散情報に当該ノードが無効であることを設定することを特徴とする付記41に記載の負荷分散方法。
(付記47)
当該負荷分散手段により前記処理要求が分配される各ノードの負荷状態が所定の許容範囲内に維持されている間、当該負荷分散手段の負荷分散方式を前記現状の負荷分散方式に維持することを特徴とする付記36に記載の負荷分散方法。
(付記48)
当該負荷分散手段の負荷分散方式が、当該負荷分散手段にて受信した各前記処理要求の分配先をそれぞれの処理要求に応じて決定する方式であるとき、当該負荷分散手段の負荷分散方式を現状の負荷分散方式に維持することを特徴とする付記36に記載の負荷分散方法。
(付記49)
前記負荷分散システムの前記階層構造の最上位層に、複数のノードがそれぞれ前記マスタノードとして配置され、
これらマスタノードの各々は、他のマスタノードが障害であるか否かを相互に監視することを特徴とする付記34又は35に記載の負荷分散方法。
(付記50)
前記マスタノードは、前記他のマスタノードの障害通知及び/又は障害復旧通知を、前記負荷分散方法に処理要求を送信するクライアント装置及び/又は下位層のノードへ送信することを特徴とする付記49に記載の負荷分散方法。
(付記51)
前記下位層ノードにおいて、
前記障害通知及び/又は障害復旧通知を受信し、
前記所定の負荷分散情報と各前記マスタノードの死活状態を記憶し、
記憶する所定の負荷分散情報を、障害状態でない前記マスタノードへ送信する、
ことを特徴とする付記50に記載の負荷分散方法。
(付記52)
前記負荷分散手段は、上位層の前記ノードから送信された処理要求を1つ下位の層の前記ノードへと分配する負荷分散装置、並びに前記ノード上にて実行されることにより上位層の前記ノードから送信された処理要求を1つ下位の層の前記ノードへと分配する負荷分散処理をこのノードに実行させるアプリケーションプログラム及びミドルウエアのいずれかであることを特徴とする付記33〜51のいずれか一項に記載の負荷分散方法。
以上、本発明の好適な実施態様について詳述したが、当業者が種々の修正及び変更をなし得ること、並びに、特許請求の範囲は本発明の真の精神および趣旨の範囲内にあるこの様な全ての修正及び変更を包含することは、本発明の範囲に含まれることは当業者に理解されるべきものである。
本発明は、クライアント装置から要求された処理要求を、複数のサーバ、負荷分散装置、ファイヤウオール等、ファイヤウオール機能付き負荷分散装置などに分配して処理する負荷分散システムに利用可能である。より詳しくは、各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを、これらノード等の負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムに利用可能である。

Claims (2)

  1. 各層が1つ以上のノードを含み、上位層のノードから下位層のノードへと処理要求が順次送信される階層構造を有し、これらノードのいずれかを負荷分散手段とすることにより末端のノードへ処理要求を分散させる負荷分散システムであって、
    前記階層構造は、最上位層より下位の第1層に位置する負荷分散手段と、第1層より一階層低い第2層に位置して前記負荷分散手段により分配される処理要求を受信する第1ノードと、第2層より一階層低い第3層に位置する1つ以上の第2ノードを有し、
    前記最上位層のノードであるマスタノードは、
    前記マスタノード以外のノードが有する所定の負荷分散情報を、前記負荷分散情報を有するノード又はそれより上位層に位置するノードから受信する負荷分散情報受信手段と、
    前記階層構造に含まれる全てのノードに関する各々の前記負荷分散情報を一括して記憶する負荷分散情報記憶手段と、
    前記負荷分散手段による第1ノードへの処理要求の送信可否を決定する送信可否決定手段と、
    第1ノードへの処理要求の送信可否を前記負荷分散手段へ通知する送信可否通知手段と、
    第1ノードに関する前記負荷分散情報が示す負荷状態が所定の基準を満たすとき、第1ノードに処理要求を分配する当該負荷分散手段の負荷分散方式をラウンドロビン方式から最小コネクション方式へと変更する負荷分散方式変更手段と、
    変更された前記負荷分散方式を知らせる負荷分散方式変更通知を前記負荷分散手段へ送信する負荷分散方式通知手段と、
    を備え、
    前記負荷分散情報記憶手段に記憶される負荷分散情報は、第1ノードから処理要求が送信される経路上の全ての第2ノードの装置状態に関する情報を含み、
    前記送信可否決定手段は、第1ノードから処理要求が送信される経路上の全ての第2ノードの前記装置状態に関する情報が全て異常状態を示すか否かに応じて、第1ノードへの処理要求の送信可否を決定する、ことを特徴とする負荷分散システム。
  2. 前記所定の負荷分散情報は、前記負荷分散手段から処理要求を分配される前記ノードにおける処理受付数及び処理実行数、前記負荷分散手段から処理要求を分配される前記ノードの接続状況及び負荷状況、並びに前記負荷分散手段が行う負荷分散方式のいずれかを示す情報であることを特徴とする請求項1に記載の負荷分散システム。
JP2009510636A 2007-04-04 2007-04-04 負荷分散システム Expired - Fee Related JP5246157B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/057582 WO2008129597A1 (ja) 2007-04-04 2007-04-04 負荷分散システム、ノード装置、負荷分散装置、負荷分散制御プログラム、負荷分散プログラム及び負荷分散方法

Publications (2)

Publication Number Publication Date
JPWO2008129597A1 JPWO2008129597A1 (ja) 2010-07-22
JP5246157B2 true JP5246157B2 (ja) 2013-07-24

Family

ID=39875146

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009510636A Expired - Fee Related JP5246157B2 (ja) 2007-04-04 2007-04-04 負荷分散システム

Country Status (3)

Country Link
US (1) US8086714B2 (ja)
JP (1) JP5246157B2 (ja)
WO (1) WO2008129597A1 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5293161B2 (ja) * 2008-12-24 2013-09-18 株式会社リコー 無停電電源装置監視システム、無停電電源装置監視方法及び無停電電源装置監視プログラム
JP2010238051A (ja) * 2009-03-31 2010-10-21 Fujitsu Ltd 負荷分散プログラム及び負荷分散装置
JP5439219B2 (ja) * 2010-02-18 2014-03-12 株式会社日立製作所 メッセージ配信システム及びメッセージ配信方法
US8892632B2 (en) * 2010-06-04 2014-11-18 Microsoft Corporation Client-server interaction frequency control
US8402530B2 (en) * 2010-07-30 2013-03-19 Microsoft Corporation Dynamic load redistribution among distributed servers
EP2645261B1 (en) * 2010-11-26 2018-09-26 Fujitsu Limited Management apparatus, management system, management method and set of an application source program, a first program and a second program
JP5853378B2 (ja) * 2011-03-04 2016-02-09 日本電気株式会社 通信切替システム、通信切替方法、及びプログラム
JP5588936B2 (ja) * 2011-07-19 2014-09-10 日本電信電話株式会社 通信装置及びネットワーク管理方法及びプログラム
US8914502B2 (en) 2011-09-27 2014-12-16 Oracle International Corporation System and method for dynamic discovery of origin servers in a traffic director environment
US8683099B1 (en) * 2012-06-14 2014-03-25 Emc Corporation Load balancing of read/write accesses on a single host device
US8891364B2 (en) * 2012-06-15 2014-11-18 Citrix Systems, Inc. Systems and methods for distributing traffic across cluster nodes
US9465648B2 (en) * 2012-07-31 2016-10-11 Hewlett Packard Enterprise Development Lp Distributed transaction processing through commit messages sent to a downstream neighbor
JP5914245B2 (ja) * 2012-08-10 2016-05-11 株式会社日立製作所 多階層の各ノードを考慮した負荷分散方法
US9558043B2 (en) * 2013-01-25 2017-01-31 Cisco Technology Inc. System and method for abstracting and orchestrating mobile data networks in a network environment
US9276860B2 (en) * 2013-03-13 2016-03-01 Microsoft Technology Licensing, Llc Distributed data center technology
US9712634B2 (en) 2013-03-15 2017-07-18 Cisco Technology, Inc. Orchestrating mobile data networks in a network environment
TW201441834A (zh) * 2013-04-22 2014-11-01 Hon Hai Prec Ind Co Ltd 介面擴展裝置及串列連接介面擴展器
US9270709B2 (en) 2013-07-05 2016-02-23 Cisco Technology, Inc. Integrated signaling between mobile data networks and enterprise networks
US10863387B2 (en) 2013-10-02 2020-12-08 Cisco Technology, Inc. System and method for orchestrating policy in a mobile environment
US9414215B2 (en) 2013-10-04 2016-08-09 Cisco Technology, Inc. System and method for orchestrating mobile data networks in a machine-to-machine environment
US20150189009A1 (en) * 2013-12-30 2015-07-02 Alcatel-Lucent Canada Inc. Distributed multi-level stateless load balancing
US10397313B2 (en) * 2015-03-18 2019-08-27 Nokia Of America Corporation Data stream load balancing utilizing multiple sets of servers
US10412020B2 (en) 2015-04-30 2019-09-10 Amazon Technologies, Inc. Background processes in update load balancers of an auto scaling group
US10341426B2 (en) * 2015-04-30 2019-07-02 Amazon Technologies, Inc. Managing load balancers associated with auto-scaling groups
US10038640B2 (en) 2015-04-30 2018-07-31 Amazon Technologies, Inc. Managing state for updates to load balancers of an auto scaling group
US10242018B2 (en) * 2016-04-18 2019-03-26 International Business Machines Corporation Page allocations for encrypted files
JP6903960B2 (ja) * 2017-03-10 2021-07-14 富士通株式会社 監視方法,監視装置,及びプログラム
CN110914805A (zh) * 2017-07-12 2020-03-24 华为技术有限公司 用于分层任务调度的计算***
JP7085094B2 (ja) 2018-02-05 2022-06-16 Gve株式会社 システム及び管理装置
US10963375B1 (en) * 2018-03-23 2021-03-30 Amazon Technologies, Inc. Managing maintenance operations for a distributed system
US11108694B2 (en) * 2018-03-30 2021-08-31 Ricoh Company, Ltd. Communication system and upload method
CN110022376A (zh) * 2019-04-19 2019-07-16 成都四方伟业软件股份有限公司 任务调度方法、装置及***
CN110308983B (zh) * 2019-04-19 2022-04-05 中国工商银行股份有限公司 资源负载均衡方法及***、服务节点和客户端
EP3848937A1 (en) * 2020-01-09 2021-07-14 F. Hoffmann-La Roche AG Techniques for controlling automated analyzers
CN113093682B (zh) * 2021-04-09 2022-07-05 天津商业大学 一种非集中递归式动态负载均衡计算***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004302564A (ja) * 2003-03-28 2004-10-28 Hitachi Ltd ネームサービス提供方法及びその実施装置並びにその処理プログラム
JP2005182641A (ja) * 2003-12-22 2005-07-07 Hitachi Information Systems Ltd 動的負荷分散システム及び動的負荷分散方法
JP2005352576A (ja) * 2004-06-08 2005-12-22 Ntt Docomo Inc 処理システム及び処理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003030A (en) * 1995-06-07 1999-12-14 Intervu, Inc. System and method for optimized storage and retrieval of data on a distributed computer network
CA2267953C (en) * 1996-07-25 2011-10-18 Mark Kriegsman Web serving system with primary and secondary servers
US6119143A (en) * 1997-05-22 2000-09-12 International Business Machines Corporation Computer system and method for load balancing with selective control
US6185598B1 (en) * 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
US6108703A (en) * 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6587878B1 (en) * 1999-05-12 2003-07-01 International Business Machines Corporation System, method, and program for measuring performance in a network system
US6820133B1 (en) * 2000-02-07 2004-11-16 Netli, Inc. System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
JP3969089B2 (ja) 2001-12-25 2007-08-29 株式会社日立製作所 階層構成サーバシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004302564A (ja) * 2003-03-28 2004-10-28 Hitachi Ltd ネームサービス提供方法及びその実施装置並びにその処理プログラム
JP2005182641A (ja) * 2003-12-22 2005-07-07 Hitachi Information Systems Ltd 動的負荷分散システム及び動的負荷分散方法
JP2005352576A (ja) * 2004-06-08 2005-12-22 Ntt Docomo Inc 処理システム及び処理方法

Also Published As

Publication number Publication date
US8086714B2 (en) 2011-12-27
WO2008129597A1 (ja) 2008-10-30
JPWO2008129597A1 (ja) 2010-07-22
US20100036956A1 (en) 2010-02-11

Similar Documents

Publication Publication Date Title
JP5246157B2 (ja) 負荷分散システム
US10674486B2 (en) System, security and network management using self-organizing communication orbits in distributed networks
US8375001B2 (en) Master monitoring mechanism for a geographical distributed database
Moazzeni et al. On reliability improvement of software-defined networks
US9787771B2 (en) Data access and management system as well as a method for data access and data management for a computer system
JP2007164264A (ja) 負荷分散プログラム、負荷分散装置、サービスシステム
JP2010098591A (ja) 障害監視システム、サーバ装置およびノード装置
US20210120097A1 (en) Scheduling solution configuration method and apparatus, computer readable storage medium thereof, and computer device
JP5526780B2 (ja) 負荷分散システム、サービス処理サーバ、負荷分散方法及び負荷分散プログラム
CN104488227A (zh) 用于在大型数据处理***中进行孤立异常检测的方法
JP5326308B2 (ja) コンピュータリンク方法及びシステム
CN111917870A (zh) 请求处理方法、***、装置、电子设备及存储介质
JP2011145833A (ja) データ分散管理システム及びデータ分散管理方法
JP6117345B2 (ja) 処理性能低下を回避するメッセージシステム
CN113890850B (zh) 路由容灾***及方法
JP2006246152A (ja) パケット転送装置、パケット転送ネットワークシステムおよびパケット転送方法
CN117880227B (zh) 一种芯片路由***、方法以及相关装置
JP7498731B2 (ja) クラスタシステム、復旧方法
CN102148847B (zh) 基于reload的客户端接入对等网络的方法和***
JP6674272B2 (ja) 情報処理方法および制御方法
CN117880276A (zh) 一种基于nginx的传输任务调度方法及应用
Menaceur et al. Fault Tolerance and Failure Recovery Techniques in Software-Defined Networking: A Comprehensive Approach
CN117082066A (zh) 一种进程跨云迁移的方法、装置、设备以及可读存储介质
KR20220132808A (ko) 소프트웨어 정의 네트워크 기반 장애 예측 제어 관리 방법 및 장치
CN116633764A (zh) ***切换方法、装置、计算机设备、存储介质和计算机程序产品

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120709

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130206

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130325

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees