JP4340733B2 - 負荷分散システム、方法、及び、プログラム - Google Patents

負荷分散システム、方法、及び、プログラム Download PDF

Info

Publication number
JP4340733B2
JP4340733B2 JP2006249651A JP2006249651A JP4340733B2 JP 4340733 B2 JP4340733 B2 JP 4340733B2 JP 2006249651 A JP2006249651 A JP 2006249651A JP 2006249651 A JP2006249651 A JP 2006249651A JP 4340733 B2 JP4340733 B2 JP 4340733B2
Authority
JP
Japan
Prior art keywords
load
server
processing
target value
accommodation
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
JP2006249651A
Other languages
English (en)
Other versions
JP2008071156A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2006249651A priority Critical patent/JP4340733B2/ja
Publication of JP2008071156A publication Critical patent/JP2008071156A/ja
Application granted granted Critical
Publication of JP4340733B2 publication Critical patent/JP4340733B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、負荷分散システム、方法、及び、プログラムに関し、更に詳しくは、複数のサーバを有するネットワークシステムにおいて、サーバ負荷を分散させる負荷分散システム、方法、及び、プログラムに関する。
クライアント−サーバ型のシステムにおいて、クライアントからの処理要求を分散させ、サーバ負荷の分散を図る負荷分散システムがある。従来の負荷分散システムの一例が、非特許文献1に記載されている。図13に、従来の負荷分散システムの構成を示す。この従来の負荷分散システム500は、複数のサーバで構成されるサーバ群501、負荷分散手段(ロードバランサ)510、及び、複数のクライアント端末で構成されるクライアント群520を有する。
クライアント群520内のクライアント端末(520−a〜520−c)は、サーバへの処理要求を発行する。ロードバランサ510は、ネットワーク530を介して、クライアント群520からの処理要求を受け取り、受け取った処理要求を、サーバ群501内のサーバ(501−a〜501−f)の何れかに振り分ける。ロードバランサ510は、処理要求を振り分ける際には、例えば、サーバ群501内のサーバからランダムにサーバを1つ選択する。クライアントからの処理要求を受信したサーバは、処理要求に従った処理を実行する。特許文献1では、このような構成により、ロードバランサ510を用いて、特定のサーバに対して処理が集中しないように制御し、サーバ群501内で、サーバの負荷を分散させている。
負荷分散システムの他の例としては、非特許文献2に記載されたものがある。図14は、非特許文献2に記載された負荷分散システム(DNSラウンドロビン)の構成を示す。この負荷分散システム600では、DNSの仕組みを用いて、サーバの負荷分散を図る。クライアント群620内のクライアント端末(620−a〜620−c)は、サーバからのサービスを受けるために、ローカルDNSサーバ670に、サーバのFQDN(Fully Qualified Domain Name)に対応するIPアドレスを質問する。ローカルDNSサーバ670は、FQDNとIPアドレスとの対応関係のエントリを有している(キャッシュしている)か否かを判断し、キャッシュしていなければ、上位のDNSサーバであるDNSロードバランサ650に問い合わせを行う。
DNSロードバランサ650は、各サーバ(601−a、601−b)の負荷を定期的に測定している。DNSロードバランサ650は、ローカルDNSサーバ670からIPアドレスの問い合わせを受けると、負荷が軽いサーバのIPアドレスを返答する。ローカルDNSサーバ670は、DNSロードバランサ650からIPアドレスの返答を受信すると、その応答をキャッシュして内部に保持すると共に、IPアドレスの質問を行ったクライアント端末に、IPアドレスを回答する。ローカルDNSサーバ670は、FQDNとIPアドレスとの対応関係をキャッシュしている場合には、DNSロードバランサ650への問い合わせを行わずに、クライアント端末にIPアドレスを回答する。
例えば、クライアント端末620−aは、サーバからのサービスを受けるために、ローカルDNSサーバ670に、FQDNに対するIPアドレスの質問を行う。ローカルDNSサーバ670は、FQDNとIPアドレスとの対応関係をキャッシュしていなければ、上位のDNSロードバランサ650に問い合わせを行う。DNSロードバランサ650は、サーバ601−aの負荷が、サーバ601−bの負荷よりも軽いときには、サーバ601−aのIPアドレスを返答する。ローカルDNSサーバ670は、回答結果をキャッシュすると共に、クライアント端末620−aに、サーバ601−aのIPアドレスを回答する。このようにすることで、クライアント端末620−aは、負荷の軽いサーバ601−aから、サービスを受けることができる。
負荷分散システムの他の例としては、特許文献1に記載されたものもある。図15は、特許文献1に記載された負荷分散(非集中型負荷分散)システムの構成を示している。負荷分散システム700は、複数のサーバ701を備え、各サーバ701が、処理要求検索部707と、位置情報解析部709と、処理要求転送部710とを備える。処理要求検索部707は、クライアント端末702内のクライアントアプリケーション703からの要求に該当するオブジェクトを検索する。その際、処理要求検索部707は、自装置(自サーバ)の負荷を参照して、自サーバでの処理が可能か否かを判断する。処理要求検索部707は、サーバ負荷が重く、処理が不可能であると判断すると、オブジェクト位置情報管理テーブルを参照して、同じ処理が実行可能なオブジェクトが存在する他のサーバを検索する。
処理要求転送部710は、実際に処理を行うサーバを検索するために、処理要求検索部707が検索した他のサーバに対して、処理の依頼を行う。この依頼を受けた他のサーバは、処理要求検索部707により、そのサーバでの処理が可能か否かを判断し、その結果を、依頼元のサーバに返す。処理要求転送部710は、他のサーバでの処理が可能であれば、クライアントアプリケーション703に、転送先として、他のサーバを紹介する。処理可能でない場合には、処理可能なサーバの検索を続行する。
更に、負荷分散システムの他の例としては、特許文献2に記載されたものもある。図16は、特許文献2に記載された負荷分散システムの構成を示している。この負荷分散システム800は、ネットワークサービスサーバ負荷調整装置803を有する。ネットワークサービスサーバ負荷調整装置803は、分配率調整部807、分配中継部804、及び、変換テーブルvipを有する。分配中継部804は、クライアント群801からアクセス要求を受けると、受信パケットのヘッダ部にハッシュをかけ、ハッシュ値を基に変換テーブルvipを検索し、検索したサーバに、受信パケットを転送する。
変換テーブルvipは、サーバ群805の数よりも多い、複数のスロットルから構成されている。ネットワークサービスサーバ負荷調整装置803は、サーバ群805内の各サーバの応答時間を測定し、応答時間が短いサーバは負荷が軽いサーバと推定して、多くのスロットルを割り当てる。負荷分散システム800では、多くのスロットルを割り当てたサーバに、多くの受信パケットが転送されることになり、負荷が分散される。この場合、負荷が重いサーバから負荷が軽いサーバにスロットルを割り当てていくことで、割り当てられたサーバの負荷が重くなり、そのスロットルを再割当てするという「振動」が発生する危険性がある。そこで、特許文献2では、割当てスロットル数を徐々に小さくすることで、割当てを収束させている。
特開2003−256390号公報 特開平11−096128号公報 トニー ブルーク著「サーバ負荷分散技術」オライリー・ジャパン、2001年12月、pp.27−34 トニー ブルーク著「サーバ負荷分散技術」オライリー・ジャパン、2001年12月、pp.4−8 #DNSラウンドロビン
従来技術の第1の問題点は、大容量を処理するのに限界があるという点である。その理由は、一部の装置がボトルネックとなり、その装置の性能限界が全体の性能限界になるためである。例えば、非特許文献1に記載されている従来の負荷分散システム500(図13)では、クライアントからの全ての要求がロードバランサ510を通過することになり、ロードバランサ510の性能がシステムの性能限界となる。また、非特許文献2に記載される従来の負荷分散システム600(図14)では、ローカルDNSサーバ670がシステムの性能限界となり、特許文献2に記載される従来の負荷分散システム800(図16)では、ネットワークサービスサーバ負荷調整装置803の性能がシステムの性能限界となる。
第2の問題点は、負荷の分散の伝達が遅いという点である。例えば、非特許文献2に記載される従来の負荷分散システム600(図14)では、負荷分散情報を一部のDNSサーバで管理し、それがキャッシュされることでローカルDNSサーバ670に伝播するが、キャッシュの伝播には時間を要するため、サーバの負荷の変動に、迅速に対応することができない。
第3の問題点は、負荷分散時アルゴリズムが収束しない可能性がある点である。例えば、特許文献1に記載されている従来の負荷分散システム700(図15)では、複数の負荷が高いサーバの中に、負荷が低いサーバが存在すると、周りの負荷が高いサーバが、負荷の低いサーバにクライアントの要求を転送することで、負荷が低かったサーバは、複数のサーバから譲り受けた負荷のために、かえって負荷が高くなる。そうすると、そのサーバが、また、他のサーバへとクライアントの要求を転送する。この繰り返しで、クライアントからの要求が転送され続けられ、処理が完了しない。また、転送作業自体にも処理コストがかかるため、本来の処理作業ではなく、転送処理によって負荷が押し上げられるという問題も生じる。
第4の問題点は、特許文献2の負荷分散システム800(図16)では、負荷の振動を考慮した負荷分散を行っているが、その場合でも、必ずしもサーバ間の負荷が平準化しないという点である。その理由は、負荷分散システム800では、負荷の割当ての変更割合を徐々に減らしているが、変更割合を減らしていき、0に近づいたときに、それは複数のサーバに対等に割当てている状態である保証がないためである。
本発明は、上記従来技術の問題点を解消し、ボトルネックなしに大容量の処理ができる負荷分散システム、方法、及び、プログラムを提供することを目的とする。
本発明の他の目的は、負荷情報の遅延なしに負荷分散できる負荷分散システム、方法、及び、プログラムを提供することである。
本発明の他の目的は、収束の保証された負荷分散システム、方法、及び、プログラムを提供することである。
本発明の他の目的は、負荷分散が収束された時点において、サーバ間の負荷が平準化されていることを保証する負荷分散システム、方法、及び、プログラムを提供することである。
上記従来技術の問題点を解消するために、本発明の負荷分散システムは、複数のサーバを有するネットワークシステムのネットワーク構成を記憶するネットワーク構成情報を参照し、負荷係数を決定する負荷係数決定手段と、他のサーバから負荷情報を取得し、自サーバの負荷、及び、他のサーバの負荷と、前記負荷係数とに基づいて、負荷目標値を設定する負荷情報交換手段と、自サーバの負荷と前記負荷目標値とを比較し、自サーバの負荷が前記負荷目標値以下のとき、クライアントからの処理要求に対する処理を自サーバ内で実行させ、自サーバの負荷が前記負荷目標値を超えるとき、前記処理要求に対応する処理を、前記他のサーバで実行させる負荷融通手段とを備えることを特徴とする。
本発明の負荷分散方法は、複数のサーバを有するネットワークシステムで、サーバの負荷を分散させる方法であって、前記サーバが、前記ネットワークシステムのネットワーク構成を記憶するネットワーク構成情報を参照し、負荷係数を決定する負荷係数決定ステップと、前記サーバが、他のサーバとの間で負荷情報を交換し、自サーバの負荷、及び、他のサーバの負荷と、前記負荷係数とに基づいて、負荷目標値を設定する負荷目標値設定ステップと、前記サーバが、自サーバの負荷と前記負荷目標値とを比較し、クライアントからの処理要求に対する処理を、自サーバで実行するか、又は、前記他のサーバに実行させるかを決定する処理サーバ決定ステップとを有し、前記サーバが、前記処理サーバ決定ステップで、自サーバで実行すると決定すると、前記処理を自サーバ内で実行し、他のサーバに実行させると決定すると、前記処理を、前記他のサーバで実行させることを特徴とする。
本発明のプログラムは、複数のサーバを有するネットワークシステムで、サーバの負荷を分散させる処理を前記サーバに実行させるプログラムあって、前記サーバに、前記ネットワークシステムのネットワーク構成を記憶するネットワーク構成情報を参照し、負荷係数を決定する負荷係数決定ステップと、他のサーバとの間で負荷情報を交換し、自サーバの負荷、及び、他のサーバの負荷と、前記負荷係数とに基づいて、負荷目標値を設定する負荷目標値設定ステップと、自サーバの負荷と前記負荷目標値とを比較し、クライアントからの処理要求に対する処理を、自サーバで実行するか、又は、前記他のサーバに実行させるかを決定する処理サーバ決定ステップとを実行させ、前記処理サーバ決定ステップで、自サーバで実行すると決定すると、前記処理を自サーバ内で実行し、他のサーバに実行させると決定すると、前記処理を、前記他のサーバで実行させることを特徴とする。
本発明の負荷分散システム、方法、及び、プログラムでは、ネットワーク構成に基づいて負荷移管量を決定するための負荷係数を決定し、決定した負荷係数と、自サーバ及び他サーバの負荷とに基づいて、負荷目標値を決定する。自サーバの負荷が、負荷目標値よりも高ければ、クライアントからの処理要求に対する処理を他のサーバで実行させてその他のサーバに負荷を移管し、負荷目標値以下であれば、自サーバ内で処理を実行する。本発明では、負荷係数を、ネットワーク構成に基づいて決定し、その負荷係数を用いて、負荷移管を繰り返していったときに各サーバの負荷が同程度の負荷に収束するように負荷目標値を設定することで、負荷が収束し、かつ、サーバ間の負荷を平準化した負荷分散を実現できる。また、その際、処理要求が特定の装置に集中することがないため、ボトルネックなしに大容量の処理が実現できる。
本発明の負荷分散システムでは、前記負荷情報交換手段は、前記自サーバの負荷から、該自サーバの負荷と他のサーバの負荷との差に前記負荷係数を乗じた値を引いた値を、前記負荷目標値として設定する構成を採用できる。負荷目標値は、具体的にはこのような計算により設定すればよい。
本発明の負荷分散システムでは、前記負荷情報交換手段は、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、負荷融通を行うか否かを示す状態フラグを「負荷融通状態」に設定して前記負荷目標値の設定を行い、前記負荷融通手段は、前記状態フラグが「負荷融通状態」のとき、前記自サーバの負荷と前記負荷目標値との比較を行う構成を採用できる。この場合、負荷情報交換手段は、自サーバの負荷が他サーバの負荷よりも高く、かつ、その比率が所定のしきい値を超えるときに、負荷目標値の設定を行い、状態フラグを「負荷融通状態」に設定して、サーバ状態をサーバ間で負荷を融通する状態に移行させる。負荷融通手段は、クライアントからの処理要求を受けた際に、状態フラグが「負荷融通状態」であるときには、自サーバの負荷と負荷目標値との比較を行い、そのクライアントからの処理要求に対応する処理を、自サーバで行うか、又は、他サーバで行うかを決定する。このような処理により、負荷分散を実現できる。
本発明の負荷分散システムでは、前記負荷融通手段は、前記比較の結果、前記自サーバの負荷が前記負荷目標値以下であると、前記状態フラグを、負荷融通を行わない状態を示す「通常状態」に設定する構成を採用できる。負荷融通手段が自サーバの負荷と負荷目標値との比較を行った結果、自サーバの負荷が負荷目標値以下であれば、クライアントからの処理要求に対する処理は自サーバで行うと決定するので、負荷融通は行われない。そのような場合には、状態フラグを「通常状態」に設定して、「負荷融通状態」を解除すればよい。
本発明の負荷分散システムでは、前記負荷情報交換手段は、前記状態フラグが「負荷融通状態」でないとき、前記他のサーバから負荷情報を取得する構成を採用できる。サーバ状態が「負荷融通状態」でないときには、負荷情報交換手段によって、定期的に他サーバから負荷情報を取得し、取得した他サーバの負荷と自サーバの負荷とを比較する。比較の結果、負荷の比がしきい値を超えるときには、自サーバの負荷及び他サーバの負荷と、負荷係数とに基づいて負荷目標値を設定する。このようにすることで、負荷情報の遅延なしに他サーバの負荷を取得することができ、その他サーバの負荷に基づいて負荷目標値を設定することができる。
本発明の負荷分散システムでは、前記負荷情報交換手段は、前記状態フラグを「負荷融通状態」に設定すると、前記他のサーバを指し示す情報を移管先サーバ記憶部に格納し、前記負荷融通手段は、自サーバの負荷が前記負荷目標値を超えるとき、前記移管先サーバ記憶部を参照して、前記処理要求に対する処理を、該移管先サーバ記憶部に格納されたサーバで実行させる構成を採用できる。
本発明の負荷分散システムでは、前記負荷情報交換手段は、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、前記他のサーバに負荷融通が可能か否かを問い合わせる負荷融通要求を送信し、該要求に対して許諾する旨の応答を受信すると、前記状態フラグを「負荷融通状態」に設定すると共に、当該他のサーバを示す情報を前記移管先サーバ記憶部に格納する構成を採用できる。また、前記負荷情報交換手段は、他のサーバから、前記負荷融通要求を受信すると、自サーバの負荷情報を参照して許諾するか否かを決定し、許諾するときには許諾応答を、拒否するときには拒否応答を返信する構成を採用できる。負荷の移管先のサーバは、負荷移管を行うサーバよりも負荷は低いが、例えばその後負荷上昇が見込まれる場合など、負荷を受け入れることが不適当な場合もある。そこで、事前に負荷融通要求を送信して、他のサーバに対して負荷の受入れが可能か否かの問い合わせを行う。負荷融通要求を受信した他のサーバは、負荷情報などに基づいて、負荷融通要求を許諾するか否かを決定する。負荷融通要求の発行元のサーバは、負荷融通要求に対して許諾する旨の応答が得られると、許諾応答を送信した他のサーバは、負荷移管先サーバとして記憶する。このようにすることで、相手先の状況に合わせた負荷分散が可能となる。
本発明の負荷分散システムでは、前記負荷融通手段は、自サーバの負荷が前記負荷目標値を超えるとき、前記処理要求に対して、他のサーバをリダイレクト先とするリダイレクト応答をクライアントに送信し、前記処理要求に対する処理を他のサーバで実行させる構成を採用できる。この場合、クライアントは、リダイレクト応答を受け取った後に、リダイレクト先のサーバに処理要求を送信することで、そのリダイレクトサーバから処理応答を得ることができる。
本発明の負荷分散システムでは、前記負荷融通手段は、自サーバの負荷が前記負荷目標値以下であるとき、ディスパッチ手段により前記処理要求に対応するアプリケーションを起動し、該アプリケーションの処理結果を、前記クライアントに対する応答として送信する構成を採用できる。
本発明の負荷分散システムでは、前記負荷係数決定手段は、前記ネットワーク構成情報に基づいて、行及び列を各サーバに対応させ、サーバ間で接続間関係にあるサーバに対応する要素を−1、接続関係にないサーバに対応する要素を0、対角要素をその行に対応するサーバに接続されたサーバの数とする接続行列Aを作成し、該作成した接続行列Aに対して、lを変数とし、Eを単位行列としてG=(−lA+E)の固有値k(l)を求め、全ての固有値k(l)が−1より大きく1以下となる0<l<1のうちのlの最大値を求め、該lの最大値を、負荷係数として決定する構成を採用できる。接続行列Aをこのように作成し、G=(−lA+E)に対して、行列Gの全ての固有値が−1より大きく、かつ、1より小さくなるlを選ぶことで、負荷融通を繰り返していった際に、各サーバの負荷を収束させることができる。また、行列Gの固有値のうちの1つは「1」であることがわかっており、その固有ベクトルは
Figure 0004340733
であることから、各サーバの負荷を平準化することができることがわかる。
本発明の負荷分散方法及びプログラムは、前記処理サーバ決定ステップでは、自サーバの負荷と前記負荷目標値とを比較し、自サーバの負荷が前記負荷目標値以下であれば、前記処理を自サーバ内で実行すると決定し、自サーバの負荷が前記目標値を超えるときには、前記他のサーバに実行させると決定する構成を採用できる。
本発明の負荷分散方法及びプログラムは、前記負荷目標値設定ステップでは、前記自サーバの負荷から、該自サーバの負荷と他のサーバの負荷との差に前記負荷係数を乗じた値を引いた値を、前記負荷目標値として設定する構成を採用できる。
本発明の負荷分散方法及びプログラムは、前記負荷目標値設定ステップでは、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、負荷融通を行うか否かを示す状態フラグを「負荷融通状態」に設定して、前記負荷目標値の設定を行い、前記処理要求を受け付けると、前記状態フラグを参照し、該状態フラグが「負荷融通状態」であれば、前記処理サーバ決定ステップを実行する構成を採用できる。
本発明の負荷分散方法及びプログラムは、前記処理サーバ決定ステップでは、前記処理要求に対する処理を自サーバで実行すると決定すると、前記状態フラグを、負荷融通を行わない状態を示す「通常状態」に設定する構成を採用できる。
本発明の負荷分散方法及びプログラムは、前記負荷目標値設定ステップでは、前記状態フラグを「負荷融通状態」に設定すると、前記他のサーバを指し示す情報を移管先サーバ記憶部に格納する構成を採用できる。
本発明の負荷分散方法及びプログラムでは、前記サーバが前記処理要求に対する処理を他のサーバに実行させると決定すると、前記移管先サーバ記憶部を参照して、該移管先サーバ記憶部に格納されたサーバに、前記処理を実行させる構成を採用できる。
本発明の負荷分散方法及びプログラムは、前記負荷目標値設定ステップでは、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、前記他のサーバに負荷融通が可能か否かを問い合わせる負荷融通要求を送信し、該要求に対して許諾する旨の応答を受信すると、前記状態フラグを「負荷融通状態」に設定し、当該他のサーバを示す情報を前記移管先サーバ記憶部に格納して、前記負荷目標値を設定する構成を採用できる。
本発明の負荷分散方法及びプログラムでは、前記サーバが他のサーバから、前記負荷融通要求を受信すると、自サーバの負荷情報を参照して許諾するか否かを決定し、許諾するときには許諾応答を、拒否するときには拒否応答を返信する構成を採用できる。
本発明の負荷分散方法及びプログラムでは、前記処理サーバ決定ステップで、他のサーバに実行させると決定すると、前記処理要求に対して、他のサーバをリダイレクト先とするリダイレクト応答をクライアントに送信し、前記処理要求に対する処理を他のサーバで実行させる構成を採用できる。
本発明の負荷分散方法及びプログラムでは、前記処理サーバ決定ステップで、自サーバで実行すると決定すると、ディスパッチ手段により前記処理要求に対応するアプリケーションを起動し、該アプリケーションの処理結果を、前記クライアントに対する応答として送信する構成を採用できる。
本発明の負荷分散方法及びプログラムは、前記負荷係数決定ステップでは、前記サーバは、前記ネットワーク構成情報に基づいて、行及び列を各サーバに対応させ、サーバ間で接続間関係にあるサーバに対応する要素を−1、接続関係にないサーバに対応する要素を0、対角要素をその行に対応するサーバに接続されたサーバの数とする接続行列Aを作成し、該作成した接続行列Aに対して、lを変数とし、Eを単位行列としてG=(−lA+E)の固有値k(l)を求め、全ての固有値k(l)が−1より大きく1以下となる0<l<1のうちのlの最大値を求め、該lの最大値を、負荷係数として決定する構成を採用できる。
本発明の負荷分散システム、方法、及び、プログラムでは、ネットワーク構成に基づいて負荷移管量を決定するための負荷係数を決定し、決定した負荷係数と、自サーバ及び他サーバの負荷とに基づいて、負荷目標値を決定する。自サーバの負荷が、負荷目標値よりも高ければ、クライアントからの処理要求に対する処理を他のサーバで実行させ、負荷目標値以下であれば、自サーバ内で処理を実行する。本発明では、負荷係数を、ネットワーク構成に基づいて決定し、その負荷係数を用いて、負荷移管を繰り返していったときに各サーバの負荷が同程度の負荷に収束するように負荷目標値を設定することで、負荷が収束し、かつ、サーバ間の負荷を平準化した負荷分散を実現できる。また、その際、処理要求が特定の装置に集中することがないため、ボトルネックとなる装置が存在せず、大容量の処理が実現できる。
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図1は、本発明の第1実施形態の負荷分散システムの構成を示している。負荷分散システム100は、ネットワーク310を介して相互に接続された複数のサーバ200を有する。サーバ200は、プログラム制御により動作する中央処理装置(CPU)240、トランスポートスタック230、負荷融通手段220、ディスパッチ手段210、アプリケーション群300、負荷計測手段290、負荷情報交換手段280、及び、負荷係数決定手段260を有する。また、負荷目標値330、移管先サーバ名335、状態フラグ340、融通しきい値270、負荷係数285、及び、ネットワーク構成情報250を記憶するレジスタ等の記憶手段を有する。
サーバ200は、図示しないクライアントからの処理要求を受け付け、要求に応じたサービスを実施し、クライアントに処理応答を送信する。トランスポートスタック230は、ネットワーク310に接続されており、クライアントや他サーバからの各種要求を受け付けて応答する。負荷計測手段290は、中央処理装置240やトランスポートスタック230の状況を観測し、サーバ200の負荷を計測する。状態フラグ340は、装置状態を管理するためのフラグを格納する。状態フラグ340に格納されるフラグには、サーバ間で負荷移管(負荷融通)を行う状態を示す「負荷融通状態」と、負荷の移管を行わない状態を示す「通常状態」とがある。
負荷情報交換手段280は、状態フラグ340が「通常状態」であれば、定期的にネットワーク310を通じて他のサーバと通信し、負荷計測手段290が得た負荷情報を交換する。状態フラグ340が「負荷融通状態」であれば、負荷情報の交換は行わない。負荷情報交換手段280は、例えば周期的にタイムアウトを発生するタイマ320がタイムアウトを発生するタイミングで負荷情報の交換を行う。負荷情報交換手段280は、他のサーバの負荷を取得すると、自サーバの負荷と他サーバとの負荷の比を計算し、その値が、負荷移管を開始する際の判断基準となる融通しきい値270よりも大きいか否かを判断する。負荷情報交換手段280は、負荷の比が融通しきい値270よりも大きいと判断すると、他のサーバに負荷融通要求を送信する。負荷情報交換手段280は、負荷融通要求に対して許諾する旨の応答を受け取ると、負荷の移管先を示す移管先サーバ名335に他のサーバを指し示す情報を格納し、状態フラグ340を「負荷融通状態」にセットする。
負荷係数決定手段260は、サーバ間の接続状況に関する情報を含むネットワーク構成情報250を参照して、負荷係数285を決定する。負荷係数285は、自サーバの負荷と、他のサーバの負荷とを照らし合わせて、前者の負荷が高い場合に、負荷の差のどれくらいを他のサーバに移管するかを定めるための比例係数である。負荷情報交換手段280は、「負荷融通状態」への移行に際して、自サーバの負荷、自サーバの負荷と他サーバの負荷との差、及び、負荷係数285に基づいて、負荷目標値330を設定する。具体的には、自サーバの負荷から、自サーバの負荷と他のサーバの負荷との差に負荷係数285を乗じた値を減算した値を、負荷目標値330として設定する。負荷目標値330は、「負荷融通状態」におけるサーバ負荷の目標値を示す。
トランスポートスタック230は、クライアントから要求を受信すると、受信した要求を負荷融通手段220に渡す。負荷融通手段220は、状態フラグ340を参照して「通常状態」であるか、或いは、「負荷融通状態」であるかを判断する。負荷融通手段220は、「通常状態」であれば、負荷の移管は行わずに自サーバ内で処理を実行すると決定し、ディスパッチ手段210に、クライアントからの要求を渡す。状態フラグ340が「負荷融通状態」であれば、負荷計測手段290が計測したサーバ負荷が負荷目標値330を超えるか否かを判断する。超える場合には、負荷の移管を行うと決定し、移管先サーバ名335で示されるサーバへのリダイレクト応答を、クライアントに返す。負荷目標値330を超えない場合には、自サーバ内で処理を実行すると決定し、クライアントからの要求をディスパッチ手段210へ渡す。
ディスパッチ手段210は、負荷融通手段220から、クライアントからの処理要求を受け取ると、その処理要求が必要とするサービスを提供するアプリケーションを、アプリケーション群300の中から選択し起動する。アプリケーション群300は、ディスパッチ手段210から受け取ったクライアントの要求に基づいてサービスを実行し、その結果を、クライアントに対する応答としてディスパッチ手段210に返す。
図2は、負荷分散システム100の全体的な処理の流れを示しててる。サーバ200は、通信パケットの受信や、タイマ320からのトリガーなどのイベント発生を待つ(ステップZ110)。イベントが発生すると、発生したイベントに従って、適切な処理にディスパッチする(ステップZ120)。周期的にタイマ320が起動したときには、負荷情報交換処理を実行する(ステップZ130)。他のサーバから負荷情報交換要求を受信したときには、負荷情報提供処理を実行する(ステップZ140)。他のサーバから負荷融通要求を受信した場合には、負荷融通要求処理を実行する(ステップZ150)。クライアントからの要求を受信した場合には、クライアント要求処理を実行する(ステップZ160)。
図3は、ステップZ130の負荷情報交換処理の詳細な手順を示している。負荷情報交換手段280は、タイマ起動により、周期的に、近傍の他のサーバとの間で負荷情報交換処理を行う。この負荷情報交換は、サーバ200の近傍に、そのサーバ200に接続する他のサーバが複数あるときには、そのそれぞれとの間で周期的に行う。具体的には、近傍にサーバAとサーバBとの2台が存在する場合には、タイマ320により、サーバAとの間で負荷情報の交換を行うべきタイミング、及び、サーバBとの間で情報交換を行うべきタイミングの双方でタイムアウトを発生させ、サーバAとの間で周期的に負荷情報交換を行うと共に、サーバBとの間でも周期的に負荷情報交換を行う。
負荷情報交換処理では、負荷情報交換手段280は、状態フラグ340を参照し、状態フラグ340が「通常状態」であるか、「負荷融通状態」であるかを判断する(ステップA210)。「負荷融通状態」であれば、そのまま処理を完了する。状態フラグ340が「通常状態」であれば、負荷情報交換手段280は、負荷情報交換の対象となる近傍の他のサーバとネットワーク310を介して通信し、負荷情報要求を送信して、当該他のサーバから、負荷情報を取得する(ステップA220)。
負荷情報交換手段280は、負荷情報を取得すると、取得した他のサーバの負荷情報、及び、自身の負荷情報に基づいて、負荷の比が、融通しきい値270を超えるか否かを判断する(ステップA230)。より詳細には、サーバ200(S)の負荷をS.l、他のサーバ(S’)の負荷をS’.lとし、融通しきい値270の値をDとして、S.l/S’.l>Dが成立するか否かを判断する。成立しない場合には、そのまま処理を完了する。成立する場合には、負荷情報交換手段280は、他のサーバに対して、負荷融通を要求する(ステップA240)。負荷情報交換手段280は、他のサーバから、負荷融通要求に対する応答を受信すると(ステップA250)、負荷融通の許諾が得られたか否かを判断する(ステップS260)。他のサーバから許諾が得られなかったときには、そのまま処理を完了する。
負荷情報交換手段280は、他のサーバから許諾が得られると、状態フラグ340を「負荷融通状態」にセットし、負荷融通状態に移行する(ステップA270)。その際、負荷情報交換手段280は、他のサーバのサーバ名を、移管先サーバ名335に格納する。また、負荷計測手段290によって計測された自サーバの負荷と、他のサーバの負荷と、負荷係数285とに基づいて、負荷目標値330を決定する。より詳細には、klを負荷係数285に格納された係数値として、S.l−kl×(S.l−S’.l)を負荷目標値に設定する。
図4は、図2のステップZ140の負荷情報提供処理の詳細手順を示している。図3のステップA220で送信された負荷情報要求は、他のサーバ200の負荷情報交換手段280により受信される。負荷情報交換手段280は、負荷情報要求を受信すると(ステップB110)、負荷計測手段290により、自サーバの負荷を計測する(ステップB120)。負荷情報交換手段280は、負荷計測手段290が計測した負荷情報を、負荷情報要求の発行元のサーバに対して送信する(ステップB130)。
図5は、図2のステップZ150の負荷融通要求処理の詳細手順を示している。サーバ200は、図3のステップA240で他のサーバから送信された負荷融通要求を受信する(ステップC110)。負荷情報交換手段280は、サーバ状態に基づいて、負荷受入れを受諾するか否かを判断する(ステップC120)。この受入れ判断では、サーバ負荷計測手段290が計測したサーバ負荷を参照し、例えば、サーバ負荷が軽い場合(所定のしきい値よりも低い場合)には、負荷受入れを受諾すると判断する。ただし、その場合でも、サーバ状態を考慮して、クライアントが利用するアプリケーションがまだインストールされておらず、インストール時間を考慮すると負荷融通要求の受入れが得策でないときには、拒絶する。負荷情報交換手段280は、受入れ可能と判断すると、許諾応答を、要求発行元のサーバに返信し(ステップC130)、受入れ不可と判断すると、拒絶応答を、要求発行元のサーバに返信する(ステップC140)。
図6は、図2のステップZ160のクライアント要求処理の詳細手順を示している。トランスポートスタック230は、クライアントからの処理要求を受信する(ステップD110)。トランスポートスタック230が受信したクライアントからの処理要求は、負荷融通手段220に渡される。負荷融通手段220は、状態フラグ340を参照し、状態フラグ340が「通常状態」であるか「負荷融通状態」であるかを調べる(ステップD120)。
負荷融通手段220は、状態フラグ340が「通常状態」であると判断すると、負荷の移管は行わないと決定し、クライアントからの要求をディスパッチ手段210に渡す。ディスパッチ手段210は、受け取ったクライアントからの要求に基づいて、アプリケーション群300から適切なサーバ群を選択し、アプリケーションを起動する(ステップD160)。起動したアプリケーションは、処理要求に応じた適切な処理を実行し、ディスパッチ手段210に応答(処理結果)を返す(ステップD170)。アプリケーションが作成した応答は、ディスパッチ手段210、負荷融通手段220、及び、トランスポートスタック230を介して、クライアントに返信される(ステップD180)。
負荷融通手段220は、ステップD120で、状態フラグ340が「負荷融通状態」であると判断すると、負荷計測手段290により、サーバ200の負荷を計測する(ステップD130)。負荷融通手段220は、計測されたサーバ200の負荷と、負荷目標値330とを比較し、サーバ200の負荷が、負荷目標値330以上であるか否かを判断する(ステップD140)。負荷融通手段220は、サーバ負荷が負荷目標値330以上でないと判断すると、負荷の移管は行わないと決定し、状態フラグ340や負荷目標値330、移管先サーバ名335をリセットする(ステップD155)。その後、ステップD160へ進み、クライアントからの要求をディスパッチ手段210に渡し、ディスパッチ手段210によりアプリケーションを起動して、要求に対する応答をクライアントに返信する。
ステップD140での比較の結果、サーバ200の負荷が、負荷目標値330以上である場合には、負荷の移管を行うと決定する。この場合、負荷融通手段220は、移管先サーバ名335を参照し、移管先サーバ名335が示すサーバをリダイレクト先とするリダイレクト応答を作成する(ステップD150)。負荷融通手段220が作成したリダイレクト応答は、トランスポートスタック230を介して、クライアントに返信される。
図7は、クライアントの動作手順を示している。クライアントは、HTTP等のリダイレクトで定義されるように、図7に示す手順で動作する。すなわち、クライアントは、あらかじめ決められたサーバ200に処理要求を発行する(ステップE110)。この処理要求を受け取ったサーバ200は、図6に示す手順に従って、処理結果、又は、リダイレクト応答を返信する。クライアントは、サーバ200からの応答を受信し(ステップE120)、受信した応答の種類を判別する(ステップE130)。サーバ200から受け取った応答が、処理結果であれば、処理結果を受信して(ステップE140)、処理を終了する。応答がリダイレクト応答であれば、クライアントは、指定されたリダイレクト先にサクセスサーバを変更し(ステップE150)、ステップE110に戻って、リダイレクト先にサーバに処理要求を送信する。
次に、負荷係数285の決定について詳細について説明する。図8に、手順を示す。負荷係数285は、負荷目標値の決定に用いられ、他のサーバにどの程度の負荷を移管するかを決定するために用いられる。負荷係数決定手段260は、所定のタイミングで、例えばシステムの立ち上げ時に、ネットワーク構成情報250を読み込む(ステップF110)。負荷係数決定手段260は、読み込んだネットワーク構成情報250を参照して、ネットワーク構成(サーバ間の接続状態)を表す接続行列を作成する(ステップF120)。
接続行列Aは、次のように定義する。
Figure 0004340733
上記接続行列Aにおいて、N(i)は、サーバiと接続されているサーバの集合である。すなわち、システムを構成するn台のサーバうちのi番目のサーバとj番目のサーバとが接続関係にある場合には、(i,j)成分及び(j,i)成分を「−1」にし、対角成分(i,i)をi番目に接続されたサーバに接続されたサーバの数とする。接続行列Aでは、任意の要素αi,jについて、
Figure 0004340733
が成立する。
負荷係数決定手段260は、上記接続行列Aに対して、G=(−lA+E)(Eは単位行列)の固有値を求める。一般に、n×nの正方行列では、固有値はn個ある。固有値をk(l)とすると、全ての固有値k(l)が−1よりも大きく、かつ、1以下になるような0<l<1の範囲のlの値を求め、そのうちの最大値を求める(ステップF130)。このようにして求めた0<l<1の範囲のlの最大値を、負荷移管係数として、負荷係数285に格納する(ステップF140)。
本実施形態の効果について説明する。本実施形態では、クライアントからの要求の全てが、特定の装置を通らずに、それぞれのサーバに送信される。このため、ボトルネックとなる装置が存在せず、大容量の負荷にも対応することが可能である。また、本実施形態では、サーバ同士は、周期的に、負荷情報交換手段280によって負荷情報を交換し、負荷目標値330を設定する。このため、サーバの負荷情報は、その周期よりも古い情報となることがない。従って、本実施形態では、キャッシュにより古いサーバ情報が残るDNSラウンドロビンに比して、最新の負荷情報による負荷分散が可能である。
更に、本実施形態では、接続行列Aに対して、G(−lA+E)の固有値が−1より大きく、1以下になるように、負荷係数285を求め、この負荷係数285を用いて負荷目標値330を決定する。このようにすることで、他のサーバとの間で負荷移管を繰り返した際に、サーバ負荷が平準化された負荷分散を実現できる。以下、サーバ負荷の平準化について、詳細に説明する。
t回目の負荷移管によるサーバiの負荷を、xi,tで表す。各サーバでのt回目の負荷交換プロトコルの結果の負荷を、
Figure 0004340733
とおく。t+1回目の負荷移管によるサーバiの負荷は、t回目の負荷移管によるサーバiの負荷xi,tを用いて、
Figure 0004340733
と表すことができる。lは、負荷係数285の値である。これを変形すると、t+1回目の負荷と、t回目の負荷との差は、
Figure 0004340733
と表すことができる。接続行列を用いると、各サーバにおけるt+1回目の負荷と、t回目の負荷との差は、
Figure 0004340733
と表すことができる。すなわち、
Figure 0004340733
である。
一般に、G=(−lA+E)の固有値が−1よりも大きく、かつ、1以下であれば、
Figure 0004340733
は収束するので、負荷係数決定手段260が、固有値がこの範囲に収まるようにlを設定すれば、
Figure 0004340733
は収束する。また、このとき、全ての固有値が0以上、かつ、1以下であれば、負荷は単調に収束する。固有値については、
Figure 0004340733
のため、固有値のうち、ひとつは1であることがわかっており、その固有ベクトルは、
Figure 0004340733
である。初期負荷ベクトルxを固有ベクトルの一次結合に分解し、tを無限大に近付けたとき負荷ベクトルxのリミットを考えると、1以外の固有値は−1よりも大きく、かつ、1よりも小さいので0に収束し、最終的に、固有ベクトルの一次結合のうちの
Figure 0004340733
の成分のみが残る。従って、負荷移管を繰り返すことで、負荷は平準化する。
以下、具体例を用いて説明する。図9は、実施例1の負荷分散システムの構成を示している。本実施例では、サーバ200として、サーバA200−a、サーバB200−b、及び、サーバC200−cの3台のサーバを考える。また、サーバA200−aとサーバB200−b、及び、サーバB200−bとサーバC200−cとが相互認識し、定期的に負荷情報の交換を行っているもとする。この構成では、負荷係数決定手段260が、図8のステップF110で、ネットワーク構成情報250(図1)を読み込んで作成する接続行列Aは、下記のようになる。
Figure 0004340733
上記接続行列Aでは、1行目及び1列目がサーバA200−aに対応し、2行目及び2列目がサーバB200−bに対応している。また、3行目及び3列目は、サーバC200−cに対応している。
負荷係数決定手段260は、ステップF130で、作成した接続行列Aを用いて、
Figure 0004340733
の固有値を求める。その結果、k=1−3l、k=−l+1、k=1となる。単調に収束させるために、全ての固有値を0以上でかつ1以下にするには、0≦l≦(1/3)かつ0≦l≦1なので、これらを満たすlの最大値は1/3である。負荷係数決定手段260は、図8のステップF140で、「1/3」を負荷係数285に格納する。
次に、サーバA200−aには、クライアント400−a、400−bがアクセスし、サーバB200−bには、クライアント400−c、400−dがアクセスしているものとする。また、サーバC200−cには、クライアント400−e、400−fがアクセスしているものとする。当初、各クライアントは、10アクセス/秒でアクセスしていたとする。あるときに、サーバB200−bにアクセスするクライアント400−cのアクセス頻度が30アクセス/秒に増えたとする。そうすると、サーバB200−bの負荷は、20アクセス/秒から40アクセス/秒に増えることになる。
サーバA200−a及びサーバB200−bは、負荷情報交換手段280により、定期的に、互いの負荷情報を交換している(図2のステップZ130)。サーバB200−bは、サーバA200−aから負荷情報を取得することで、サーバA200−aの負荷が20アクセス/秒であることを知る(図3のステップA220)。融通しきい値270をD=1.5とすると、サーバB200−bの負荷と、サーバA200−aの負荷の比は、(40/20)>1.5となるので、ステップA230からステップA240に移行し、サーバB200−bは、サーバA200−aに対して、負荷融通を依頼する。
サーバA200−aは、図5のステップC110で、負荷融通要求を受信すると、ステップC120で、負荷が受入れ可能であるか否かをチェックする。負荷移管による問題がない場合、サーバA200−aは、ステップC130で、負荷融通要求に対して、許諾応答をする。サーバB200−bは、図3のステップA250で、サーバA200−aから許諾応答を受け取ると、負荷情報交換手段280により、状態フラグ340を「負荷融通状態」に設定し、移管先サーバ名335をサーバAに設定する。また、ステップA270で、負荷目標値330を、40−(1/3)×(40−20)=33に設定する。
サーバB200−bは、図6のステップD110で、クライアントからの要求処理を受けると、ステップD120で、状態フラグ340を調べる。状態フラグ340が「負荷融通状態」であるので、ステップD130へ移行して、負荷計測手段290により、サーバB200−bの負荷を計測する。その結果、例えば、負荷が40アクセス/秒であることがわかる。負荷融通手段220は、負荷(40アクセス/秒)と、負荷目標値330(33アクセス/秒)とを比較する。負荷が目標値よりも大きいので、ステップD140からステップD150へ移行して、サーバB200−bは、負荷融通手段220により、移管先サーバ名335で示すサーバA200−aへのリダイレクト応答を作成し、トランスポートスタック230を通じて、クライアントに、リダイレクト応答を返す。
クライアントは、図7のステップE120で、サーバB200−bからリダイレクト応答を受信する。リダイレクト応答を受けとったクライアントは、ステップE150で、指令されたリダイレクト先であるサーバA200−aにアクセス先を変更し、ステップE110に戻って、サーバA200−aに処理要求を送信する。このようにして、サーバB200−bに対するクライアントからの処理要求を、負荷が目標値に下がるまで、サーバA200−aにリダイレクトすることで、負荷分散を実現する。
次に、別の具体例を用いて説明する。図10は、実施例2の負荷分散システムの構成を示している。本実施例では、サーバ200として、サーバA200−a、サーバB200−b、サーバC200−c、及び、サーバD200−dの4つのサーバを考える。これらは、互いに相互認識し、定期的に負荷情報の交換を行っている。この構成では、図8のステップF110で、負荷係数決定手段260が、ネットワーク構成情報250(図1)を読み込んで作成する接続行列Aは、下記のようになる。
Figure 0004340733
負荷係数決定手段260が、l=0.4と設定すると、行列G=(−lA+E)の1を除く固有値のうちで、絶対値が最大となる固有値は−0.84となり、この値は、−1より大きく1以下である。従って、負荷は収束する。図11に、各サーバの負荷の変化の様子を示す。この例では、融通しきい値Dは1.2とした。同図では、縦軸はサーバの負荷を表し、横軸は時間を表している。同図を参照すると、4台のサーバのうちの1台に負荷をかけた場合に、他の3台のサーバとの間で負荷を融通することで、最終的に、サーバ間で負荷が平準化できることがわかる。比較例として、同じ条件で、l=0.8としたときのサーバ負荷の変化の様子を図12に示す。この場合には、固有値のうちで絶対値が最大となるものは−2.7となるので、負荷移管を繰り返しても、同図に示すように各サーバの負荷は変動し、平準化されない。
なお、融通しきい値270について、他サーバへの負荷の移管は、負荷の比が融通しきい値を超えるときに行われるため、融通しきい値は、最終的には、平準化された負荷のサーバ間でのばらつきを示すことになる。この値を1とすると、負荷移管が頻発してかえって効率が落ちるため、融通しきい値は、1.1〜1.5程度の値とすることが好ましい。
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の負荷分散システム、方法、及び、プログラムは、上記実施形態にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
本発明は、クライアントからの大量の負荷を処理するロードバランサといった用途に適用できる。また、センサーやRFIDからの大量の負荷を処理するロードバランサといった用途にも適用可能である。
本発明の第1実施形態の負荷分散システムの構成を示すブロック図。 負荷分散システムの全体的な処理の流れを示すフローチャート。 負荷情報交換処理の詳細な手順を示すフローチャート。 負荷情報提供処理の詳細な手順を示すフローチャート。 負荷融通要求処理の詳細な手順を示すフローチャート。 クライアント要求処理の詳細手順を示すフローチャート。 クライアントの動作手順を示すフローチャート。 負荷係数の決定の手順を示すフローチャート。 実施例1の負荷分散システムの構成を示すブロック図。 実施例2の負荷分散システムの構成を示すブロック図。 実施例2における各サーバの負荷の変化の様子を示すグラフ。 比較例における各サーバの負荷の変化の様子を示すグラフ。 従来の負荷分散システムの構成を示すブロック図。 従来の負荷分散システム(DNSラウンドロビン)の構成を示すブロック図。 従来の負荷分散(非集中型負荷分散)システムの構成を示すブロック図。 従来の負荷分散システムの構成を示すブロック図。
符号の説明
100:負荷分散システム
200:サーバ
210:ディスパッチ手段
220:負荷融通手段
230:トランスポートスタック
240:CPU
250:ネットワーク構成情報
260:負荷係数決定手段
270:融通しきい値
280:負荷情報交換手段
285:負荷係数
290:負荷計測手段
300:アプリケーション群
310:ネットワーク
320:タイマ
330:負荷目標値
335:移管先サーバ名
340:状態フラグ
400:クライアント

Claims (35)

  1. 複数のサーバを有するネットワークシステムのサーバ間の接続関係を示すネットワーク構成を記憶するネットワーク構成情報を参照し、負荷係数を決定する負荷係数決定手段と、
    他のサーバから負荷情報を取得し、自サーバの負荷、及び、他のサーバの負荷と、前記負荷係数とに基づいて、負荷目標値を設定する負荷情報交換手段と、
    自サーバの負荷と前記負荷目標値とを比較し、自サーバの負荷が前記負荷目標値以下のとき、クライアントからの処理要求に対する処理を自サーバ内で実行させ、自サーバの負荷が前記負荷目標値を超えるとき、前記処理要求に対応する処理を、前記他のサーバで実行させる負荷融通手段とを備えることを特徴とする負荷分散システム。
  2. 前記負荷情報交換手段は、前記自サーバの負荷から、該自サーバの負荷と他のサーバの負荷との差に前記負荷係数を乗じた値を引いた値を、前記負荷目標値として設定する、請求項1に記載の負荷分散システム。
  3. 前記負荷情報交換手段は、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、負荷融通を行うか否かを示す状態フラグを「負荷融通状態」に設定して前記負荷目標値の設定を行い、前記負荷融通手段は、前記状態フラグが「負荷融通状態」のとき、前記自サーバの負荷と前記負荷目標値との比較を行う、請求項1又は2に記載の負荷分散システム。
  4. 前記負荷融通手段は、前記比較の結果、前記自サーバの負荷が前記負荷目標値以下であると、前記状態フラグを、負荷融通を行わない状態を示す「通常状態」に設定する、請求項3に記載の負荷分散システム。
  5. 前記負荷情報交換手段は、前記状態フラグが「負荷融通状態」でないとき、前記他のサーバから負荷情報を取得する、請求項3又は4に記載の負荷分散システム。
  6. 前記負荷情報交換手段は、前記状態フラグを「負荷融通状態」に設定すると、前記他のサーバを指し示す情報を移管先サーバ記憶部に格納し、前記負荷融通手段は、自サーバの負荷が前記負荷目標値を超えるとき、前記移管先サーバ記憶部を参照して、前記処理要求に対する処理を、該移管先サーバ記憶部に格納されたサーバで実行させる、請求項3〜5の何れか一に記載の負荷分散システム。
  7. 前記負荷情報交換手段は、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、前記他のサーバに負荷融通が可能か否かを問い合わせる負荷融通要求を送信し、該要求に対して許諾する旨の応答を受信すると、前記状態フラグを「負荷融通状態」に設定すると共に、当該他のサーバを示す情報を前記移管先サーバ記憶部に格納する、請求項6に記載の負荷分散システム。
  8. 前記負荷情報交換手段は、他のサーバから、前記負荷融通要求を受信すると、自サーバの負荷情報を参照して許諾するか否かを決定し、許諾するときには許諾応答を、拒否するときには拒否応答を返信する、請求項7に記載の負荷分散システム。
  9. 前記負荷融通手段は、自サーバの負荷が前記負荷目標値を超えるとき、前記処理要求に対して、他のサーバをリダイレクト先とするリダイレクト応答をクライアントに送信し、前記処理要求に対する処理を他のサーバで実行させる、請求項1〜8の何れか一に記載の負荷分散システム。
  10. 前記負荷融通手段は、自サーバの負荷が前記負荷目標値以下であるとき、ディスパッチ手段により前記処理要求に対応するアプリケーションを起動し、該アプリケーションの処理結果を、前記クライアントに対する応答として送信する、請求項1〜9の何れか一に記載の負荷分散システム。
  11. 前記負荷係数決定手段は、前記ネットワーク構成情報に基づいて、行及び列を各サーバに対応させ、サーバ間で接続関係にあるサーバに対応する要素を−1、接続関係にないサーバに対応する要素を0、対角要素をその行に対応するサーバに接続されたサーバの数とする接続行列Aを作成し、該作成した接続行列Aに対して、lを変数とし、Eを単位行列としてG=(−lA+E)の固有値k(l)を求め、全ての固有値k(l)が−1より大きく1以下となる0<l<1のうちのlの最大値を求め、該lの最大値を、負荷係数として決定する、請求項1〜10の何れか一に記載の負荷分散システム。
  12. 複数のサーバを有するネットワークシステムで、サーバの負荷を分散させる方法であって、
    前記サーバが、前記ネットワークシステムのサーバ間の接続関係を示すネットワーク構成を記憶するネットワーク構成情報を参照し、負荷係数を決定する負荷係数決定ステップと、
    前記サーバが、他のサーバとの間で負荷情報を交換し、自サーバの負荷、及び、他のサーバの負荷と、前記負荷係数とに基づいて、負荷目標値を設定する負荷目標値設定ステップと、
    前記サーバが、自サーバの負荷と前記負荷目標値とを比較し、クライアントからの処理要求に対する処理を、自サーバで実行するか、又は、前記他のサーバに実行させるかを決定する処理サーバ決定ステップとを有し、
    前記サーバが、前記処理サーバ決定ステップで、自サーバで実行すると決定すると、前記処理を自サーバ内で実行し、他のサーバに実行させると決定すると、前記処理を、前記他のサーバで実行させることを特徴とする負荷分散方法。
  13. 前記処理サーバ決定ステップでは、前記サーバは、自サーバの負荷と前記負荷目標値とを比較し、自サーバの負荷が前記負荷目標値以下であれば、前記処理を自サーバ内で実行すると決定し、自サーバの負荷が前記目標値を超えるときには、前記他のサーバに実行させると決定する、請求項12に記載の負荷分散方法。
  14. 前記負荷目標値設定ステップでは、前記サーバは、前記自サーバの負荷から、該自サーバの負荷と他のサーバの負荷との差に前記負荷係数を乗じた値を引いた値を、前記負荷目標値として設定する、請求項12又は13に記載の負荷分散方法。
  15. 前記負荷目標値設定ステップでは、前記サーバは、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、負荷融通を行うか否かを示す状態フラグを「負荷融通状態」に設定して、前記負荷目標値の設定を行い、
    前記サーバは、前記処理要求を受け付けると、前記状態フラグを参照し、該状態フラグが「負荷融通状態」であれば、前記処理サーバ決定ステップを実行する、請求項12〜14の何れか一に記載の負荷分散方法。
  16. 前記処理サーバ決定ステップでは、前記サーバは、前記処理要求に対する処理を自サーバで実行すると決定すると、前記状態フラグを、負荷融通を行わない状態を示す「通常状態」に設定する、請求項15に記載の負荷分散方法。
  17. 前記負荷目標値設定ステップでは、前記サーバは、前記状態フラグを「負荷融通状態」に設定すると、前記他のサーバを指し示す情報を移管先サーバ記憶部に格納する、請求項15又は16に記載の負荷分散方法。
  18. 前記サーバは、前記処理要求に対する処理を他のサーバに実行させると決定すると、前記移管先サーバ記憶部を参照して、該移管先サーバ記憶部に格納されたサーバに、前記処理を実行させる、請求項17に記載の負荷分散方法。
  19. 前記負荷目標値設定ステップでは、前記サーバは、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、前記他のサーバに負荷融通が可能か否かを問い合わせる負荷融通要求を送信し、該要求に対して許諾する旨の応答を受信すると、前記状態フラグを「負荷融通状態」に設定し、当該他のサーバを示す情報を前記移管先サーバ記憶部に格納して、前記負荷目標値を設定する、請求項17又は18に記載の負荷分散方法。
  20. 前記サーバは、他のサーバから、前記負荷融通要求を受信すると、自サーバの負荷情報を参照して許諾するか否かを決定し、許諾するときには許諾応答を、拒否するときには拒否応答を返信する、請求項19に記載の負荷分散方法。
  21. 前記サーバは、前記処理サーバ決定ステップで、他のサーバに実行させると決定すると、前記処理要求に対して、他のサーバをリダイレクト先とするリダイレクト応答をクライアントに送信し、前記処理要求に対する処理を他のサーバで実行させる、請求項12〜20の何れか一に記載の負荷分散方法。
  22. 前記サーバは、前記処理サーバ決定ステップで、自サーバで実行すると決定すると、ディスパッチ手段により前記処理要求に対応するアプリケーションを起動し、該アプリケーションの処理結果を、前記クライアントに対する応答として送信する、請求項12〜20の何れか一に記載の負荷分散方法。
  23. 前記負荷係数決定ステップでは、前記サーバは、前記ネットワーク構成情報に基づいて、行及び列を各サーバに対応させ、サーバ間で接続関係にあるサーバに対応する要素を−1、接続関係にないサーバに対応する要素を0、対角要素をその行に対応するサーバに接続されたサーバの数とする接続行列Aを作成し、該作成した接続行列Aに対して、lを変数とし、Eを単位行列としてG=(−lA+E)の固有値k(l)を求め、全ての固有値k(l)が−1より大きく1以下となる0<l<1のうちのlの最大値を求め、該lの最大値を、負荷係数として決定する、請求項12〜22の何れか一に記載の負荷分散方法。
  24. 複数のサーバを有するネットワークシステムで、サーバの負荷を分散させる処理を前記サーバに実行させるプログラムあって、前記サーバに、
    前記ネットワークシステムのサーバ間の接続関係を示すネットワーク構成を記憶するネットワーク構成情報を参照し、負荷係数を決定する負荷係数決定ステップと、
    他のサーバとの間で負荷情報を交換し、自サーバの負荷、及び、他のサーバの負荷と、前記負荷係数とに基づいて、負荷目標値を設定する負荷目標値設定ステップと、
    自サーバの負荷と前記負荷目標値とを比較し、クライアントからの処理要求に対する処理を、自サーバで実行するか、又は、前記他のサーバに実行させるかを決定する処理サーバ決定ステップとを実行させ、
    前記処理サーバ決定ステップで、自サーバで実行すると決定すると、前記処理を自サーバ内で実行し、他のサーバに実行させると決定すると、前記処理を、前記他のサーバで実
    行させることを特徴とするプログラム。
  25. 前記処理サーバ決定ステップでは、自サーバの負荷と前記負荷目標値とを比較し、自サーバの負荷が前記負荷目標値以下であれば、前記処理を自サーバ内で実行すると決定し、自サーバの負荷が前記目標値を超えるときには、前記他のサーバに実行させると決定する、請求項24に記載のプログラム。
  26. 前記負荷目標値設定ステップでは、前記自サーバの負荷から、該自サーバの負荷と他のサーバの負荷との差に前記負荷係数を乗じた値を引いた値を、前記負荷目標値として設定する、請求項24又は25に記載のプログラム。
  27. 前記負荷目標値設定ステップでは、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、負荷融通を行うか否かを示す状態フラグを「負荷融通状態」に設定して、前記負荷目標値の設定を行い、
    前記サーバに、前記処理要求を受け付けると、前記状態フラグを参照し、該状態フラグが「負荷融通状態」であれば、前記処理サーバ決定ステップを実行する処理を実行させる、請求項24〜26の何れか一に記載のプログラム。
  28. 前記処理サーバ決定ステップでは、前記処理要求に対する処理を自サーバで実行すると決定すると、前記状態フラグを、負荷融通を行わない状態を示す「通常状態」に設定する、請求項27に記載のプログラム。
  29. 前記負荷目標値設定ステップでは、前記サーバは、前記状態フラグを「負荷融通状態」に設定すると、前記他のサーバを指し示す情報を移管先サーバ記憶部に格納する、請求項27又は28に記載のプログラム。
  30. 前記サーバに、前記処理要求に対する処理を他のサーバに実行させると決定したときに、前記移管先サーバ記憶部を参照して、該移管先サーバ記憶部に格納されたサーバに、前記処理を実行させる処理を実行させる、請求項29に記載のプログラム。
  31. 前記負荷目標値設定ステップでは、前記自サーバの負荷と他のサーバの負荷との比が所定のしきい値を超えると判断すると、前記他のサーバに負荷融通が可能か否かを問い合わせる負荷融通要求を送信し、該要求に対して許諾する旨の応答を受信すると、前記状態フラグを「負荷融通状態」に設定し、当該他のサーバを示す情報を前記移管先サーバ記憶部に格納して、前記負荷目標値を設定する、請求項29又は30に記載のプログラム。
  32. 前記サーバに、他のサーバから、前記負荷融通要求を受信したときに、自サーバの負荷情報を参照して許諾するか否かを決定し、許諾するときには許諾応答を、拒否するときには拒否応答を返信する処理を実行させる、請求項31に記載のプログラム。
  33. 前記サーバに、前記処理サーバ決定ステップで、他のサーバに実行させると決定したときに、前記処理要求に対して、他のサーバをリダイレクト先とするリダイレクト応答をクライアントに送信し、前記処理要求に対する処理を他のサーバで実行させる処理を実行させる、請求項24〜32の何れか一に記載のプログラム。
  34. 前記サーバに、前記処理サーバ決定ステップで、自サーバで実行すると決定したときに、ディスパッチ手段により前記処理要求に対応するアプリケーションを起動し、該アプリケーションの処理結果を、前記クライアントに対する応答として送信する処理を実行させる、請求項24〜32の何れか一に記載のプログラム。
  35. 前記負荷係数決定ステップでは、前記ネットワーク構成情報に基づいて、行及び列を各サーバに対応させ、サーバ間で接続関係にあるサーバに対応する要素を−1、接続関係にないサーバに対応する要素を0、対角要素をその行に対応するサーバに接続されたサーバの数とする接続行列Aを作成し、該作成した接続行列Aに対して、lを変数とし、Eを単位行列としてG=(−lA+E)の固有値k(l)を求め、全ての固有値k(l)が−1より大きく1以下となる0<l<1のうちのlの最大値を求め、該lの最大値を、負荷係数として決定する、請求項24〜34の何れか一に記載のプログラム。
JP2006249651A 2006-09-14 2006-09-14 負荷分散システム、方法、及び、プログラム Expired - Fee Related JP4340733B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006249651A JP4340733B2 (ja) 2006-09-14 2006-09-14 負荷分散システム、方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006249651A JP4340733B2 (ja) 2006-09-14 2006-09-14 負荷分散システム、方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2008071156A JP2008071156A (ja) 2008-03-27
JP4340733B2 true JP4340733B2 (ja) 2009-10-07

Family

ID=39292679

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006249651A Expired - Fee Related JP4340733B2 (ja) 2006-09-14 2006-09-14 負荷分散システム、方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP4340733B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009449A (ja) * 2008-06-30 2010-01-14 Nec Corp 分散情報配置システム
JP5173855B2 (ja) * 2009-01-09 2013-04-03 日本放送協会 ネットワーク制御装置およびコンピュータプログラム
JPWO2011024930A1 (ja) * 2009-08-24 2013-01-31 日本電気株式会社 コンテンツ配信システム、コンテンツ配信方法及びコンテンツ配信用プログラム
WO2011070607A1 (ja) * 2009-12-07 2011-06-16 富士通株式会社 サーバシステムの制御方法及びサーバの制御プログラム
JP2012185638A (ja) * 2011-03-04 2012-09-27 Kddi Corp 負荷分散装置、負荷分散システム、負荷分散方法及び負荷分散プログラム
JP5702232B2 (ja) * 2011-06-14 2015-04-15 Kddi株式会社 サーバ連携互助システムならびにそのサーバおよびサーバ連携互助プログラム
JP2015119472A (ja) 2013-11-18 2015-06-25 株式会社リコー 選択システム、通信管理システム、通信システム、プログラム、及び選択方法
JP6291802B2 (ja) 2013-11-18 2018-03-14 株式会社リコー 制御システム、通信システム、プログラム、及び制御方法
JP2015099954A (ja) 2013-11-18 2015-05-28 株式会社リコー 制御システム、通信システム、プログラム、及び制御方法
JP2018160720A (ja) * 2017-03-22 2018-10-11 ブラザー工業株式会社 通信方法及び通信プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07168790A (ja) * 1993-12-15 1995-07-04 Oki Electric Ind Co Ltd 情報処理装置
JPH1021200A (ja) * 1996-06-28 1998-01-23 Hitachi Ltd 仕事融通量制御装置
JP3006551B2 (ja) * 1996-07-12 2000-02-07 日本電気株式会社 複数コンピュータ間の業務分散システム、業務分散方法および業務分散プログラムを記録した記録媒体
JP2000196677A (ja) * 1998-12-28 2000-07-14 Fujitsu Ltd ネットワ―クシステムに用いられる中継装置
JP2002334012A (ja) * 2001-05-10 2002-11-22 Nippon Telegr & Teleph Corp <Ntt> サービス要求処理方法及びその実施システム並びにその処理プログラムと記録媒体
JP2004133839A (ja) * 2002-10-15 2004-04-30 Fujitsu Ltd サーバ分散装置及びプログラム
JP4266786B2 (ja) * 2003-11-19 2009-05-20 株式会社日立製作所 情報処理システム及び情報処理装置
JP2006221450A (ja) * 2005-02-10 2006-08-24 Nec Access Technica Ltd 負荷分散装置、負荷分散方法、および、負荷分散プログラム

Also Published As

Publication number Publication date
JP2008071156A (ja) 2008-03-27

Similar Documents

Publication Publication Date Title
JP4340733B2 (ja) 負荷分散システム、方法、及び、プログラム
US10116584B2 (en) Managing content delivery network service providers
US11451472B2 (en) Request routing based on class
US8576710B2 (en) Load balancing utilizing adaptive thresholding
JP4974888B2 (ja) 分散要求ルーティング
JP5632074B2 (ja) データロードバランシングのためのデバイスおよび方法
US7792989B2 (en) Arrangement for selecting a server to provide distributed services from among multiple servers based on a location of a client device
US6078943A (en) Method and apparatus for dynamic interval-based load balancing
EP2356577B1 (en) Request routing and updating routing information utilizing client location information
US9497259B1 (en) Point of presence management in request routing
JP2011517193A (ja) ルーティングをリクエストするための方法とシステム
Datta A new task scheduling method for 2 level load balancing in homogeneous distributed system
Filali et al. A simple cache based mechanism for peer to peer resource discovery in grid environments
WO2020107768A1 (en) Collaborative in-network name-to-locator resolution support for information centric networking
JP3950113B2 (ja) グリッドシステムにおけるジョブ割付方法、グリッド仲介装置及びそのプログラム
Keller et al. Server Workload Assignment for Real-Time Range Queries in Adaptive Quad Streaming Sensor Environments
JP5212091B2 (ja) オブジェクト保持装置、負荷分散アクセスシステム、オブジェクト保持方法、負荷分散アクセス方法、及びプログラム
CN116800810A (zh) 一种quic握手方法、装置、电子设备和存储介质
JP2013149069A (ja) 負荷分散方法、分散処理システム、分散処理装置、および、コンピュータ・プログラム
Borkar et al. Implementation of round robin policy in DNS for thresholding of distributed web server system
Vijayabharathi Customized Automatic Load Sharing For a Network of Workstations
Ramana et al. NDLB: Nearest Dispatcher Load Balancing approach for Web Server Cluster
JP5549074B2 (ja) サーバシステム、負荷分散方法、及び、プログラム
Sangam et al. Fairly redistributing failed server load in a distributed system
Miura et al. Evaluation of integration effect of content location and request routing in content distribution networks

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080925

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081125

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: 20090521

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090603

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

Free format text: PAYMENT UNTIL: 20120717

Year of fee payment: 3

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: 20120717

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130717

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees