JP2004171572A - サーバ間の負荷分散方法、負荷分散システム、負荷分散サーバおよびプログラム - Google Patents

サーバ間の負荷分散方法、負荷分散システム、負荷分散サーバおよびプログラム Download PDF

Info

Publication number
JP2004171572A
JP2004171572A JP2003389520A JP2003389520A JP2004171572A JP 2004171572 A JP2004171572 A JP 2004171572A JP 2003389520 A JP2003389520 A JP 2003389520A JP 2003389520 A JP2003389520 A JP 2003389520A JP 2004171572 A JP2004171572 A JP 2004171572A
Authority
JP
Japan
Prior art keywords
server
client
request
servers
group
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.)
Pending
Application number
JP2003389520A
Other languages
English (en)
Inventor
Nayeem Islam
イスラム ナイーム
Shahid Shoaib
ショアイブ シャヒド
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.)
Docomo Innovations Inc
Original Assignee
Docomo Communications Labs USA Inc
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 Docomo Communications Labs USA Inc filed Critical Docomo Communications Labs USA Inc
Publication of JP2004171572A publication Critical patent/JP2004171572A/ja
Pending legal-status Critical Current

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1034Reaction to server failures by a load balancer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】 ユーザにより体感されるクライアントサーバシステムのパフォーマンスを、効果的に最適化することを可能とする。
【解決手段】 本発明は、好ましい態様として、1以上のクライアントを含むクライアント群から、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを受信し一時保留するステップと、過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を特定するステップと、前記待ち時間に基づき、前記サーバ群の中から、一時保留している要求データに応じたデータ処理を行うサーバを選択するステップとを備えることを特徴とするサーバ間の負荷分散方法を提供する。
【選択図】 図1

Description

本発明は、複数サーバ間の負荷分散技術に関連し、より具体的には、クライアントのユーザインタフェースにおいて生成される要求に対するサーバ群の応答時間に基づき、サーバ群において要求に対する処理を分散する技術に関連する。
データ処理における情報およびリソースを共有する方法として、分散処理システムを通信ネットワーク内に配置する方法が広く用いられている。この場合、分散処理システムとは、一群のデータ処理装置が通信ネットワーク(以下、単に「ネットワーク」と呼ぶ)を介して相互に接続され、同じアプリケーションに従った処理を実行する形態のシステムをいう。分散処理システムを実現するにあたり広く採用されているアーキテクチャとして、クライアントサーバシステムがある。クライアントサーバシステムとは、データ処理能力が比較的小さいクライアント側のデータ処理装置(以下、単に「クライアント」と呼ぶ)が、豊富なデータ処理能力およびリソースを備えるサーバ側のデータ処理装置(以下、単に「サーバ」と呼ぶ)に対し、データ処理やデータ提供を要求する形態のシステムである。
近年、移動体クライアントの利用が広く普及してきた結果、人々の情報交換の方法が、私用であるか商用であるかを問わず、大きく変化してきている。例えば、よく知られるクライアントサーバシステムとして、World Wide Web(以下、単に「Web」と呼ぶ)がある。Webにおいては、HTTP(Hypertext Transfer Protocol)と呼ばれる通信プロトコルに従い、世界規模のコンピュータのネットワークであるインターネットを介して、データの送受信が行われる。Webのクライアントは、Webのサーバから、Webにおいて通信可能な文書データやページ表示データ等を取得し、それらの内容を表示する。インターネットおよびWebの利用が広範に拡大するに伴い、ネットワーク内のサーバに課される処理量も増大してきている。従って、ネットワーク内において各種サービスを提供するサービスプロバイダは、サーバ群に対しデータ処理を要求する要求データ(以下、単に「要求」と呼ぶ)を制御するために、サーバ負荷分散と呼ばれる技術に注目している。サーバ負荷分散とは、サーバファームと呼ばれるサーバ群に含まれるサーバ間において、クライアントからの要求を分散する技術のことをいう。
サーバファームに含まれる複数のサーバに対し送信されたデータに関し、負荷分散を行う従来技術の例として、DNS(Domain Naming System)サーバによる負荷分散がある。DNSは、ラウンドロビン法に従いリスト内に示される複数のサーバを任意の順序で総当たり的に選択することにより、処理に用いるサーバを分散する。負荷分散を行う従来技術の他の例として、例えばCisco Systems(本社:米国カリフォルニア州サンノゼ)が生産するCatalyst 6000シリーズ等のネットワークスイッチ(以下、単に「スイッチ」と呼ぶ)を用いるものがある。そのようなスイッチは、サーバファームとネットワークとの間に配置され、例えば、サーバファームに含まれる個々のサーバが、処理可能なクライアントとの接続許容数を超過することなく選択されるように、重み付けされたラウンドロビン法に従い処理に用いるサーバを選択する。また、そのようなスイッチのあるものは、サーバの負荷を示すマトリクス表に基づく最小接続選択法に従い、処理に適するサーバの決定を行うこともできる。例えば、単純な最小接続選択法によれば、現在のクライアントの接続数が最小であるサーバが選択される。また、重み付けされた最小接続選択法によれば、クライアントとの間の接続許容数に対する現在の接続数の比率が最小であるサーバが選択される。
調査によれば、ユーザインタフェースにおいて生成されるデータ処理の要求に対する応答時間によって、ユーザにより体感されるシステムのパフォーマンスが大きく左右されることが分かっている。すなわち、ユーザは、ユーザが行った要求に対してシステムが応答するまでの待ち時間が長いと、そのシステムのパフォーマンスを悪く評価する。これに対し、上述した従来技術によるサーバ間の負荷分散技術は、応答時間を直接考慮することなく、任意的な規則もしくはサーバの現在の負荷に応じて要求をサーバ間で分散させるため、ユーザにより体感されるシステムのパフォーマンスを効果的に最適化することができない。さらに、従来技術の多くは、それを実行するための専用のハードウェアを必要とする。
従って、ユーザにより体感されるシステムのパフォーマンスを効果的に最適化することを可能とする、より良いサーバ間の負荷分散システムおよび負荷分散方法が必要とされる。そこで、本発明は、サーバの応答時間を基準指標として用いることにより、サーバに対する要求の処理に伴う負荷の分散を行うシステムおよび方法を提案する。さらに、本発明は、汎用的なデータ処理装置により実現可能で、高い柔軟性と低コストを兼ね備える負荷分散システムを提案する。
上記課題を実現するために、本発明は、1以上のクライアントを含むクライアント群から、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを受信し一時保留するステップと、過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を特定するステップと、前記待ち時間に基づき、前記サーバ群の中から、一時保留している要求データに応じたデータ処理を行うサーバを選択するステップとを備えることを特徴とするサーバ間の負荷分散方法を提供する。
また、本発明は、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを生成可能なクライアントを、1以上含むクライアント群と、過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を記憶する記憶装置と、前記サーバ群に含まれるいずれかのサーバにおいて、前記クライアント群から要求データを受信して一時保留し、前記待ち時間に基づいて、前記サーバ群の中から、一時保留している要求データに応じたデータ処理を行うサーバを選択する負荷分散エージェントとを備えることを特徴とするサーバ間の負荷分散システムを提供する。
また、本発明は、クライアントを1以上含むクライアント群から、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを受信する受信部と、過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を記憶する記憶部と、前記受信部が要求データを受信した場合、前記待ち時間に基づいて、前記サーバ群の中から、当該要求データに応じたデータ処理を行うサーバを選択する選択部とを備えることを特徴とする負荷分散サーバを提供する。
さらに、本発明は、プロセッサに、クライアントを1以上含むクライアント群から、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを受信する受信処理と、過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を記憶する記憶処理と、前記受信処理において要求データが受信された場合、前記待ち時間に基づいて、前記サーバ群の中から、当該要求データに応じたデータ処理を行うサーバを選択する選択処理とを実行させるプログラムを提供する。
本発明に係る方法、システム、サーバおよびプログラムによれば、ユーザにより体感されるシステムのパフォーマンスが向上するように、サーバ間の負荷分散が効果的に最適化される。また、本発明に係る方法、システム、サーバおよびプログラムによれば、汎用的なデータ処理装置によりサーバ間の負荷分散が行われるため、高い柔軟性を備えたシステムが、低コストで実現される。
以下、本発明の好ましい実施形態を説明する。以下の説明においては、HTTPを用いて通信を行うクライアントサーバシステムに本発明を適用した例を実施形態として示すが、HTTPは本発明の実施に利用可能な通信プロトコルの一例であり、例えばTCP(Transmission Control Protocol)、SCTP(Stream Control Transmission Protocol)、UDP(User Datagram Protocol)等の他の通信プロトコルにより通信を行うクライアントサーバシステムに対しても本発明が適用可能であることは言うまでもない。
ユーザがクライアントを介して、対話形式で、ネットワークに接続されたサーバに対しデータ処理やデータ提供を要求する場合、ユーザの要求を満たす応答がユーザに提供されるまでの応答時間は、ユーザがそのネットワークシステムのパフォーマンスをどのように体感するかを大きく左右する。本実施形態によれば、ユーザインタフェースにおいて生成される要求に対する応答時間が計測され、計測された応答時間がサーバに対する要求の処理に伴う負荷の分散に用いられる。すなわち、その応答時間に応じて、クライアントのサーバに対する要求が、その要求に応答可能な複数のサーバ間に分散される。詳細は後述するが、本発明に係るサーバ間の負荷分散方法、負荷分散システム、サーバおよびプログラムによれば、クライアントの要求に対し応答可能なサーバ群の中から最適と思われるサーバが選択されることにより、ユーザにより体感されるネットワークシステムのパフォーマンスが向上される。
[1.アプリケーションモデル]
図1は、本実施形態に係るサーバ間の負荷分散技術により、サーバクライアントシステムのパフォーマンスがどのように最適化されるかを説明するために、サーバクライアントシステムに含まれるユーザインタフェースにおいて、要求の発生から消滅までを時系列的に示した図である。クライアントを操作するユーザは、サーバ側のアプリケーションにより提供されるサービスを利用する場合、思考時間TTと待ち時間Wを交互に体験する。それぞれの思考時間TTの終期において、ユーザはクライアントを介してサーバに対し要求を送出し、その後、その応答を待つ。サーバは、アプリケーションに従い、通常、ループ処理により常にユーザからの要求を監視している。そして、ユーザからの要求を受け取ると、サーバはデータの処理、データの取得等を行い、そのユーザからの要求を満たす応答の内容を生成する。その後、サーバは、ユーザに対し生成した応答を送り返す。
例えば、HTML(HyperText Markup Language)形式のデータを扱うアプリケーション間でデータの受け渡しが行われる場合、ユーザはクライアントにおいて実行されるWebブラウザに対し、Webページ形式のフォームに必要事項を入力して送信したり、サーバからWebページを取得するためのURL(Uniform Resource Locator)へのリンクをクリックしたりすることにより、サーバに対し希望するデータの送信を要求することができる。すなわち、ユーザが、例えば何らかの応答を期待してフォームに必要事項を記入して送信したり、Webページを表示させるためにリンクをクリックしたりすると、クライアントからサーバに対し要求が送信される。
ある要求に対応する待ち時間Wは、クライアントが要求処理を行う時間を含んでいる。例えば、ユーザがクライアントを介して遠隔地に配置されたサーバ側のアプリケーションに対し要求を送る場合、その要求に対応する待ち時間Wは、(a)クライアントとサーバの間のデータ通信に費やされる時間と、(b)サーバがユーザからの要求に応じた処理を行うために費やされる時間、すなわち要求先のサーバ側のアプリケーションによってデータの処理、データの入出力等を行うための時間とに分解される。
すなわち、以下の数式が成立する。
Figure 2004171572
ただし、上記の式(1)において、Wは待ち時間、Cは総データ通信時間、すなわち図1においてC1およびC2で表される双方向のデータ通信に要する時間の合計、そしてSはサーバにおけるサービス時間、すなわちサーバによるデータ処理時間およびデータ入出力時間の合計である。
今、CおよびSが常時任意に変化すると仮定すると、式(1)の各変数の平均値の間に以下の数式が成立する。
Figure 2004171572
ただし、上記の式(2)において、a(W)は待ち時間Wの平均値、a(C)は総データ通信時間Cの平均値、a(S)はサービス時間Sの平均値である。
さらに、CおよびSが統計的に互いに独立して変化すると仮定すると、各変数の間に以下の数式で示される関係が成立する。
Figure 2004171572
ただし、v(W)は待ち時間Wの分散、v(C)は総データ通信時間Cの分散、v(S)はサービス時間Sの分散である。
通常、ユーザが体感するシステムのパフォーマンスは、待ち時間の平均値および分散、すなわちa(W)およびv(W)によって左右される。従って、クライアントに対し同様のサービスを提供可能な一群のサーバ間においてうまく負荷分散を行うことにより、a(W)およびv(W)を最小化することができれば、ユーザにシステムのパフォーマンスの向上を体感させることができる。
[2.クライアントサーバシステムモデル]
図2は、本実施形態に係るサーバ間の負荷分散を行うクライアントサーバシステム10をモデル的に示した図である。クライアントサーバシステム10は2種類のデータ処理装置、すなわちクライアント12とサーバ14をそれぞれ複数、備えている。クライアント12とサーバ14は、ネットワーク16により相互に接続されている。ネットワーク16は、例えば1つのネットワークしか含まないLAN(Local Area Network)や、異種の複数ネットワークを相互接続したWAN(Wide Area Network)等のいずれであってもよい。クライアント12は様々な種類の移動体データ処理装置のいずれであってもよく、例えばネットワーク16を介してインターネットに接続可能な携帯電話、PDA(Personal Digital Assistants)、小型コンピュータ等が考えられる。ユーザは、クライアント12を用いて、サーバ側のアプリケーションにより提供されるサービスを要求する。その要求に対し、一群のサーバ14の少なくともいずれか1つが、アプリケーションに従ってサービスの提供を行う。例えば、ユーザは、クライアントにおいて実行されるWebブラウザを用いて、データの要求を行い、データベースエンジンから送信されるデータの表示等を行うことができる。なお、データベースエンジンとは、サーバにおいてデータの格納および検索の管理を行うプログラムをいう。
クライアント12は、1以上のクライアント群20にグループ化されている。本実施形態において、1つのクライアント群20は、同じアクセスポイント18を介してネットワーク16に接続するクライアント12のグループである。クライアント12は、例えば、クライアント群20内で割り当てられる静的なID、もしくはクライアント12のIPアドレスに基づき動的に割り当てられるIDにより、クライアント群20の一員であると認識される。なお、クライアント12をクライアント群20にグループ化する方法としては、上述したものの他に様々な方法が考えられることは言うまでもない。例えば、それぞれのクライアント群20にクライアントが1つしか含まれないようにしてもよいし、特定のサービスプロバイダのサービスを利用するクライアント、WANにおいて同じ基地局を利用するクライアント等を同じグループとするようにしてもよい。
ユーザからの要求を含め、クライアント12から送出される全てのデータは、ネットワーク16を介してサーバ14に送信される前に、必ずアクセスポイント18を通過する。クライアント12はアクセスポイント18に接続するために、異なるアクセス経路26に対応した複数のネットワークインタフェースを備えていてもよい。アクセスポイント18は通信ハブとして機能する。従って、例えば、IEEE802.11bと呼ばれる通信規格に準拠した無線通信クライアントは、アクセスポイント18を介して有線LANに接続することができる。さらに、アクセスポイント18は、クライアント群20の中において、クライアント12から送出される要求を受信し、それに修正を加えた後、他の装置に対し送出することができる。その際、アクセスポイント18は、クライアント12から受信した要求に対し、クライアント群20のID、ユーザのID、アクセス経路のID等の識別子をタグとして付加するが、それらの処理の詳細については後述する。なお、クライアントサーバシステム10は複数のアクセスポイント18を含んでおり、それぞれのアクセスポイント18は複数のクライアント12により利用される。
図2に示されるように、ネットワーク16に接続されている複数のサーバ14は、サーバファーム22と呼ばれるグループを形成している。クライアント12はサーバファーム22に対し要求を行うことができ、その要求はサーバファーム22に含まれるいずれかのサーバ14により処理される。サーバファーム22に含まれるサーバ14の初期構成は、通常、サービスプロバイダのシステム管理者により決定される。すなわち、システム管理者は、クライアント12により要求されるサービスを提供するための一群のサーバ14を、サーバファーム22の構成員として決定する。
本実施形態において、サーバファーム22に含まれるサーバ14のそれぞれは、クライアント12から送出される様々な種類の要求のいずれに対しても同様に応答を行うことが可能である。すなわち、サーバファーム22内のサーバ14は、それぞれ、同じアプリケーションやデータを格納することができる。しかしながら、サーバファーム22に含まれるサーバ14のそれぞれは、常に全く同じ内容のデータ等を保持する必要はなく、例えば、クライアント12からの要求に対し応答を行う際に、必要に応じてサーバファーム22に含まれる他のサーバ14から、必要なデータやアプリケーションの複製を取得するようにしてもよい。
クライアントサーバシステム10は、負荷分散エージェント24を、少なくとも1つ、備えている。負荷分散エージェント24は、サーバファーム22に要求が到達した際に、その要求を適当なサーバ14に動的に割り当てる装置もしくはアプリケーションである。複数の負荷分散エージェント24が同時に機能することはなく、例えば、サーバファーム22に含まれるサーバ14のうちの1つが負荷分散エージェント24の機能を実行する。以下、負荷分散エージェント24の機能を実行するサーバ14を、負荷分散サーバ14sと呼ぶ。なお、複数のサーバ14が、負荷分散エージェント24の実行に要するアプリケーションおよびデータの複製を保持するように構成されていてもよい。システム管理者は、どのサーバ14に負荷分散サーバ14sの役割を担わせるかを決定することができる。サーバファーム22に含まれるいずれのサーバ14も、負荷分散サーバ14sの役割を果たすことができる。いずれかのサーバ14に負荷分散エージェントの機能を実行させる代わりに、サーバファーム22とネットワーク16との接続経路上に、スイッチ等の専用装置を配置し、その専用装置に負荷分散エージェント24の機能を実行させるようにしてもよい。サーバファーム22内において複数のサーバ14間の負荷を分散するために、負荷分散エージェント24はクライアント12からサーバファーム22に対し送られてくる要求のそれぞれを受信し、受信した要求を一時留保して、その要求に対し応答を行うサーバ14を1つ選択する。負荷分散エージェント24は、クライアント12からの要求を受信し一時保留するために、例えばHTTPを利用するアプリケーションに従い、それぞれのサーバ14から負荷分散エージェント24に対し、各サービスに応じたURLの送出を行わせる。その結果、サーバ14のそれぞれからはURLおよびIPアドレスを示す数値の組が送出され、その数値の組は、DNSサーバによりバインド処理され格納される。DNSサーバにおいて、サーバファーム22に含まれる各サーバ14のサービスに対応したURLは、全て、負荷分散エージェント24を実行する負荷分散サーバ14sのIPアドレスにバインドされる。そして、DNSサーバに対し、どのURLに対応するIPアドレスの検索要求がなされても、DNSサーバは、そのURLに対応するIPアドレスとして、常に負荷分散エージェント24のIPアドレスを返す。その結果、負荷分散エージェント24は、サーバファーム22に対する全ての要求を受信し、それらを一時保留することができる。
負荷分散エージェント24は、クライアント12からの要求を受信して一時保留すると、その要求に応じた処理を行うサーバ14を選択するためのサーバ間の負荷分散処理を行う。その処理のため、負荷分散エージェント24はサーバファーム22に含まれるサーバ14のリストを持っており、サーバ14のあるものが一時的に使用不可、通信不能等に陥るとそのリストを更新することにより、どのサーバ14がクライアント12からの要求に応答可能であるかを監視している。さらに、負荷分散エージェント24は、サーバファーム22において各種の要求に対する処理を行うアプリケーションのそれぞれに関し、処理に要した待ち時間を、例えば待ち時間の平均および分散といった基準指標の形態で、常に記録している。負荷分散エージェント24は、そのように記録している基準指標に基づき、サーバファーム22に含まれるサーバ14の1つを、クライアント12からの要求のそれぞれに対し割り当てる。そのような負荷分散処理の詳細は後述する。
[2.1.待ち時間の計測]
サーバファーム22に含まれるサーバ14の間で負荷分散を行うために、負荷分散エージェント24は、クライアント12からの要求の対象であるアプリケーションのそれぞれに関し、処理に要した待ち時間、総データ通信時間およびサービス時間の平均および分散を取得する必要がある。負荷分散エージェント24がこれらの基準指標を収集し、また他の装置に送信する方法としては、様々のものが考えられる。例えば、クライアント12のそれぞれに、自機より送出される全ての要求に関する情報を記録するライブラリプログラム(以下、単に「ライブラリ」と呼ぶ)を備えさせ、そのライブラリにより記録された情報を用いて、クライアント12がサーバ14に対する要求のそれぞれに関し、待ち時間Wを計測するようにしてもよい。例えば、Java(登録商標)プログラムに従い動作するクライアント12は、J2ME(Java 2 Platform, Micro Edition)に含まれるライブラリに従った処理により、クライアント12がHTTPに従って送出する全ての要求を記録することができる。より具体的には、例えば、以下のメソッドをJ2MEのjava.netライブラリに追加することにより、HTMLで記述されたフォームやURLに関する処理について、情報を収集することが可能となる。
Figure 2004171572
このメソッドにより、要求とその要求に対する応答が、その要求に用いられるフォームとともに記録され、そのフォームに含まれる全ての要求の数が数えられる。
そして、それぞれの要求と応答の組み合わせに関し、それらの時刻情報の差により、待ち時間が計測される。例えば、クライアント12は、クライアント12からサーバ14に送信されるHTTPに従った要求、例えばPOSTメソッドやGETメソッド等の情報を全て記録する。例えば、GETメソッドもしくはPOSTメソッドが実行されると、クライアント12は第1の時刻情報を取得する。サーバ14により、GETメソッドもしくはPOSTメソッドに対する応答が生成され、その応答がクライアント12により受信され、Webブラウザにより表示されると、クライアント12は第2の時刻情報を取得する。その後、クライアント12は、第1および第2の時刻情報の差を待ち時間として算出する。
ユーザからの要求に対するサーバ14における処理時間、すなわちサービス時間Sに関しては、サーバ14がタイマを用いて計測を行う。すなわち、サーバ14は、要求を受信した時刻、例えばサーバ14のアプリケーションにおいてService()メソッドがユーザからの要求に応じて呼び出された時刻と、その要求に対する応答が生成された時刻との差を算出し、サービス時間Sを計測する。サーバ14は計測したサービス時間Sを、要求に対する応答とともに、クライアント12に返送する。クライアント12は、上記のようにして待ち時間Wとサービス時間Sを取得すると、上記の式(1)に従い、待ち時間Wとサービス時間Sとの差である総データ通信時間Cを算出する。
[2.2.待ち時間の計測結果の収集および配信]
クライアント12は、要求先のアプリケーション毎に、実行時における待ち時間、総データ通信時間およびサービス時間の平均および分散を常時更新している。以下、本実施形態において計測される待ち時間、総データ通信時間およびサービス時間の平均をA(W)、A(C)およびA(S)と表し、また待ち時間、総データ通信時間およびサービス時間の分散をV(W)、V(C)およびV(S)で表すものとする。具体的には、クライアント12はライブラリに従い、所定の時間間隔Tの間に上述のようにして計測した待ち時間を用いて、その平均および分散、すなわちA(W)およびV(W)を算出し、その結果を記憶する。すなわち、A(W)およびV(W)の算出に用いられる待ち時間は、過去の時間間隔Tの間に計測されたもののみである。同様に、クライアント12は、所定の時間間隔Tの間に、上述のように取得したサービス時間Sおよび総データ通信時間Cを用いて、A(C)およびV(C)並びにA(S)およびV(S)を、それぞれ算出する。以下、A(W)、A(C)、A(S)、V(W)、V(C)およびV(S)を「待ち時間に関する基準指標」と総称する。
上述した例に代えて、例えば、第1のクライアント12aが、サーバファーム22との通信において同じアクセスポイント18を利用している第2のクライアント12bから、A(C)に関する情報を取得する構成としてもよい。その場合、例えば、第2のクライアント12bはW、CおよびSを算出し、それらをキャッシュメモリに記憶する。サーバファーム22に含まれるサーバ14のうちの1つは、どのクライアント12が同じアクセスポイント18を利用しているかに関する情報を有しており、そのサーバ14を介して、第2のクライアント12bのキャッシュメモリに記憶された内容と第1のクライアント12aのキャッシュメモリの内容との間では同期が取られる。システム管理者は、どのサーバ14が、第2のクライアント12bのキャッシュと第1のクライアント12aのキャッシュとの同期を管理するかを指定する。以下、キャッシュ間の同期を管理するサーバ14がサーバ14aであるものとする。同じアクセスポイント18を利用しているクライアント12は全て、システム管理者により設定された時間間隔で定期的に、サーバ14aに対しキャッシュに記憶されているA(C)に関する情報を送信する。サーバ14aはクライアント12aの要求に応じて、これらの情報を集約し、その結果を、サーバ14間における負荷の平滑化のための間隔情報とともにクライアント12aに送信する。平滑化のための間隔情報とは、同じサーバ14が一定量の処理を連続して行うことを許可する時間間隔を表す所定の値である。
さらに、第2のクライアント12bのキャッシュに記憶されたA(C)に関する情報は、この情報を必要としている第1のクライアント12aとクライアント12bとの間で、直接同期が取られる構成としてもよい。この場合、クライアント12のそれぞれは、自機のキャッシュに記憶されている情報を他のクライアント12に対し、例えばBluetooth、IrDA(Infrared Data Association)、IEEE802.11b等で規格化されているローカルなネットワーク接続を介して、個々にブロードキャストする。その際、ブロードキャストされる情報は、ネットワーク16を介してクライアント12とサーバ14との間で送受信される必要はなく、クライアント12の間で個別に送受信されてもよい。なお、平滑化のための間隔情報としては、システム管理者が固定的な値を設定するようにしてもよいし、分散配置されたクライアント12が相互に合意形成のための処理を行うことにより、1つの値が決定されるようにしてもよい。
さらに、A(W)、A(C)、V(W)およびV(C)は、クライアント12がサーバ14と通信を行う際に用いられるアクセス経路26のそれぞれに応じて計測される構成としてもよい。ユーザがアプリケーションに対する要求の内容について思考している時間、すなわち思考時間TTの間に、クライアント12は、例えばICMP(Internet Control Message Protocol)を用いた方法により、クライアント12が利用可能な異なるアクセス経路26のそれぞれに関し、A(C)およびV(C)に関する情報を収集する。例えば、クライアント12はアクセス経路26を介して定期的にICMPメッセージをサーバ14に送信する。クライアント12は、送信したICMPメッセージに対しサーバ14から返信されてくる応答メッセージに基づきデータ通信時間を算出し、そのデータ通信時間により、そのアクセス経路26の遅延時間の平均値を算出する。A(W)およびV(W)は、上述した式(2)および(3)に従い、それぞれA(S)およびA(C)、V(S)およびV(C)を加算することにより、利用可能なアクセス経路26のそれぞれについて算出される。このようにして算出された待ち時間に関する基準指標は、クライアント12において、アクセス経路26のそれぞれに関しアクセス経路26のIDとともに記憶され、サーバ間の負荷分散の決定に用いられる。その決定処理に関しては、後述する。
システム管理者は、クライアント12が待ち時間に関する基準指標をアプリケーション単位で計測するか、それともアプリケーションとユーザの組み合わせ単位で計測するか、を選択することができる。これらの選択は、クライアント12が動作を開始する前に設定され、動作中に変更されない構成としてもよいし、クライアント12が動作を開始した後に動的に変更可能な構成としてもよい。クライアント12が待ち時間に関する基準指標をアプリケーション単位で計測する場合、負荷分散エージェント24はこれらの情報を、いずれのユーザが要求を行っているかを考慮することなく扱う。一方、クライアント12がこれらの基準指標をアプリケーションとユーザの組み合わせ単位で計測する場合、負荷分散エージェント24により実行されるサーバ間の負荷分散の処理は、異なるユーザの特性に応じて、微調整される。
ある要求に関する1組の待ち時間に関する基準指標について、その要求を行ったクライアント12は、その要求の送信元ノードおよび送信先ノードをそれぞれ示す複数の処理IDを記憶する。例えば、送信先ノードを示す処理IDは、クライアント12が、自機から送出された要求に対し応答を行ったサーバ14を特定するIDである。送信先ノードを示す処理IDは、サーバファーム22においてサーバ14を特定するIDであり、例えばサーバ14のIPアドレス等が利用可能である。一方、送信元ノードを示す処理IDは、例えば、要求を行ったクライアント12を含むクライアント群20を特定するIDである。また、クライアント12が、アプリケーションとユーザの組み合わせ単位で待ち時間に関する基準指標の計測を行う構成である場合には、送信元ノードを示す処理IDは個々のユーザを特定するIDである。さらに、送信元ノードを示す処理IDは、クライアント12がサーバファーム22との間で通信を行う際に用いるアクセス経路26を特定するIDであってもよい。
負荷分散エージェント24がサーバ間の負荷分散処理において待ち時間に関する基準指標を利用可能とするために、クライアント12はサーバ14に対し、あるアプリケーションに関する要求を送る際、その要求とともに、計測した待ち時間に関する基準指標と、その要求に対応する処理IDとを送信する。その結果、サーバ14は複数のクライアント12から、多数のクライアント12に関し、同じアプリケーションについての待ち時間の平均や分散を算出することが可能となる。ところで、クライアント12から受信した待ち時間に関する基準指標を個々のサーバ14がどのように利用するかは、個別に決定することができる。システム管理者は、あるサーバ14に関して、個々のクライアント12についての待ち時間に関する基準指標を、同じアクセスポイント18を利用しているクライアント12、すなわち同じクライアント群20に属するクライアント12について集約するように構成することができる。また、システム管理者は、あるサーバ14に関して、例えばPHCMプロトコルによりネットワーク層から得られる近接情報に基づき、クライアント12との間の距離が所定の距離以下であるものについて、待ち時間に関する基準指標の集約を行うように構成することもできる。
負荷分散エージェント24は、サーバファーム22において実行可能なアプリケーションのそれぞれについて、サーバファーム22に含まれるサーバ14のそれぞれから待ち時間に関する基準指標を収集し、それらの基準指標をテーブル30として負荷分散サーバ14sのメモリに記憶させる。図3は、テーブル30の構成を例示した図である。テーブル30には複数のレコード32を含んでおり、レコード32のそれぞれは待ち時間に関する基準指標および対応する処理IDを含んでいる。そのため、テーブル30に格納されたデータにより、負荷分散エージェント24は個々のレコード32に含まれる待ち時間に関する基準指標が、サーバファーム22に含まれるどのサーバ14、どのクライアント群20、どのユーザ、そしてどのアクセス経路26に関するものであるかを特定することができる。
上記のように負荷分散エージェント24がサーバ14から待ち時間に関する基準指標を収集する構成とする代わりに、それぞれのクライアント12が定期的に、待ち時間に関する基準指標を負荷分散エージェント24に対し直接送信する構成としてもよい。その場合、負荷分散エージェント24は、上述したようにシステム管理者により決定されたクライアント12のグループ化の方針に従い、クライアント12から送信される情報を集約する。
[3.サーバ間の負荷分散処理]
以下、図4を用いて、本実施形態におけるサーバ間の負荷分散処理50の動作フローを説明する。
[3.1.要求の生成]
まず、クライアント群20に含まれるクライアント12は、サーバファーム22に含まれるサーバ14に対するHTTPに従ったデータ処理の要求(以下、「HTTP要求」と呼ぶ)を生成する(ステップ52)。HTTPに従ったデータ処理においては、通常、クライアント12とサーバ14との間で通信接続が確立され、クライアント12からサーバ14に対し要求メッセージが送信され、サーバ14からクライアント12に対し応答メッセージが返信され、その後、通信接続の切断が行われる。HTTP要求は、通常、要求行、ヘッダおよび本体から構成されている。要求行には、POSTメソッドやGETメソッド等のHTTPコマンド、クライアント12がサーバ14に対し処理の要求を行っている対象のリソース、そしてHTTPのバージョンをそれぞれ指定する情報が含まれている。ただし、処理対象のリソースは含まれない場合もある。ヘッダには通常、複数の行が含まれており、各行はクライアント12、サーバ14および送信されるデータの構成に関する情報を含んでいる。本体には、例えば、要求行にPOSTメソッドを指定する情報が含まれている場合の、サーバ14に対し送信されるデータ本体が含まれている
[3.2.タグの付加]
ステップ52において生成されたHTTP要求は、アクセスポイント18に送信される。アクセスポイント18は、HTTP要求を受け取ると、そのヘッダに、そのHTTP要求の送信元のクライアント群20および送信先のサーバ14を特定するフィールドを持つタグを付加する(ステップ54)。なお、システム管理者は、アクセスポイント18がHTTP要求を受け取った際に、そのHTTP要求を送信したユーザおよびそのHTTP要求の送信に用いられたアクセス経路26をそれぞれ特定するフィールドを持つタグを、さらにヘッダに付加するように構成することもできる。
[3.3.要求の一時保留]
続いて、サーバファーム22において、いずれかのサーバ14によりHTTP要求が処理される前に、HTTP要求は負荷分散エージェント24により一時保留される(ステップ56)。上述したように、全てのHTTP要求はDNSサーバにより、負荷分散エージェント24のIPアドレスにバインドされている。負荷分散エージェント24はHTTP要求に含まれる要求行の情報から、どのアプリケーションの処理が要求されているか、またHTTP要求に含まれるヘッダの情報から、どのクライアント群20からそのHTTP要求が送出されているか、を特定する。また、負荷分散エージェント24は、HTTP要求に含まれるヘッダの情報から、そのHTTP要求の送出を行ったユーザや、クライアント12がそのHTTP要求を送出する際に利用したアクセス経路26を特定するようにしてもよい。
[3.4.サーバの選択]
続いて、負荷分散エージェント24は、一時保留しているHTTP要求に対し応答するサーバ14を、サーバファーム22の中から選択する。負荷分散エージェント24は、処理の要求先のアプリケーションに関する待ち時間、総データ通信時間およびサービス時間に基づき、様々な種類のサーバ間の負荷分散処理を実行することができる。図5は、負荷分散エージェント24により実行されるサーバ14の選択処理の例を模式的に示した動作フロー図である。図5は、特定のクライアント群20からの要求に対するサービスの提供に関し、待ち時間の平均が最小であるサーバ14を選択する方法を例示している。なお、図5の方法においては、待ち時間の平均が最小となるサーバ14が複数存在する場合、さらに待ち時間の分散が最小となるサーバ14が選択される。
より具体的に説明すると、クライアント12がサーバファーム22に含まれるサーバ14に対し実行を要求できるアプリケーションのそれぞれに関し、システム管理者は待ち時間の平均についての閾値である最大平均値A_Tを設定することができる。さらに、アプリケーションのそれぞれに関し、システム管理者は待ち時間の分散についての閾値である最大分散値V_Tを設定することができる。上述したように、負荷分散エージェント24はサーバファーム22に含まれる個々のサーバ14に関し、計測された待ち時間に関する基準指標をテーブル30として記憶しており、常にそれらを利用することができる。
負荷分散エージェント24は、まず、HTTP要求の対象であるアプリケーションに関連付けて記憶されている複数のA(W)の中から、A(W)の最小値を抽出する(ステップ70)。このA(W)の最小値とは、サーバファーム22に含まれるいずれかのサーバ14が対象のアプリケーションを実行した場合のA(W)の最小値である。より具体的には、負荷分散エージェント24は、記憶している待ち時間に関する基準指標のテーブル、すなわちテーブル30の中から、ステップ54において付加されたタグにより特定されるクライアント群20に対応するA(W)のうち最小のものを抽出する。なお、HTTP要求に含まれるヘッダにユーザを特定するタグが付加されている場合、負荷分散エージェント24はクライアント群20に対応する複数のA(W)のうち、タグにより特定されるユーザにより送出されたHTTP要求に対応するA(W)のみの中から最小のものを抽出する。同様に、HTTP要求に含まれるヘッダにアクセス経路26を特定するタグが付加されている場合、負荷分散エージェント24はタグにより特定されるアクセス経路26に対応するA(W)のみの中から最小のものを抽出する。このような負荷分散エージェント24によるタグに基づくA(W)の抽出処理により、負荷分散処理の方法がHTTP要求を送出したクライアント群20や利用されるアクセス経路26に応じて調整され、サーバファーム22において処理されるデータトラフィックが個々のユーザの希望を満たすようにサーバ14間で配分される結果、ユーザにより体感されるシステムのパフォーマンスが最適化される。
サーバファーム22に含まれる全てのサーバ14に対応するA(W)の中から、上記の条件を満たすA(W)の最小値が1つだけ抽出された場合、負荷分散エージェント24は抽出されたA(W)の最小値に対応するサーバ14のIPアドレスを特定する(ステップ72)。
続いて、負荷分散エージェント24は、A(W)の最小値が対象のアプリケーションに対し設定されている最大平均値A_Tより小さいか否かを判定する(ステップ74)。ステップ74において、A(W)がA_Tよりも小さいと判定された場合、負荷分散エージェント24はHTTP要求をステップ72において特定したサーバ14のIPアドレスに対し送信する(ステップ76)。一方、ステップ74において、A(W)の最小値が最大平均値A_Tよりも大きいと判定された場合、負荷分散エージェント24は対象のアプリケーションの実行用オブジェクトであるインスタンスの作成を行わない(ステップ78)。そして、待ち時間に関する状況が改善し、A(W)の最小値が最大平均値A_Tを下回った後に、インスタンスの作成が行われ、HTTP要求がサーバ14のIPアドレス宛に送信される結果、アプリケーションによるHTTP要求に応じた処理が行われる。
ところで、ステップ70において、複数のサーバ14に関し、同じA(W)の最小値が抽出された場合、負荷分散エージェント24は待ち時間の分散、すなわちV(W)が最小であるものを抽出する(ステップ80)。なお、ステップ80においても、負荷分散エージェント24はステップ70において述べた条件を満たすV(W)、例えばステップ56において付加されたタグにより特定されるクライアント群20に対応するV(W)の中から、最小となるV(W)を抽出する。ステップ80において、複数のサーバ14に関し、同じV(W)の最小値が抽出された場合、負荷分散エージェント24はそれら複数のサーバ14の中から、任意に1つのサーバ14を選択する。負荷分散エージェント24は、V(W)の最小値に基づき1つのサーバ14を選択すると、選択したサーバ14に対しHTTP要求を送信する(ステップ82)。また、図6に示すように、図5に示した動作フローに修正を加え、負荷分散エージェント24が、ステップ80において抽出したA(W)の最小値が最大分散値V_Tよりも大きいか否かを判定し、その判定結果が肯定的な場合にのみ、そのA(W)の最小値に対応するサーバ14に対し、HTTP要求を送信する構成としてもよい。
なお、図5および図6において模式的に示したサーバ14の選択処理は例示であり、本発明の技術的特徴を限定するものではないことは言うまでもない。すなわち、待ち時間に関する基準指標を用いる他の方法により、負荷分散エージェント24がサーバ14の選択を行う構成としてもよい。例えば、サーバ14の抽出において、最初に待ち時間の分散V(W)に基づく抽出を行い、V(W)が最小となるサーバ14に対してHTTP要求の送信を行う構成としてもよい。
再度、図4を参照しつつ、説明を続ける。負荷分散エージェント24は、ステップ58においてHTTPに応答するサーバ14を選択すると、選択したサーバ14を特定する情報をキャッシュに記憶し、再度、同じクライアント12から同じアプリケーションを対象とするHTTP要求を受け取った場合に、その情報に基づき、自動的にそのHTTP要求を前回選択したサーバ14に送信する。選択されたサーバ14を特定する情報は、所定の時間を経過すると無効化され、その後は上述した処理により、再度、HTTP要求に応答するサーバ14の選択が行われる。
また、負荷分散エージェント24は、サーバファーム22に含まれる全てのサーバ14のIPアドレスをリストとして記憶しておき、上述した選択処理によりHTTP要求に応答するサーバ14を選択すると、選択したサーバ14のIPアドレスをHTTP要求の送信元のクライアント12に対し送信するようにしてもよい。そうすれば、HTTP要求を送信したクライアント12は、その後に同様のHTTP要求を送出する場合、前回に選択されたサーバ14に宛てて直接、HTTP要求を送信することができる。その場合、負荷分散エージェント24は通過モードでHTTP要求を処理する。すなわち、負荷分散エージェント24はクライアント12により指定されるサーバ14に対し、単にHTTP要求を転送する以外の処理は行わない。その結果、負荷分散エージェント24は、HTTP要求の宛先変更による負荷分散処理に伴う負荷を削減することができる。
また、クライアント12は、サーバ14との間でセッションの確立を必要とするような処理をサーバ14に対し要求したい場合がある。この場合、セッションとは、複数のHTTP要求が一連となったHTTP要求群をいう。本実施形態においてセッションの確立のために用いられる通信プロトコルはいずれの通信プロトコルであってもよく、例えば、SIP(Session Initiation Protocol)などが利用可能である。セッションが確立されると、負荷分散エージェント24はそのセッションにおいて最初に受信したHTTP要求に対し応答するように選択したサーバ14とクライアント12との間でバインド処理を行い、そのセッションが確立されている間、そのサーバ14とクライアント12との間のバインドを維持する。その結果、クライアント12はセッションが確立されている間、HTTP要求を負荷分散エージェント24に宛てて送信し、負荷分散エージェント24はそのHTTP要求を全て、同じサーバ14に対し転送することにより、通過モードと同様の処理を実現することができる。
しかしながら、負荷分散エージェント24はセッションの確立中であっても、例えば、基準となる待ち時間の平均と計測される待ち時間との差が所定の最大値Delta_A(W)を超える等の所定の条件が満たされる場合には、再度、図5に示したサーバ14の選択処理を実行し、異なるサーバ14にクライアント12からのHTTP要求に対する応答を行わせるように構成してもよい。
[3.5.サーバの過負荷状態等の検出]
負荷分散エージェント24は、クライアント12からのHTTP要求に対し応答を行う適当なサーバ14の選択に加えて、クライアントサーバシステム10が過負荷状態に陥り、ユーザを満足させるようなパフォーマンスを実現できない状態の検出も行う(ステップ60)。図7は、過負荷状態の検出処理を模式的に示した動作フロー図である。まず、負荷分散エージェント24は、所定時間内に新たなインスタンスの生成が行われない回数が、システム管理者により予め設定された閾値B_Tよりも大きいか否かを判定する(ステップ90)。この場合、新たなインスタンスとは、例えばGETメソッドやPOSTメソッドを指定するHTTP要求等により、サーバ14に対し新たなコネクションの確立を要求する場合に生成される実行用のオブジェクトのことである。上述したように、インスタンスの生成は、例えば、待ち時間の平均A(W)が所定の最大平均値A_Tよりも大きい場合には行われない。HTTP要求に応じたインスタンスの生成が行われない回数が閾値B_Tよりも大きくなると、負荷分散エージェント24は、その待ち時間の増大がサーバファーム22とネットワーク16のいずれの原因によりもたらされているかを判定する(ステップ92)。具体的には、負荷分散エージェント24は、総データ通信時間の平均A(C)がサービス時間の平均A(S)と比較して際だって大きい場合、ネットワーク16に輻輳が生じていると判定し、その旨をシステム管理者に対し通知するための処理を行う(ステップ96)。一方、サービス時間の平均A(S)が総データ通信時間の平均A(C)と比較して際だって大きい場合、負荷分散エージェント24は、サーバファーム22に輻輳が生じていると判定し、その旨をシステム管理者に対し通知するための処理を行う(ステップ94)。
さらに、ステップ90において、インスタンスの生成が行われない回数が閾値B_Tよりも大きくない場合であっても、負荷分散エージェント24が、ネットワーク16およびサーバファーム22における輻輳の有無の判定を行う。具体的には、負荷分散エージェント24は、サービス時間の分散V(S)が、予めシステム管理者によって設定された閾値VS_Tを超えているか否かの判定を行う(ステップ98)。サービス時間の分散V(S)が閾値VS_Tを超えている場合、負荷分散エージェント24はシステム管理者に対し、サーバファーム22に輻輳が生じていることを通知するための処理を行う(ステップ100)。続いて、負荷分散エージェント24は、総データ通信時間の分散V(C)が、予めシステム管理者によって設定された閾値VC_Tを超えているか否かの判定を行う(ステップ102)。総データ通信時間の分散V(C)が閾値VS_Cを超えている場合、負荷分散エージェント24はシステム管理者に対し、ネットワーク16に輻輳が生じていることを通知するための処理を行う(ステップ104)。
上述した過負荷状態および輻輳の検出処理はリアルタイムで行われ、過負荷状態もしくは輻輳が検出された場合には、リアルタイムに電子メール等にてシステム管理者に通知される。その結果、要求に伴う待ち時間が長く、ユーザがクライアントサーバシステム10に関し好ましくない印象を持つような場合に、システム管理者はクライアントサーバシステム10に対し、適する処置を施すことができる。
[3.6.サーバの処理状態の検出]
さらに、負荷分散エージェント24は、クライアント12からのHTTP要求に応答するサーバとして以前に選択したサーバ14が、HTTP要求に応じられない状態に陥ったり、またそのような処理不能な状態から回復したりした場合、それらの状態変化を検出する(ステップ62)。そのため、負荷分散エージェント24はサーバファーム22に含まれるサーバ14のうち、いずれのサーバ14が現在利用可能であるかを示すリストを記憶し、常に更新している。例えば、システム管理者は、サーバファーム22に含まれる全てのサーバ14のIPアドレスおよびMACアドレスを含むリストを負荷分散エージェント24に入力する。そして、負荷分散エージェント24は、定期的にそれぞれのサーバ14に対し、PING(Packet Internet Groper)による処理を実行することにより、データがサーバ14に到達するか否かをチェックする。PINGの処理の実行間隔は、例えばシステム管理者により設定される。新たなサーバ14がサーバファーム22に追加された場合、そのサーバ14は、次のPINGが行われるまで、サーバファーム22において利用可能とはならない。あるサーバ14がHTTP要求に対する応答を開始した後、そのサーバ14がサーバファーム22から離脱した等の理由で、そのサーバ14からの応答が途絶えた場合、負荷分散エージェント24はそのサーバ14との通信が途絶えたことを、PINGの処理に対する応答時間がタイムオーバーとなることにより検出する。
負荷分散エージェント24は、クライアント12からのHTTP要求をいずれかのサーバ14に割り当てている状態で、そのサーバ14との間で上述したようなタイムオーバーが発生したことを検出すると、そのHTTP要求の処理をサーバファーム22に含まれる新たなサーバ14に割り当てなおす。その際、新たなサーバ14は、ステップ58において説明した選択処理により選択されるが、その選択処理において、応答時間がタイムオーバーとなったサーバ14に対応する待ち時間の平均A(W)は選択肢から除外される。
[3.7.負荷分散エージェントの処理状態の検出]
現在、負荷分散エージェント24として機能しているサーバ14が処理不能な状態に陥った場合、そのサーバ14に代わって他のサーバ14が負荷分散エージェント24として機能する(ステップ64)。そのような負荷分散エージェント24の交代においては、サーバファーム22に含まれるサーバ14のうち、処理可能な状態であり、かつ、負荷分散エージェント24に関するデータの完全な複製を保持しているサーバ14の1つが新たな負荷分散エージェント24として選択される。
具体的には、ステップ64の処理において、ISIS(Intermediate−System to Intermediate−System)等のグループ管理プロトコルが利用可能である。グループ管理プロトコルとは、ネットワーク内リソースのグループ管理を行う通信プロトコルであり、多数のサーバをグループ化しサーバファームを維持管理する際に利用可能である。あるサーバ14をサーバファーム22の構成員としてグループに含めるか否かを決定するにあたっては、例えば、コンセンサス法が用いられる。また、ある構成員のグループからの離脱を検出するにあたっては、例えば、時刻情報により応答時間のタイムオーバーを判定するハートビート法が用いられる。そして、構成員であるサーバ14が処理不能な状態に陥り、サーバファーム22から離脱したような場合、サーバファーム22の構成員の再構成が行われる。また、サーバファーム22と外部の装置等との間のデータ通信を調整する役割を果たすリーダとしてのサーバ14を選択するために、例えば、リーダ選択法が用いられる。なお、サーバファーム22においてリーダとなるサーバ14を選択する際に、例えば最小のIPアドレスが割り当てられているサーバ14を選択する、といった方法が採用されてもよい。
本実施形態において、サーバファーム22においてリーダとして選択されたサーバ14は、負荷分散エージェント24としての役割を果たす。そして、そのサーバ14が処理不能となり、負荷分散エージェント24からの応答が途絶えた場合、サーバファーム22により新たなリーダが選択される。新たなリーダは、負荷分散エージェント24に関するデータの複製を作成し、保持している必要がある。新たにリーダとして選択され、負荷分散エージェント24として機能することとなったサーバ14のIPアドレスは、DNSサーバに送信され、DNSサーバのバインド処理により、新たな負荷分散エージェント24はクライアント12から送信されるHTTP要求を一時保留することが可能となる。
[3.8.サーバへの要求送信]
負荷分散エージェント24は、ステップ58において選択したサーバ14に対し、クライアント12からのHTTP要求を送信することにより、それを割り当てる(ステップ66)。その際、負荷分散エージェント24は、一定時間TTの間に同じサーバ14に対し送信するHTTP要求の最大値を所定数Nに限ることにより、同じサーバ14に対し過大数のHTTP要求が集中的に送信されることを回避する。その場合、一定時間TTおよび所定数Nは、クライアントサーバシステム10に含まれる装置のハードウェア構成等に応じて、システム管理者が決定することができる。
以上が本実施形態の説明であるが、本実施形態において示した具体例は本発明の内容を明らかにするための例示であり、本発明の技術的特徴を限定するものではない。また、本実施形態に対しては、本発明の技術的思想の範囲内において、様々な変形および変更を加えることが可能であることは言うまでもない。
サーバクライアントシステムに含まれるユーザインタフェースにおいて生成される要求の発生から消滅までを時系列的に示した図である。 本実施形態に係るサーバ間の負荷分散を行うクライアントサーバシステムをモデル的に示した図である。 本実施形態に係るクライアントサーバシステムにおいてサーバ間の負荷分散を行うために用いられる待ち時間に関する基準指標を格納するテーブルの構成を示した図である 本実施形態におけるサーバ間の負荷分散処理を示す動作フロー図である。 本実施形態におけるサーバの選択処理を示す動作フロー図である。 本実施形態におけるサーバの選択処理を示す動作フロー図である。 本実施形態における過負荷状態等の検出処理を示す動作フロー図である。
符号の説明
10…クライアントサーバシステム、12…クライアント、14…サーバ、16…ネットワーク、18…アクセスポイント、20…クライアント群、22…サーバファーム、24…負荷分散エージェント、26…アクセス経路、30…テーブル、32…レコード、50…負荷分散処理。

Claims (4)

  1. 1以上のクライアントを含むクライアント群から、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを受信し一時保留するステップと、
    過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を特定するステップと、
    前記待ち時間に基づき、前記サーバ群の中から、一時保留している要求データに応じたデータ処理を行うサーバを選択するステップと
    を備えることを特徴とするサーバ間の負荷分散方法。
  2. 複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを生成可能なクライアントを、1以上含むクライアント群と、
    過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を記憶する記憶装置と、
    前記サーバ群に含まれるいずれかのサーバにおいて、前記クライアント群から要求データを受信して一時保留し、前記待ち時間に基づいて、前記サーバ群の中から、一時保留している要求データに応じたデータ処理を行うサーバを選択する負荷分散エージェントと
    を備えることを特徴とするサーバ間の負荷分散システム。
  3. クライアントを1以上含むクライアント群から、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを受信する受信部と、
    過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を記憶する記憶部と、
    前記受信部が要求データを受信した場合、前記待ち時間に基づいて、前記サーバ群の中から、当該要求データに応じたデータ処理を行うサーバを選択する選択部と
    を備えることを特徴とする負荷分散サーバ。
  4. プロセッサに、
    クライアントを1以上含むクライアント群から、複数のサーバを含むサーバ群に対しデータ処理を要求する要求データを受信する受信処理と、
    過去において、前記サーバ群に含まれるサーバが、前記クライアント群から送信された要求データに応じて行ったデータ処理における待ち時間を記憶する記憶処理と、
    前記受信処理において要求データが受信された場合、前記待ち時間に基づいて、前記サーバ群の中から、当該要求データに応じたデータ処理を行うサーバを選択する選択処理と
    を実行させるプログラム。
JP2003389520A 2002-11-21 2003-11-19 サーバ間の負荷分散方法、負荷分散システム、負荷分散サーバおよびプログラム Pending JP2004171572A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/300,979 US20040103194A1 (en) 2002-11-21 2002-11-21 Method and system for server load balancing

Publications (1)

Publication Number Publication Date
JP2004171572A true JP2004171572A (ja) 2004-06-17

Family

ID=32324445

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003389520A Pending JP2004171572A (ja) 2002-11-21 2003-11-19 サーバ間の負荷分散方法、負荷分散システム、負荷分散サーバおよびプログラム

Country Status (2)

Country Link
US (1) US20040103194A1 (ja)
JP (1) JP2004171572A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006303754A (ja) * 2005-04-19 2006-11-02 Hitachi Ltd 複合セッション制御装置及び方法
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2008205651A (ja) * 2007-02-16 2008-09-04 Kobe Steel Ltd 無線信号干渉検知装置,その方法及びそのプログラム
JP2010198317A (ja) * 2009-02-25 2010-09-09 Ntt Docomo Inc 登録要求システム、登録要求サーバ装置、サーバ装置の登録要求制御方法

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1299981A1 (en) * 2000-07-11 2003-04-09 Nokia Corporation Method for providing a dns server address list from a server to a client
US8578053B2 (en) * 2002-12-05 2013-11-05 Fujitsu Limited NAS load balancing system
US20060123421A1 (en) * 2002-12-27 2006-06-08 Loboz Charles Z Streamlining cpu utilization by delaying transactions
US7313113B1 (en) * 2003-04-04 2007-12-25 Airespace, Inc. Dynamic transmit power configuration system for wireless network environments
US7526540B2 (en) * 2003-04-22 2009-04-28 International Business Machines Corporation System and method for assigning data collection agents to storage area network nodes in a storage area network resource management system
US7181524B1 (en) * 2003-06-13 2007-02-20 Veritas Operating Corporation Method and apparatus for balancing a load among a plurality of servers in a computer system
US7539169B1 (en) * 2003-06-30 2009-05-26 Cisco Systems, Inc. Directed association mechanism in wireless network environments
US7668935B2 (en) * 2003-08-29 2010-02-23 Kabushiki Kaisha Toshiba Computer system and method for service load distributing
US7562123B2 (en) * 2003-09-05 2009-07-14 Palo Alto Research Center Incorporated Systems and methods for distributed group formation and maintenance in geographically based networks
US20050177612A1 (en) * 2004-01-08 2005-08-11 Chi Duong System and method for dynamically quiescing applications
US7703101B2 (en) * 2004-02-13 2010-04-20 International Business Machines Corporation Autonomic workload classification using predictive assertion for wait queue and thread pool selection
US7991753B2 (en) * 2004-05-21 2011-08-02 International Business Machines Corporation Lock acquisition among nodes of divided cluster
US7660897B2 (en) * 2004-08-03 2010-02-09 International Business Machines Corporation Method, system, and program for distributing application transactions among work servers
US8521687B2 (en) * 2004-08-03 2013-08-27 International Business Machines Corporation Apparatus, system, and method for selecting optimal replica sources in a grid computing environment
US7805517B2 (en) * 2004-09-15 2010-09-28 Cisco Technology, Inc. System and method for load balancing a communications network
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
JP4526539B2 (ja) * 2004-11-26 2010-08-18 富士通株式会社 コンピュータ・システム及び情報処理方法
US20060117020A1 (en) * 2004-12-01 2006-06-01 John Toebes Arrangement for selecting a server to provide distributed services from among multiple servers based on a location of a client device
US7805140B2 (en) * 2005-02-18 2010-09-28 Cisco Technology, Inc. Pre-emptive roaming mechanism allowing for enhanced QoS in wireless network environments
US7596376B2 (en) * 2005-02-18 2009-09-29 Cisco Technology, Inc. Methods, apparatuses and systems facilitating client handoffs in wireless network systems
US9160792B2 (en) * 2005-04-05 2015-10-13 International Business Machines Corporation On-demand global server load balancing system and method of use
US20060230263A1 (en) * 2005-04-12 2006-10-12 International Business Machines Corporation Method and apparatus to guarantee configuration settings in remote data processing systems
US20060277278A1 (en) * 2005-06-06 2006-12-07 International Business Machines Corporation Distributing workload among DNS servers
US20070073829A1 (en) * 2005-09-13 2007-03-29 Microsoft Corporation Partitioning data across servers
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
JP4961146B2 (ja) * 2006-02-20 2012-06-27 株式会社日立製作所 負荷分散方法およびシステム
US8539075B2 (en) * 2006-04-21 2013-09-17 International Business Machines Corporation On-demand global server load balancing system and method of use
US8576712B2 (en) * 2006-05-31 2013-11-05 At&T Intellectual Property Ii, L.P. Method and apparatus for providing a reliable voice extensible markup language service
US7821986B2 (en) * 2006-05-31 2010-10-26 Cisco Technology, Inc. WLAN infrastructure provided directions and roaming
US7783747B2 (en) * 2006-07-24 2010-08-24 International Business Machines Corporation Method and apparatus for improving cluster performance through minimization of method variation
US7907621B2 (en) * 2006-08-03 2011-03-15 Citrix Systems, Inc. Systems and methods for using a client agent to manage ICMP traffic in a virtual private network environment
US8799918B2 (en) * 2006-09-11 2014-08-05 Microsoft Corporation Dynamic network load balancing using roundtrip heuristic
WO2008041302A1 (en) * 2006-09-29 2008-04-10 Fujitsu Limited Server disposing program and server disposing method
FR2906668A1 (fr) * 2006-10-02 2008-04-04 Alcatel Sa Marqueur pour systemes de communication composes d'une pluralite de serveurs sip.
US8255504B1 (en) 2006-10-03 2012-08-28 United States Automobile Association (USAA) Systems and methods for data source management
JP4728931B2 (ja) * 2006-11-08 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ 移動体通信システム、無線制御装置、内線送受信サーバ装置選択方法
US8484656B2 (en) * 2007-03-12 2013-07-09 Citrix Systems, Inc. Systems and methods for providing global server load balancing of heterogeneous devices
US8291108B2 (en) * 2007-03-12 2012-10-16 Citrix Systems, Inc. Systems and methods for load balancing based on user selected metrics
US8296438B2 (en) * 2007-07-11 2012-10-23 International Business Machines Corporation Dynamically configuring a router to find the best DHCP server
US8077622B2 (en) * 2007-08-03 2011-12-13 Citrix Systems, Inc. Systems and methods for efficiently load balancing based on least connections
US7930573B2 (en) * 2007-09-18 2011-04-19 International Business Machines Corporation Workload apportionment according to mean and variance
JP4683034B2 (ja) * 2007-10-31 2011-05-11 ソニー株式会社 電力供給システム、モニター装置、モニター方法およびコンピュータプログラム
US20090193428A1 (en) * 2008-01-25 2009-07-30 Hewlett-Packard Development Company, L.P. Systems and Methods for Server Load Balancing
JP2009199453A (ja) * 2008-02-22 2009-09-03 Hitachi Ltd クライアントが適正か不適正かを判定する方法及び記憶制御装置
US20090228407A1 (en) * 2008-03-05 2009-09-10 The Boeing Company Distributed cognitive architecture
EP2269136B1 (en) * 2008-04-15 2016-11-02 International Business Machines Corporation Method, system and computer program for workload scheduling
US20110106883A1 (en) * 2008-07-01 2011-05-05 Ajay Gupta Remote computing services
US8171124B2 (en) * 2008-11-25 2012-05-01 Citrix Systems, Inc. Systems and methods for GSLB remote service monitoring
US8699343B2 (en) * 2009-04-27 2014-04-15 Sonus Networks, Inc. Adaptive rate control based on overload signals
US20100274893A1 (en) * 2009-04-27 2010-10-28 Sonus Networks, Inc. Methods and apparatus for detecting and limiting focused server overload in a network
US8626897B2 (en) * 2009-05-11 2014-01-07 Microsoft Corporation Server farm management
CN102473116B (zh) 2009-07-21 2014-07-09 国际商业机器公司 使用最佳网络拓扑识别的作业调度的方法和系统
US8521472B2 (en) * 2009-09-18 2013-08-27 International Business Machines Corporation Method to compute wait time
US20110307541A1 (en) * 2010-06-10 2011-12-15 Microsoft Corporation Server load balancing and draining in enhanced communication systems
US20120233240A1 (en) * 2011-03-09 2012-09-13 Telefonaktiebolaget L M Ericsson (Publ) Sctp association endpoint relocation in a load balancing system
US8959222B2 (en) * 2011-05-19 2015-02-17 International Business Machines Corporation Load balancing system for workload groups
US10652318B2 (en) * 2012-08-13 2020-05-12 Verisign, Inc. Systems and methods for load balancing using predictive routing
US9270827B2 (en) 2012-09-07 2016-02-23 Genesys Telecommunications Laboratories, Inc. Dynamic management and redistribution of contact center media traffic
US20140325479A1 (en) * 2013-04-24 2014-10-30 Hewlett-Packard Development Company, L.P. Synchronization of an automation script
US10104169B1 (en) 2013-12-18 2018-10-16 Amazon Technologies, Inc. Optimizing a load balancer configuration
JP6244894B2 (ja) * 2013-12-24 2017-12-13 富士通株式会社 通信システム、通信方法および呼制御サーバ装置
US11307884B2 (en) * 2014-07-16 2022-04-19 Vmware, Inc. Adaptive resource management of a cluster of host computers using predicted data
EP3037965A1 (en) 2014-12-22 2016-06-29 Oberthur Technologies Client-server communication
CN108432212B (zh) * 2016-02-16 2020-09-11 华为技术有限公司 基于流控制传输协议sctp的通信方法、装置和系统
US10536391B1 (en) * 2016-07-07 2020-01-14 Binaris Inc Systems and methods for intelligently directing a service request to a preferred place of execution
US10417043B1 (en) 2017-07-06 2019-09-17 Binaris Inc Systems and methods for executing tasks adaptively
US10621001B1 (en) 2017-07-06 2020-04-14 Binaris Inc Systems and methods for efficiently expediting execution of tasks in isolated environments
CN110175074A (zh) * 2019-04-18 2019-08-27 北京奇艺世纪科技有限公司 负载均衡方法和服务器、负载单元、服务处理设备及介质
CN110933182B (zh) * 2019-12-12 2022-06-24 新华三大数据技术有限公司 负载分担方法、装置及系统
US20220156286A1 (en) * 2020-11-16 2022-05-19 Salesforce.Com, Inc. Elastic connection pools for database nodes
CN113076192B (zh) * 2021-03-05 2023-09-01 深圳前海微众银行股份有限公司 一种负载均衡方法及装置、设备、存储介质
CN114221964B (zh) * 2021-12-13 2023-10-03 中国平安财产保险股份有限公司 一种访问请求处理方法、装置、计算机设备及存储介质
CN114338815A (zh) * 2022-03-14 2022-04-12 中兴软件技术(南昌)有限公司 业务请求处理方法、系统、可读存储介质及计算机设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725272B1 (en) * 2000-02-18 2004-04-20 Netscaler, Inc. Apparatus, method and computer program product for guaranteed content delivery incorporating putting a client on-hold based on response time
US6976063B1 (en) * 2000-11-02 2005-12-13 Microsoft Corporation Method and system for dynamically configuring a server computer

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006303754A (ja) * 2005-04-19 2006-11-02 Hitachi Ltd 複合セッション制御装置及び方法
JP4537250B2 (ja) * 2005-04-19 2010-09-01 株式会社日立製作所 ゲートウェイ装置
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2008205651A (ja) * 2007-02-16 2008-09-04 Kobe Steel Ltd 無線信号干渉検知装置,その方法及びそのプログラム
JP2010198317A (ja) * 2009-02-25 2010-09-09 Ntt Docomo Inc 登録要求システム、登録要求サーバ装置、サーバ装置の登録要求制御方法

Also Published As

Publication number Publication date
US20040103194A1 (en) 2004-05-27

Similar Documents

Publication Publication Date Title
JP2004171572A (ja) サーバ間の負荷分散方法、負荷分散システム、負荷分散サーバおよびプログラム
JP5660049B2 (ja) 負荷分散システム、負荷分散方法、負荷分散システムを構成する装置およびプログラム
KR101467173B1 (ko) M2m 네트워크의 리소스 관리 방법 및 리소스 관리 장치
JP4753052B2 (ja) コンテンツ配信方法及びシステム
JP4463999B2 (ja) 通信ネットワークにおける方法及び装置
EP1542409A1 (en) Protocol for multi-hop ad-hoc networks
KR102266759B1 (ko) Api 호출들의 프로세싱을 용이하게 하기 위한 가속 시스템
Rawadi et al. Providing local cloud services to mobile devices with inter-cloudlet communication
WO2012072045A1 (zh) 一种cdn网络中的数据传输方法、网络节点及系统
JP5871908B2 (ja) ネットワーク内部のデータ通信を制御するための方法およびシステム
JP2007219637A (ja) 負荷分散システムおよびそのプログラム
JP2003209570A (ja) 中継方法そのクライアント、サーバ、中継装置
Moreno et al. On content delivery network implementation
Kamel et al. CAINE: A context-aware information-centric network ecosystem
JP2005182702A (ja) Ipネットワークにおけるアクセス制御方式
JP2007207013A (ja) 情報処理装置、情報共有プログラム
JP2012113719A (ja) P2p基盤のストリーミングサービスのサーバ使用量を調整するシステムおよび方法
Fan et al. An edge computing service model based on information-centric networking
JP5894981B2 (ja) 複数基準の選択を有するトポロジサーバを用いて通信アーキテクチャにわたって分散されたノードのネットワークへのアクセス
JP2023547880A (ja) バックアップネットワーク機能を提供するためのネットワークノードおよびネットワークノードにおける方法
Ha et al. Enabling dynamic and lightweight management of distributed bluetooth low energy devices
Maiti et al. Node allocation in Peer-to-peer overlay networks based remote instrumentation with smart devices
KR20190064066A (ko) IoT 로컬 네트워크에서 CoAP 기반의 트래픽 부하 관리 장치 및 방법
KR20090042542A (ko) 더미 메시지를 이용하여 웹 서비스의 품질 데이터를추출하는 방법
JP2006171917A (ja) 無線マルチホップアドホックネットワークのためのプロトコル

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20051130

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080924