[go: up one dir, main page]

JP2007219608A - 負荷分散処理プログラム及び負荷分散装置 - Google Patents

負荷分散処理プログラム及び負荷分散装置 Download PDF

Info

Publication number
JP2007219608A
JP2007219608A JP2006036354A JP2006036354A JP2007219608A JP 2007219608 A JP2007219608 A JP 2007219608A JP 2006036354 A JP2006036354 A JP 2006036354A JP 2006036354 A JP2006036354 A JP 2006036354A JP 2007219608 A JP2007219608 A JP 2007219608A
Authority
JP
Japan
Prior art keywords
specific information
server
distribution destination
request message
client
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
JP2006036354A
Other languages
English (en)
Inventor
Kotaro Okazaki
耕太郎 岡崎
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
Priority to JP2006036354A priority Critical patent/JP2007219608A/ja
Priority to US11/439,644 priority patent/US7509424B2/en
Publication of JP2007219608A publication Critical patent/JP2007219608A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1027Persistence of sessions during load balancing
    • 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/1017Server selection for load balancing based on a round robin mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】システム構成や業務形態によらず、一意性を保証する。
【解決手段】応答メッセージに振り分け先サーバを特定する特定情報が含まれていなければ、特定情報挿入手段12は、この応答メッセージの送信元のサーバを検出して振り分け先サーバに設定し、振り分け先サーバを特定する特定情報を応答メッセージに挿入する。クライアント3aは、特定情報を記憶しておき、一意性を保証する必要がある場合には、リクエストメッセージに特定情報を挿入して送信する。第2の特定情報検出手段13は、リクエストメッセージに特定情報が挿入されているかどうかを検出する。振り分け先決定手段14は、特定情報が検出された場合は、特定情報によって特定される振り分け先サーバを振り分け先として、リクエストメッセージを送信する。
【選択図】図1

Description

本発明は負荷分散処理プログラム及び負荷分散装置に関し、特にリクエストメッセージを振り分けて負荷分散を図るとともに、関連のあるリクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラム及び負荷分散装置に関する。
従来から、信頼性の高いクライアント・サーバシステムを構築するために欠かせない要素として、負荷分散技術が知られている。図8は、従来の負荷分散装置を備えたクライアント・サーバシステムの構成の一例を示した図である。
クライアント・サーバシステムは、所定の業務処理を行うサーバ群930と、任意のタイミングでサーバ群930に対しリクエストメッセージ(以下、単にリクエストとする)を送信するクライアント(利用者装置)群940との間に、負荷分散装置910が設置される。たとえば、クライアントA(941)からサーバ群930を代表する仮想アドレスにリクエストが送信されると、負荷分散装置910がリクエストを一旦受信し、サーバ群930から最適な振り分け先サーバを選択し、リクエストを転送する。このように、負荷分散装置910は、クライアントからのリクエスト受信ごとに、リクエストを最適なサーバに振り分けるが、業務によっては振り分け先のサーバが同じでなければならない場合がある。たとえば、ショッピングサイトでは、購入する商品のリスト管理のため、ショッピングの開始から決済まで同じサーバに接続する必要がある。このため、負荷分散装置910は、クライアントから送られてくるリクエストの中で、関連のあるリクエストを同じサーバに振り分けるセッション維持機能を備えている。なお、セッション維持機能は、クライアントとサーバ間のデータの一意性を保証する一意性保証機能とも呼ばれており、以下の説明では、一意性保障機能と記す。
代表的な一意性保証機能として、(1)送信元のIP(Internet Protocol)アドレス、(2)サーバが設定するクッキー(cookie)、及び(3)負荷分散装置が設定するクッキーなどを利用した手法がある。
(1)送信元のIPアドレスを利用した一意性保証では、送信元IPアドレスでクライアントを特定し、同じクライアントからのリクエストは同じサーバに振り分ける。
(2)サーバが設定するクッキーを利用した一意性保証では、サーバ・クライアント間のクッキー機能を利用する。サーバ・クライアント間において、サーバは、必要に応じて利用者固有のクッキーを応答メッセージに追加してクライアントに送信する。クッキーには、たとえばランダムに設定される文字列など、他と重なりにくいものが設定される。クライアントは、同じサーバにアクセスする必要がある場合には、このクッキーをリクエストに添付して送信するという機能を有する。負荷分散装置は、この機能を利用し、サーバが設定したクッキーを記憶しておき、クライアントからのリクエストに添付されるクッキーに基づき、このリクエストをクッキー発行元のサーバに振り分ける。また、クッキーの代わりに、URL(Uniform Resource Locators)埋め込みパラメータを用いることもできる。
(3)負荷分散装置が設定するクッキーを利用した一意性保証では、上記の(2)のクッキーを負荷分散装置が生成する。たとえば、クライアントA(941)からのリクエスト951をサーバ1(931)に振り分けた場合、サーバ1(931)からの応答952にクッキーc1(953)を添付してクライアントA(941)へ返す。以降、クライアントA(941)からのリクエストに設定されるクッキーc1(953)に基づき、このリクエストをサーバ1(931)に振り分ける。
また、クッキー機能を用いる手法の1つとして、サーバから送信された通信データに含まれるクッキーにサーバ識別子を上書きしてクライアントに送信し、クライアントからのクッキーに含まれるサーバ識別子で転送先を決定する中継装置が提案されている(たとえば、特許文献1参照)。
特開2004−178286号公報(段落番号〔0092〕〜〔0113〕、図2)
しかし、従来の負荷分散処理には、システム構成や業務形態によっては、以下のように一意性の保証ができないケースが発生するという問題点があった。
(1)送信元IPアドレスを利用した一意性保証では、クライアントは必ず同じIPアドレスであることが前提であるが、クライアント側にプロキシが存在するような場合、同一クライアントでも送信元IPアドレスが動的に変更されることがある。このため、単一業務であっても一意性保証ができない場合が生じる。
(2)サーバが設定するクッキーを利用した一意性保証では、サーバ側は個別の業務に対応するアプリケーションごとに独自にクッキーを設定しているため、同じ業務における一意性は保証されるが、複数の業務での一意性保証は難しいという問題がある。したがって、一意性保証のためには、事前に複数の業務を1つの業務に集約したり、業務アプリケーション間での連携などの処理が必要になったりする。しかしながら、そのためにはアプリケーションを新たに開発しなければならず、多大な労力が必要となる。
(3)負荷分散装置が設定するクッキーを利用した一意性保証も、(2)のサーバが設定するクッキーを利用する場合と同様に、複数の業務での一意性保証が難しいという問題がある。
図9は、従来の負荷分散装置におけるクッキー設定処理を示した図である。
ここでは、業務A1と業務A2は関連しており、処理は同一サーバで実行される必要があるとする。クライアントA(941)が、業務A1を開始し、サーバに対して「業務A1に関するリクエスト」を送信すると、負荷分散装置1(910)は、リクエストを受け付け、振り分け先サーバを選択する。たとえば、サーバ1(931)へ振り分けた場合、クライアントA(941)の応答にクッキーc1を添付し、自装置内の管理テーブル911に、業務「A1」、設定したクッキー「c1」、及び振り分け先サーバ「サーバ1」を設定しておく。以降、業務A1に関するクライアントA(941)からのリクエストにはクッキーc1が添付されるので、負荷分散装置1(910)は、管理テーブル911を参照し、リクエストを常にサーバ1(931)へ振り分けることができる。ところが、業務2が開始され、クライアントA(942)が「業務A2に関するリクエスト」にクッキーc1を添付しても、負荷分散装置1(910)では、管理テーブル911に該当する設定はないので、新たに振り分けを行い、クッキーを設定し、管理テーブル911に登録する。この場合、サーバ1(931)以外のサーバ、たとえば、サーバ2(932)に振り分けられる可能性があり、一意性は保証されない。この場合の対策も、(2)のサーバが設定するクッキーを利用する場合と同様であり、実現は容易ではない。
また、負荷分散装置が複数台設定される場合にも、一意性が保証されないという問題がある。たとえば、上述のように、クライアントA(941)が、業務A1のリクエストにクッキーc1を添付して送信した場合、これを管理テーブル911に業務「A1」とクッキー「c1」が設定された負荷分散装置1(910)が受け取る場合には問題ないが、もう1台の負荷分散装置2(929)が受け取った場合には、管理テーブル921に該当する設定がないので、適当に振り分けを行い、クッキーを設定する。このため、サーバ2(932)に振り分け、クッキーc3を設定し、クライアントA(941)にクッキーc3を添付した応答を返すことが考えられ、一意性は保証されない。この場合、負荷分散装置を1台とするか、負荷分散装置間で管理テーブルを共有すれば一意性が保証されるが、現実的ではない。なお、(2)サーバが設定するクッキーを利用する場合、及び特許文献1記載のクッキー利用手法でも、同様の問題が生じる。
このように、従来の負荷分散処理では、負荷分散装置が複数台存在する場合、あるいは、複数の業務を同一のサーバ上で実現する必要がある場合などには、一意性の保証が難しかった。
本発明はこのような点に鑑みてなされたものであり、システム構成や業務形態によらず、必要なケースにおいて一意性を保証することが可能な負荷分散処理プログラム及び負荷分散装置を提供することを目的とする。
本発明では、上記課題を解決するために、図1に示すような処理をコンピュータに実行させるための負荷分散処理プログラムが提供される。本発明にかかる負荷分散処理プログラムは、負荷分散装置1a及び負荷分散装置1bに適用され、コンピュータに以下の処理を実行させることができる。負荷分散装置1aは、応答メッセージに挿入されている特定情報を検出する第1の特定情報検出手段11、特定情報を挿入する特定情報挿入手段12、リクエストメッセージに挿入される特定情報を検出する第2の特定情報検出手段13、及びリクエストメッセージの振り分け先を決定する振り分け先決定手段14を具備し、リクエストメッセージを複数のサーバに振り分けて負荷分散を図るとともに、関連のあるリクエストメッセージを同一サーバに振り分ける処理を行う。負荷分散装置1bも同様の処理を行う。
第1の特定情報検出手段11は、クライアント3aからサーバ2aまたはサーバ2bに渡されたリクエストメッセージに対する応答メッセージをサーバ2aまたはサーバ2bから受け取ると、応答メッセージの送信元アドレス部を除く所定の領域に特定情報が挿入されているかどうかを検出する。特定情報には、リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定することが可能な情報が設定されている。特定情報挿入手段12は、第1の特定情報検出手段11によって特定情報が検出されなかった場合は、応答メッセージの送信元サーバを検出して振り分け先サーバに指定し、この指定された振り分け先サーバに関する特定情報を生成して応答メッセージに挿入する。この応答メッセージは、クライアント3aに送信する。第2の特定情報検出手段13は、クライアント3aから受信したリクエストメッセージに、特定情報が挿入されているかどうかを検出する。クライアント3aは、負荷分散装置1aから受信した応答メッセージに挿入された特定情報を記憶しておき、一意性を保証する必要がある場合は、リクエストメッセージに特定情報を挿入して送信する。振り分け先決定手段14は、第2の特定情報検出手段13によって特定情報が検出されなかった場合は、予め決められた規則に応じてリクエストメッセージの振り分け先を決定する。また、特定情報が検出された場合は、特定情報によって特定される振り分け先サーバを振り分け先に決定する。そして、決定された振り分け先にリクエストメッセージを送信する。
このような負荷分散装置1aでは、第1の特定情報検出手段11は、サーバ2aまたはサーバ2bから、クライアント3aのリクエストメッセージに対する応答メッセージを受け取ると、応答メッセージの送信元アドレス部を除く所定の領域に特定情報が挿入されているかどうかのチェックを行う。応答メッセージに振り分け先に指定される振り分け先サーバを特定する特定情報が挿入されていなければ、特定情報挿入手段12は、今回受け取った応答メッセージの送信元サーバを検出して振り分け先サーバに指定する。そして、振り分け先サーバに指定した送信元サーバを一意に特定する特定情報を生成し、応答メッセージに挿入する。こうして、振り分け先サーバの特定情報が挿入された応答メッセージがクライアント3aへ届く。クライアント3aは、特定情報を記憶しておき、一意性を保証する必要がある場合は、特定情報を読み出し、リクエストメッセージに挿入して送信する。負荷分散装置1aの第2の特定情報検出手段13は、クライアント3aからリクエストメッセージを受け取ると、受け取ったリクエストメッセージに特定情報が挿入されているかどうかを検出する。振り分け先決定手段14は、特定情報が検出された場合は、特定情報によって特定される振り分け先サーバを振り分け先に決定し、リクエストメッセージを送信する。一方、特定情報が検出されなかった場合は、予め決められた規則に基づいて振り分け先を決定し、リクエストメッセージを送信する。
本発明の負荷分散処理プログラムによって処理を行う負荷分散装置では、振り分け先サーバを特定する特定情報を応答メッセージに挿入してクライアントに送信し、クライアントから受信したリクエストメッセージに特定情報が挿入されていれば、特定情報に基づき振り分け先サーバにリクエストメッセージを振り分ける。この特定情報は、振り分け先サーバを一意に特定することのできる情報であって、他装置が設定した特定情報を用いても、同じように振り分け先サーバを決定することができる。したがって、複数台の負荷分散装置で構成されるシステムであっても、いずれかの負荷分散装置が設定した特定情報に基づき、他の負荷分散装置も同じサーバにリクエストメッセージを振り分けることができる。また、クライアント側が業務間をまたがって同じ特定情報をリクエストメッセージに挿入すれば、同様にして、同一のサーバへリクエストメッセージを振り分けることができる。この結果、システム構成や業務形態によらず、必要なケースにおいて一意性を保証することが可能となる。
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図1は、実施の形態に適用される発明の概念図である。
本発明に係る負荷分散装置1a及び負荷分散装置1bは、クライアント3aと、サーバ群2との間に配置される。
サーバ群2は、所定の処理業務を分散処理するサーバ2aとサーバ2bを有する。サーバ2aは、アプリケーションA(以下、APL−Aとする)21a及びアプリケーションB(以下、APL−Bとする)22aについてのサーバ側処理を実行する。サーバ2bもサーバ2aと同様に、APL−A(21b)及びAPL−B(22b)についてのサーバ側処理を実行する。従って、リクエストメッセージがどちらのサーバに振り分けられても、同様の処理が行われる。図の例では、サーバの数は2台であるが、設置されるサーバは何台であってもよい。サーバ2a及びサーバ2bは、クライアント3aとの間の一意性保証のため、負荷分散装置1aまたは負荷分散装置1bから受信したリクエストメッセージの予め決められた所定の領域に挿入された特定情報を応答メッセージの予め決められた所定の領域にそのまま設定し、負荷分散装置1aまたは負荷分散装置1bに送信する。
クライアント3aは、APL−A(31)及びAPL−B(32)についてのクライアント側処理を実行する。クライアント3aは、サーバ2a及びサーバ2bとの間の一意性保証のため、負荷分散装置1aまたは負荷分散装置1bから受信した応答メッセージの所定の領域に挿入された特定情報を装置内の記憶手段に記憶しておき、一意性を保証する必要がある場合は、サーバ2aまたはサーバ2bに対するリクエストメッセージの所定の領域に特定情報を挿入し、このリクエストメッセージを負荷分散装置1aまたは負荷分散装置1bに送信する。図の例では、クライアントの数は1台であるが、実際には複数台のクライアントが接続する。
特定情報4a、4b、4c、4d、4e、4fは、負荷分散装置1aまたは負荷分散装置1bがリクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定することが可能な情報で、たとえば、振り分け先サーバの実アドレスに変換可能な情報などが設定されている。これにより、特定情報のみから振り分け先サーバを特定することが可能で、負荷分散装置1a、1b内に振り分け先を管理する管理テーブルを設ける必要がなくなる。なお、特定情報4a、4b、4c、4d、4e、4fの内容は、挿入されるメッセージや転送経路は異なるが、その内容は同一である。特定情報4aは、負荷分散装置1aからクライアント3aに送信される応答メッセージに挿入される。特定情報4bは、クライアント3aが送信し、負荷分散装置1aが受信したリクエストメッセージに挿入される。特定情報4cは、負荷分散装置1aからサーバ2aに送信されるリクエストメッセージに挿入される。特定情報4dは、サーバ2aから負荷分散装置1aに送信される応答メッセージに挿入される。特定情報4eは、クライアント3aが送信し、負荷分散装置1bが受信したリクエストメッセージに挿入される。特定情報4fは、APL−A(31)からAPL−B(32)に引き渡される。
負荷分散装置1a及び負荷分散装置1bは、負荷分散装置1aを例にとると、第1の特定情報検出手段(以下、特定情報検出手段11とする)、特定情報挿入手段12、第2の特定情報検出手段(以下、特定情報検出手段13とする)及び振り分け先決定手段14を具備する。なお、負荷分散装置1bも同様に構成される。
特定情報検出手段11は、クライアント3aから、サーバ2aまたはサーバ2bに渡されたリクエストメッセージに対する応答メッセージを取得し、応答メッセージの送信元アドレス部を除く所定の領域に特定情報が挿入されているかどうかを検出する。負荷分散装置1aでは、応答メッセージの送信元アドレス部によって、送信元サーバ(振り分け先サーバに指定されている場合は振り分け先サーバに相当する)を特定できるが、クライアント3a、サーバ2aとメッセージが転送される際には書き換えられる情報であるので、別途領域を確保する必要がある。特定情報は、クライアイント3aからのリクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定することが可能な情報であり、応答メッセージの予め決められた所定の領域に挿入されている。負荷分散装置1a、1bと、サーバ2a、2b間で整合性がとれれば、特定情報を格納する所定の領域は、ヘッダ部及びデータ部を含む応答メッセージの任意の場所に設定することができる。検出結果及び応答メッセージは、特定情報挿入手段12へ引き渡す。
特定情報挿入手段12は、特定情報検出手段11の検出結果に基づき、応答メッセージに特定情報が挿入されている場合は、この応答メッセージをそのままクライアント3aに送信する。特定情報が含まれていない場合は、応答メッセージの送信元サーバを検出して振り分け先サーバに指定する。そして、振り分け先サーバに設定された送信元サーバに関する特定情報4aを生成し、クライアント3aへの応答メッセージの所定の領域に挿入し、この応答メッセージをクライアント3aに送信する。送信元サーバの特定は、振り分け先決定手段14が振り分け先を決定した際に生成した情報を参照して行うこともできるし、また、実アドレスに基づく特定情報を生成する場合は、受信した応答メッセージの送信元アドレスを参照して行うこともできる。
特定情報検出手段13は、クライアント3aのリクエストメッセージを取得し、リクエストメッセージに特定情報4bが挿入されているかどうかを検出し、検出結果とともにリクエストメッセージを振り分け先決定手段14へ送る。
振り分け先決定手段14は、特定情報検出手段13の検出結果に基づき、リクエストメッセージに特定情報4bが含まれていない場合には、予め決められた規則に応じてリクエストメッセージの振り分け先を決定する。たとえば、ラウンドロビン方式などによって、最適な振り分け先サーバを決定する。そして、決定した振り分け先にリクエストメッセージを送信する。リクエストメッセージに特定情報4bが含まれている場合は、特定情報4bによって特定される振り分け先サーバを振り分け先に決定し、リクエストメッセージを送信する。振り分け先サーバは、受け取ったリクエストメッセージに挿入されていた特定情報4bから特定することができるので、自装置以外、たとえば、負荷分散装置2aによって設定された特定情報であっても、サーバを特定することができる。
なお、上記の説明の負荷分散装置1aの各処理手段は、コンピュータが負荷分散処理プログラムを実行することにより、その処理機能が実現される。
このような構成の負荷分散装置1aの動作について説明する。
クライアント3aでは、APL−A(31)が実行する所定の処理において、サーバ群2(実際の送信先アドレスは、サーバ2a及びサーバ2bを代表する仮想サーバアドレス)に対し、リクエストメッセージを送信する。最初に送信するリクエストメッセージには、特定情報は挿入されていない。
負荷分散装置1aは、クライアント3aが送信したリクエストメッセージを受け取ると、特定情報検出手段13がリクエストメッセージに特定情報が挿入されているかどうかを検出する。この時点では、特定情報は検出されず、振り分け先決定手段14は、ラウンドロビン方式などの予め決められた規則によって、リクエストメッセージの振り分け先を決定し、リクエストメッセージを送信する。ここでは、サーバ2aが選択されたとし、リクエストメッセージがサーバ2aに送信されたとする。送信されるリクエストメッセージには、特定情報は挿入されていない。
負荷分散装置1aが振り分けたクライアント3aからのリクエストメッセージを受け取ったサーバ2aは、APL−A(21a)によってリクエストメッセージに対する応答メッセージを生成し、負荷分散装置1aに送信する。送信される応答メッセージには、特定情報は挿入されていない。
負荷分散装置1aでは、サーバ2aから応答メッセージを受け取ると、特定情報検出手段11は、受け取った応答メッセージに特定情報が挿入されているかどうかを検出する。この時点では特定情報は検出されないので、特定情報挿入手段12は、応答メッセージの送信元であるサーバ2aを検出して振り分け先サーバに指定する。そして、サーバ2aを一意に特定する特定情報4aを生成し、応答メッセージに挿入してクライアント3aに送信する。
以上の処理手順により、振り分け先サーバに設定したサーバ2aを特定可能にする特定情報4aが挿入された応答メッセージが、クライアント3aに送信される。クライアント3aは、特定情報4aが挿入された応答メッセージから、特定情報4aを抽出し、図示しない記憶手段に格納しておく。
クライアント3aのAPL−A(31)が、一意性保証を必要とする処理を行っていた場合、記憶手段に格納された特定情報を読み出し、次に出力するリクエストメッセージに挿入して送信する。これを特定情報4bとする。この特定情報4bには、振り分け先サーバに設定されたサーバ、すなわち、関連するセッションの相手先であるサーバ(サーバ2a)を特定する情報が設定されている。
負荷分散装置1aでは、特定情報4bが挿入されたリクエストメッセージを受け取り、特定情報検出手段13によって特定情報の有無が調べられる。今回は、特定情報4bが検出されるので、振り分け先決定手段14は、特定情報4bに基づき、振り分け先サーバを特定し、振り分け先に決定する。ここでは、特定情報4bには、サーバ2aを特定する情報が設定されているので、サーバ2aに対してリクエストメッセージを送信する。これにより、前回処理を行ったサーバ2aに対し、リクエストメッセージが送信される。このリクエストメッセージには、サーバ2aを特定する特定情報4cが設定されている。
特定情報4cを受信したサーバ2aは、APL−A(21a)が続きの処理を行い、今回のリクエストメッセージに対する応答メッセージを生成し、負荷分散装置1aに送信する。このとき、受け取ったリクエストメッセージに挿入されている特定情報4cは、そのまま応答メッセージの特定情報4dとして負荷分散装置1aに送り返される。
負荷分散装置1aでは、特定情報4dが挿入された応答メッセージを受け取ると、特定情報検出手段11によって特定情報のチェックを行う。今回は、特定情報4dが検出されるので、特定情報挿入手段12は、特定情報4dが挿入された応答メッセージをそのままクライアント3aに送信する。
以上のように、本発明では、所定のアプリケーションにおいて、クライアント3aとサーバ2aとの間でセッションが確立されると、負荷分散装置1aは、サーバ2aを振り分け先サーバに指定し、サーバ2aを特定する特定情報4aを応答メッセージに挿入してクライアント3aに送信する。クライアント3aは、一意性を保証する必要がある場合には、リクエストメッセージに特定情報4bを挿入して送信する。負荷分散装置1aは、特定情報4bに基づき、クライアント3aのリクエストメッセージを必ずサーバ2aに振り分ける。このようにして、一意性が保証される。
ところで、図1は、負荷分散装置1aと同等の負荷分散装置1bが設けられているシステムであり、クライアント3aからのリクエストメッセージを負荷分散装置1bが受信する場合もある。上述のように、クライアント3aは、一意性保証が必要な場合は、リクエストメッセージに特定情報を挿入して送信する。これを特定情報4eとする。負荷分散装置1bは、特定情報4eが挿入されたリクエストメッセージを受け取ると、負荷分散装置1aと同様に、検出された特定情報4eに基づき、リクエストメッセージをサーバ2aに振り分ける。このように、負荷分散装置1a及び負荷分散装置1bでは、振り分け先を管理する管理テーブルを必要とせず、特定情報4eのみに基づき振り分け先サーバを決定することができる。従って、負荷分散装置1bにおいて、負荷分散装置1aが設定した特定情報に基づき、サーバ2aにリクエストメッセージを振り分けることができる。
負荷分散装置がさらに設置されている場合であっても、複数台の負荷分散装置のうちの1台が振り分け先サーバを設定し、振り分け先サーバを特定する特定情報を応答メッセージに挿入してクライアントに通知すれば、クライアントから受け取るリクエストメッセージに挿入される特定情報に基づき、同一のサーバにリクエストメッセージを送信することができる。
また、クライアント3aでは、APL−A(31)以外のアプリケーションAPL−B(32)においても、APL−A(31)の処理で確立された一意性保証を引き続き利用したい場合がある。このような場合、APL−A(31)からAPL―B(32)に特定情報を引き渡しておく。これを特定情報4fとする。クライアント3aのAPL−B(32)は、一意性保証が必要な場合には、リクエストメッセージに特定情報4fを挿入して送信すれば、負荷分散装置1a及び負荷分散装置1bは、このリクエストメッセージをサーバ2aに振り分ける。すなわち、負荷分散装置1a及び負荷分散装置1bは、特定情報4fのみを参照し、特定情報4fによって特定される振り分け先サーバを振り分け先とする処理を行なっているので、業務(APLの種類)が異なっても、特定情報4fが同じであれば、同じサーバにリクエストメッセージを振り分ける。
このように、負荷分散装置が複数台存在する場合であっても、また、業務が複数にまたがる場合であっても、クライアントとサーバ間の一意性保証が可能となる。
以下、実施の形態を、Webベースのアプリケーション処理を行うクライアント・サーバシステムに適用した場合を例に図面を参照して詳細に説明する。
図2は、本発明の実施の形態の負荷分散システムのシステム構成を示す図である。
本発明の実施の形態の負荷分散システムは、サーバ群20とクライアント群30が、負荷分散装置群100を介して接続する。
クライアント群30を構成するクライアント30a、クライアント30b、・・・は、http(Hypertext Transfer Protocol)及びhttps(Hypertext Transfer Protocol Security)を用いて、サーバ群20のWebサーバから、HTML文書や、文書に関連付けられている画像、音声、動画などのファイルを取得する。サーバ群20を構成するサーバ1(20a)、サーバ2(20b)、・・・は、不定期に発生するクライアントからのリクエストを処理するWebサーバである。
負荷分散装置群100を構成する負荷分散装置100a、負荷分散装置100b、・・・は、クライアントからのリクエストメッセージを最適なサーバに振り分け、サーバの負荷分散を図る。負荷分散装置100a、負荷分散装置100b、・・・は、予め登録されたポリシー130に基づき、振り分け処理を実行する。ポリシー130には、サーバ群20の仮想IPアドレス(V−ip)、仮想ポート(V−port)などのほか、サーバ群20を構成するサーバのIPアドレスが登録される。たとえば、図の例では、サーバ1(20a)のIPアドレスとしてW1(=10.124.38.1)、及びサーバ2(20b)のIPアドレスとしてW2(=10.124.38.2)が登録されている。また、負荷分散の方式なども登録される。
ここで、負荷分散装置100aのハードウェア構成について説明する。図3は、本実施の形態の負荷分散装置のハードウェア構成例を示すブロック図である。
負荷分散装置100aは、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、通信インタフェース106が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションのプログラムが格納される。グラフィック処理装置104には、モニタ108が接続されており、CPU101からの命令に従って画像をモニタ108の画面に表示させる。入力インタフェース105には、キーボード109aやマウス109bが接続されており、キーボード109aやマウス109bから送られてくる信号を、バス107を介してCPU101に送信する。通信インタフェース106は、ネットワーク500に接続されており、ネットワーク500を介してクライアントやサーバとの間でデータの送受信を行う。
このようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3では、モニタ108、キーボード109a、マウス109bが直接負荷分散装置100aに接続するとしたが、モニタ、キーボード、マウスなどを備える他の端末装置とネットワーク500を介して接続するとしてもよい。この場合、たとえば、他の端末装置のマウスまたはキーボードからの入力指示をネットワーク500経由で取得して処理を行い、ネットワーク500経由で出力する処理結果が他の端末装置のモニタに表示される。また、図3には、負荷分散装置のハードウェア構成を示したが、サーバ及びクライアントのハードウェア構成も同様である。
ところで、Webベースのアプリケーション処理のためのhttpでは、一意性を保証するため、クッキーが利用される。クッキーの仕様は、たとえば、RFC(Request For Comments)2965などに定義されている。
クッキーは、httpのヘッダとして現われ、クライアントでは、常にサーバから返答されたクッキーを保存し、一意性保証が必要な場合、すなわち、同じサーバやURLにアクセスする際に、必ず同じものを送り返すことになっている。また、サーバでクッキー設定する以外にも、負荷分散装置などによって、サーバからクライアントに送信される応答メッセージに新たなクッキー情報を挿入するインサート・モードの仕様も定義されている。
本実施の形態では、クッキーを利用し、振り分け先サーバを特定する特定情報をクッキー情報に埋め込み、クライアント、サーバ及び負荷分散装置間を伝達させる。また、特定情報として、振り分け先サーバのIPアドレスに変換可能な情報を生成する。
一意性保証が必要な場合のクッキー処理は既にクライアント及びサーバに装備されているので、クッキーを利用することにより、負荷分散装置の負荷分散処理プログラムを更新すれば、既存のシステムに本実施の形態を適用することができるという利点がある。
本実施の形態のシステムのソフトウェア構成について説明する。
図4は、本実施の形態を構成する各装置のソフトウェア構成を示した図である。図2と同じものには同じ番号を付し、説明は省略する。また、図は、クライアント群、サーバ群、及び負荷分散装置群を代表し、クライアント30a、サーバ1(20a)、及び負荷分散装置100aのソフトウェア構成を示している。
クライアント30aは、http処理を行うAPL−A(31)と、https処理を行うAPL−B(32)を備え、応答メッセージに挿入されて送られてきたクッキーを保存し、一意性保証が必要な場合には、必ず同じものをリクエストメッセージに挿入して送り返すクッキー機能を有する。また、サーバ1(20a)は、これに対応し、APL−A(21a)とAPL−B(22a)を備え、アプリケーションレベルでクライアントを識別する必要がある場合は、クッキー情報を利用したセッション維持を図るとともに、負荷分散装置が挿入したクッキー情報はそのまま転送するクッキー機能を有する。
負荷分散装置1(100a)は、クッキー検出部111、送信元サーバ検出部112、クッキー挿入部113、クッキー検出部114、及び振り分け先決定部115を具備する。
クッキー検出部111は、サーバから受信された応答メッセージのヘッダ部に、振り分け先サーバを特定する特定情報が含まれるクッキーが挿入されているかどうかを検出する。送信元サーバ検出部112は、クッキー検出部111により、クッキーが検出されなかった場合は、応答メッセージの送信元サーバのIPアドレスを検出する。IPアドレスは、振り分け先サーバ決定部115が振り分け先決定時に生成する情報や、受け取った応答メッセージの送信元アドレスなどを参照して行う。IPアドレスにより、送信元サーバを一意に特定することができる。クッキー挿入部113は、送信元サーバ検出部112が検出した送信元サーバを振り分け先サーバに設定し、送信元サーバのIPアドレスに基づいてIPアドレスに変換可能な特定情報を生成する。特定情報には、IPアドレスを直接設定するほか、暗号化するなど変換を施した後に設定してもよい。また、負荷分散装置100aは、図2に示したポリシー130を共通に持っているので、管理下のサーバのIPアドレス情報を指示する情報を設定してもよい。生成された特定情報は、クッキーに埋め込み、クッキーを応答メッセージに挿入する。応答メッセージへのクッキー挿入は、クッキー仕様に従って行う。こうしてクッキー情報が挿入された応答メッセージは、リクエストメッセージの送信元のクライアントに返す。
一方、クッキー検出部114は、クライアントから受信したリクエストメッセージのヘッダ部にクッキーが含まれているかどうかを検出する。振り分け先決定部115は、クッキー検出部114によってクッキーが検出された場合は、クッキーに含まれる特定情報によって特定されるサーバにリクエストメッセージを振り分ける。また、クッキー検出部114によってクッキーが検出されなかった場合は、ポリシー130に設定された振り分け規則に基づき、最適なサーバに振り分けする。
以上の構成の負荷分散システムの動作について説明する。なお、図4では、実線で示された矢印は、APL−Aに関するクッキー(図では、cookieと表記)の流れを示しており、点線で示された矢印は、APL−Bに関するクッキーの流れを示している。
クライアント30aのAPL−A(31)から最初に送信されたリクエストメッセージには、クッキーは設定されておらず、負荷分散装置100aは、ポリシー130に基づいて、このリクエストメッセージをサーバ1(20a)に振り分ける。
負荷分散装置100aでは、サーバ1(20a)の応答メッセージを受信すると、クッキー検出部111がクッキーを探すが、検出されない。そこで、送信元サーバ検出部112は、応答メッセージの送信元サーバであるサーバ1(20a)の実IPアドレスを検出する。クッキー挿入部113は、検出された送信元サーバを振り分け先サーバに設定し、その特定情報を生成する。ここでは、IPアドレス、または、このIPアドレスに変換可能な情報、たとえば、サーバ1(20a)の実IPアドレス「10.124.38.1」をクッキー情報に設定する。Set−Cookieコマンドの書式は、たとえば、以下のようになる。
Set−Cookie:Version=バージョン番号;Name=VALUE;path=PATH;・・・・
本実施の形態では、“Name=VALUE”に、“FJXXXIDX=10.124.38.1”を設定したSet−Cookieコマンドを発行し、応答メッセージのヘッダ部にクッキーを挿入する。こうして、生成された応答メッセージをクライアント30aに送信する(S1)。
これにより、Set−Cookieコマンドがヘッダ部に挿入された応答メッセージがクライアント30aに送信される。
この応答メッセージを受信したクライアント30aは、受信したクッキー情報を保存しておき、一意性保証が必要な場合は、次のようなヘッダをリクエストメッセージに付加する。
Cookie:Version=バージョン番号;Name=VALUE;path=PATH;・・・・
ここで、“Name=VALUE”には、“FJXXXIDX=10.124.38.1”が設定されている。こうして生成されたリクエストメッセージをサーバに向けて送信する。
負荷分散装置100aでは、このリクエストメッセージを受信すると、クッキー検出部114によってクッキーが検出される。振り分け先決定部115は、クッキーに設定されるIPアドレスを含む特定情報(“FJXXXIDX=10.124.38.1”)に基づいて、振り分け先サーバをサーバ1(20a)と特定する。そして、サーバ1(20a)に対し、リクエストメッセージをそのまま送信する(S3)。
以下の説明では、ヘッダ部のうち、クッキー情報が占める領域をクッキーヘッダと呼ぶ。
サーバ1(20a)は、リクエストメッセージを受信し、クッキーが挿入されるヘッダ部はそのままの状態で応答メッセージを生成し、送信する(S4)。負荷分散装置100aでは、クッキー検出部111によってクッキーが検出されるので、送信元サーバ検出部112及びクッキー挿入部113は処理を行わず、そのまま送信する。これにより、S1で送信されたクッキーヘッダと同じものがヘッダに設定される応答メッセージが、クライアント30aに送信される。
以上の処理が繰り返されることにより、クライアント30aのAPL−A(31)とサーバ1(20a)のAPL−A(21a)との間の一意性が保証される。なお、負荷分散装置100bがリクエストメッセージを受信した場合であっても、クッキーヘッダには、サーバ1(20a)のIPアドレスの特定情報が設定されているので、これに基づき、サーバ1(20a)にリクエストメッセージを送信することができる。
また、クライアント30aのAPL−B(32)にまたがって一意性保証を行う場合は、APL−A(31)で用いたクッキーをAPL−B(32)に引き渡し(S5)、APL−B(32)においても、同じクッキーヘッダをリクエストメッセージに挿入して送信する(S6)。
負荷分散装置100aでは、クッキーに設定される特定情報のみに基づいて、リクエストメッセージの振り分け先を決定するので、APL−A(31)の場合と同様の処理が行われ、リクエストメッセージは、サーバ1(20a)のAPL−B(22a)に引き渡される(S7)。このクッキーは、再び負荷分散装置100aに送られ(S8)、負荷分散装置100aからクライアント30aに送信される(S9)。
上記の処理が繰り返されることにより、クライアント30aのAPL−A(31)とサーバ1(20a)のAPL−A(21a)との間の一意性保証に引き続き、クライアント30aのAPL−B(32)とサーバ1(20a)のAPL−B(22a)との間の一意性が保証される。このリクエストメッセージを負荷分散装置100bが受信しても、一意性が保証されることは、APL−Aの場合と同様である。
以下、負荷分散装置における一意性保証の処理手順を説明する。
図5は、本発明の実施の形態の負荷分散装置における一意性保証が確立されるまでの処理手順を示した図である。図4と同じものには、同じ番号を付し説明は省略する。なお、以下の説明のクッキー(CK)は、負荷分散装置100a、100bが設定する振り分け先サーバを特定する特定情報を含むクッキー情報を指すとし、サーバが、アプリケーションレベルの一意性を保持するために設定するクッキーは含まないとする。
クライアント30aのAPL−A(31)からリクエストメッセージ(REQ)が送信される。負荷分散装置100aは、これを受信し、クッキー(CK)が挿入されているかどうかを判定する。クッキー(CK)は、挿入されていないので、最適なサーバを振り分け先に決定し、リクエストメッセージ(REQ)を振り分け先に送信するサーバ振り分け処理を行う(S11)。図の例では、サーバ1(20a)が振り分け先サーバに決定されるとする。
サーバ1(20a)は、リクエストメッセージ(REQ)を受信し、APL−A(21a)による処理を行って、応答メッセージ(RES)を送信する。なお、アプリケーションレベルで、さらに、クライアント30aを特定するクッキー情報が必要な場合は、APL−A(21a)が利用するクッキー情報を設定しておくこともできる。
負荷分散装置100aは、応答メッセージ(RES)を受け取ると、クッキー(CK)が挿入されているかどうかを判定する。ここでは、クッキー(CK)は、検出されないので、クッキー挿入処理(S12)を行う。応答メッセージ(RES)の送信元サーバがサーバ1(20a)であることを特定し、振り分け先サーバに設定する。そして、その実IPアドレスに変換可能な情報をクッキー(CK)に設定し、Set−Cookieコマンドを発行して応答メッセージに挿入し、クッキー付応答メッセージ(RES+CK)を生成する。そして、このクッキー付応答メッセージ(RES+CK)をクライアント30aに返す。
クッキー付応答メッセージ(RES+CK)を受信したクライアント30aは、クッキー(CK)を保存する。そして以降のアクセスにおいて一意性保証が必要な場合は、保存したクッキー(CK)を読み出してリクエストメッセージに挿入し、クッキー付リクエストメッセージ(REQ+CK)をサーバに向けて送信する。
負荷分散装置100aは、クッキー付リクエストメッセージ(REQ+CK)を受信すると、クッキー(CK)が検出されるので、クッキー(CK)を参照して振り分け先を決定するクッキー参照サーバ振り分け処理を行う(S13)。挿入されたクッキー(CK)に埋め込まれた特定情報によって、振り分けサーバがサーバ1(20a)であることを特定し、クッキー付リクエストメッセージ(REQ+CK)をサーバ1(20a)に送信する。
サーバ1(20a)は、クッキー付リクエストメッセージ(REQ+CK)を受信し、APL−A(21a)による処理を行って、クッキー付応答メッセージ(RES+CK)を送信する。なお、アプリケーションレベルで設定されたクッキー情報がある場合は、これを参照して処理を行う。
負荷分散装置100aは、サーバ1(20a)から送られた応答メッセージを受け付け、クッキー(CK)が挿入されているかどうかを判定する。クッキー(CK)が検出されるので、クッキー付応答メッセージ(RES+CK)をそのままクライアント30aに送信する(S14)。
以下、ステップS13とステップS14の処理が繰り返され、クライアント30aのAPL−A(31)と、サーバ1(30a)のAPL−A(21a)との間の一意性が保証される。
次に、複数業務に渡る一意性保証について説明する。
図6は、本発明の実施の形態の負荷分散装置における複数業務に渡る一意性保証の処理手順を示した図である。図5と同じものには同じ番号を付し、説明は省略する。
ステップS13とステップS14の処理が繰り返され、クライアント30aのAPL−A(31)と、サーバ1(20a)のAPL−A(21a)との間の一意性が保証されている状態から、クライアント30aでは、APL−A(31)からAPL−B(32)にクッキー(CK)が引き渡され、APL−B(32)の処理が開始される。
クライアント30aのAPL−B(32)では、クッキー(CK)をリクエストメッセージに挿入し、APL−Bに関するクッキー付リクエストメッセージ(REQ(B)+CK)を送信する。リクエストメッセージは、APL−A(31)のREQ(A)からREQ(B)に変わっているが、クッキー(CK)は変わらない。
負荷分散装置100aでは、クッキー付リクエストメッセージ(REQ(B)+CK)を受信すると、クッキー(CK)を参照し、クッキー(CK)の特定情報によってサーバ1(20a)を特定し、サーバ1(20a)を振り分け先としてクッキー付リクエストメッセージ(REQ(B)+CK)を送信するクッキー参照サーバ振り分け処理(S15)を行う。
サーバ1(20a)は、クッキー付リクエストメッセージ(REQ(B)+CK)を受信し、REQ(B)に対応するAPL−B(22a)による処理を行って、クッキー付応答メッセージ(RES(B)+CK)を送信する。負荷分散装置100aは、これを受信し、クッキー(CK)が挿入されているかどうかを判定する。クッキー(CK)が検出されるので、クッキー付応答メッセージ(RES(B)+CK)をそのままクライアント30aに送信する(S16)。
このように、負荷分散装置は、クッキー(CK)を参照して振り分け先サーバを決定するので、クッキー(CK)が同じであれば、複数業務に渡って同一のサーバにリクエストメッセージを振り分けるため、一意性保証が可能となる。
なお、実際のアプリケーション処理では、APL−A(21a)からAPL−B(22a)にクライアント30aに関する何らかの情報が引き継がれてアプリケーションレベルでの一意性保証が行われる。たとえば、サーバ1(20a)でクッキーを発行し、このクッキーをAPL−A(21a)からAPL−B(22a)に引き継ぐなどの手法がある。しかしながら、このようなクッキーを用意しても、本実施の形態の処理によって、負荷分散装置100aがサーバ1(20a)にリクエストメッセージを振り分けることが保証されなければ、アプリケーションレベルでの複数業務に渡る一意性保証が実現できない。
次に、負荷分散装置が複数台存在する場合の一意性保証について説明する。
図7は、本発明の実施の形態の負荷分散装置が複数台存在する場合の一意性保証の処理手順を示した図である。図5と同じものには同じ番号を付し、説明は省略する。
負荷分散装置100aでは、ステップS11とステップS12により、クライアント30aからのリクエストメッセージ(REQ)をサーバ1(20a)に振り分け、サーバ1(20a)のIPアドレスに変換可能なクッキー(CK)を挿入したクッキー付応答メッセージ(RES+CK)をクライアント30aに送信する。
クッキー付応答メッセージ(RES+CK)を受信したクライアント30aは、クッキー(CK)を保存し、一意性保証が必要な場合は、クッキー付リクエストメッセージ(REQ+CK)を送信する。
負荷分散装置2(100b)は、クッキー付リクエストメッセージ(REQ+CK)を受信すると、クッキー(CK)を参照し、指定されたサーバ1(20a)を振り分け先サーバに決定し、クッキー付リクエストメッセージ(REQ+CK)を送信するクッキー参照サーバ振り分け処理(S21)を行う。そして、サーバ1(20a)が送信したクッキー付応答メッセージ(RES+CK)を受信すると、クッキー(CK)が検出されるので、クッキー付応答メッセージ(RES+CK)をそのままクライアント30aに送信する(S22)。
このように、負荷分散装置100aは、クッキー(CK)を参照して振り分け先サーバを特定し、リクエストメッセージの振り分け先を決定するので、クッキー(CK)が設定されていれば、他装置が設定したクッキー(CK)を用いても、関連するリクエストメッセージを同一サーバに送信することができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、負荷分散装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
(付記1) リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラムにおいて、
コンピュータを、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第1の特定情報検出手段、
前記第1の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第2の特定情報検出手段、
前記第2の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段、
として機能させることを特徴とする負荷分散処理プログラム。
(付記2) 前記特定情報挿入手段として、前記振り分け先サーバに指定する前記送信元サーバの実アドレスを検出し、前記送信元サーバの実アドレスに変換可能な情報を前記特定情報として生成する、
処理を実行させることを特徴とする付記1記載の負荷分散処理プログラム。
(付記3) 前記振り分け先決定手段として、前記特定情報に基づいて前記振り分け先サーバの実アドレスを取得し、前記振り分け先サーバの実アドレスを用いて前記リクエストメッセージを送信する、
処理を実行させることを特徴とする付記2記載の負荷分散処理プログラム。
(付記4) 前記特定情報挿入手段として、生成した前記特定情報をクッキー情報として前記応答メッセージのヘッダ部に埋め込む、
処理を行わせることを特徴とする付記1記載の負荷分散処理プログラム。
(付記5) リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散装置において、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第1の特定情報検出手段と、
前記第1の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段と、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第2の特定情報検出手段と、
前記第2の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段と、
を具備することを特徴とする負荷分散装置。
(付記6) リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータを、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第1の特定情報検出手段、
前記第1の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第2の特定情報検出手段、
前記第2の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段、
として機能させることを特徴とする負荷分散処理プログラムを記録した記録媒体。
実施の形態に適用される発明の概念図である。 本発明の実施の形態の負荷分散システムのシステム構成を示す図である。 本実施の形態の負荷分散装置のハードウェア構成例を示すブロック図である。 本実施の形態を構成する各装置のソフトウェア構成を示した図である。 本発明の実施の形態の負荷分散装置における一意性保証が確立されるまでの処理手順を示した図である。 本発明の実施の形態の負荷分散装置における複数業務に渡る一意性保証の処理手順を示した図である。 本発明の実施の形態の負荷分散装置が複数台存在する場合の一意性保証の処理手順を示した図である。 従来の負荷分散装置を備えたクライアント・サーバシステムの構成の一例を示した図である。 従来の負荷分散装置におけるクッキー設定処理を示した図である。
符号の説明
1a、1b 負荷分散装置
2 サーバ群
2a、2b サーバ
3a クライアント
4a、4b、4c、4d、4e 特定情報
11 (第1の)特定情報検出手段
12 特定情報挿入手段
13 (第2の)特定情報検出手段
14 振り分け先決定手段
21a、21b APL−A(サーバ側)
22a、22b APL−B(サーバ側)
31 APL−A(クライアント側)
32 APL−B(クライアント側)

Claims (4)

  1. リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラムにおいて、
    コンピュータを、
    クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第1の特定情報検出手段、
    前記第1の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段、
    受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第2の特定情報検出手段、
    前記第2の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段、
    として機能させることを特徴とする負荷分散処理プログラム。
  2. 前記特定情報挿入手段として、前記振り分け先サーバに指定する前記送信元サーバの実アドレスを検出し、前記送信元サーバの実アドレスに変換可能な情報を前記特定情報として生成する、
    処理を実行させることを特徴とする請求項1記載の負荷分散処理プログラム。
  3. 前記特定情報挿入手段として、生成した前記特定情報をクッキー情報として前記応答メッセージのヘッダ部に埋め込む、
    処理を行わせることを特徴とする請求項1記載の負荷分散処理プログラム。
  4. リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散装置において、
    クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第1の特定情報検出手段と、
    前記第1の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段と、
    受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第2の特定情報検出手段と、
    前記第2の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段と、
    を具備することを特徴とする負荷分散装置。
JP2006036354A 2006-02-14 2006-02-14 負荷分散処理プログラム及び負荷分散装置 Pending JP2007219608A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006036354A JP2007219608A (ja) 2006-02-14 2006-02-14 負荷分散処理プログラム及び負荷分散装置
US11/439,644 US7509424B2 (en) 2006-02-14 2006-05-24 Load-balancing device and computer-readable recording medium in which load-balancing program is recorded

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006036354A JP2007219608A (ja) 2006-02-14 2006-02-14 負荷分散処理プログラム及び負荷分散装置

Publications (1)

Publication Number Publication Date
JP2007219608A true JP2007219608A (ja) 2007-08-30

Family

ID=38370079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006036354A Pending JP2007219608A (ja) 2006-02-14 2006-02-14 負荷分散処理プログラム及び負荷分散装置

Country Status (2)

Country Link
US (1) US7509424B2 (ja)
JP (1) JP2007219608A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061622A (ja) * 2008-09-08 2010-03-18 Kddi R & D Laboratories Inc トランザクション負荷分散装置およびプログラム
JP2010140351A (ja) * 2008-12-12 2010-06-24 Canon Software Inc 情報処理装置、セッション管理方法、プログラム、及び、記録媒体
WO2010110183A1 (ja) * 2009-03-23 2010-09-30 日本電気株式会社 分散処理システム、インタフェース、記憶装置、分散処理方法、分散処理プログラム
JP2011008484A (ja) * 2009-06-25 2011-01-13 Fujitsu Ltd データ処理装置、データ処理プログラムおよびデータ処理方法
JP2011039681A (ja) * 2009-08-07 2011-02-24 Fujitsu Ltd 中継装置及び転送ルールに関連する情報処理方法並びにプログラム
JP2012073950A (ja) * 2010-09-29 2012-04-12 Fujitsu Ltd アプリケーション配備装置、アプリケーション配備方法およびアプリケーション配備プログラム
US8386575B2 (en) 2009-03-19 2013-02-26 Fujitsu Limited Method of realizing uniqueness assurance and method of determining message destination
JP2014225157A (ja) * 2013-05-16 2014-12-04 富士通株式会社 通信システム、負荷分散装置、および、負荷分散プログラム
JP2015121932A (ja) * 2013-12-24 2015-07-02 富士ゼロックス株式会社 セッション管理システム、サービス提供装置、及びプログラム
JP2015121933A (ja) * 2013-12-24 2015-07-02 富士ゼロックス株式会社 セッション管理システム、動作モード管理装置、及びプログラム
JP5960690B2 (ja) * 2011-04-19 2016-08-02 株式会社Murakumo ネットワークアクセスシステム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100568808C (zh) * 2006-10-12 2009-12-09 国际商业机器公司 对多个网络服务器并行操作的方法和装置
US8943271B2 (en) * 2008-06-12 2015-01-27 Microsoft Corporation Distributed cache arrangement
US8151062B2 (en) * 2008-10-26 2012-04-03 Microsoft Corporation Consistency models in a distributed store
US8244905B2 (en) * 2009-03-31 2012-08-14 Alcatel Lucent Routing mechanisms for messaging applications using an enhanced gateway control function
JP5338555B2 (ja) * 2009-08-11 2013-11-13 富士通株式会社 負荷分散装置、負荷分散方法および負荷分散プログラム
JP5360233B2 (ja) * 2010-01-06 2013-12-04 富士通株式会社 負荷分散システム及びその方法
JP5593944B2 (ja) * 2010-08-10 2014-09-24 富士通株式会社 判定装置、判定方法及びコンピュータプログラム
US20120158945A1 (en) * 2010-12-16 2012-06-21 Christian Goldbach Server load balancing using dynamic log-on groups
PL2501107T3 (pl) 2011-03-15 2014-08-29 Amadeus Sas Sposób oraz system do dostarczania sesji w różnorodnym środowisku
EP2500856A1 (en) * 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for providing a session involving a plurality of software applications
EP2500848A1 (en) 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for centralized reservation context management on multi-server reservation system
EP2541473A1 (en) 2011-06-27 2013-01-02 Amadeus S.A.S. Method and system for a pre-shopping reservation system with increased search efficiency
US9235620B2 (en) 2012-08-14 2016-01-12 Amadeus S.A.S. Updating cached database query results
US9609068B2 (en) 2013-12-16 2017-03-28 Fuji Xerox Co., Ltd. Session management system, session management apparatus, and non-transitory computer readable medium
US10348812B2 (en) * 2015-06-22 2019-07-09 Vmware Inc. Sticky session data migration

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002207733A (ja) * 2001-01-10 2002-07-26 Ip Net Corp ウェブサーバ負荷分散システム
JP2004178286A (ja) * 2002-11-27 2004-06-24 Fujitsu Ltd 中継装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE512672C2 (sv) 1998-06-12 2000-04-17 Ericsson Telefon Ab L M Förfarande och system för överföring av en cookie
US6374300B2 (en) * 1999-07-15 2002-04-16 F5 Networks, Inc. Method and system for storing load balancing information with an HTTP cookie
JP2003521067A (ja) * 2000-01-28 2003-07-08 ウィリアムズ コミュニケーションズ, エルエルシー 起点サーバとクライアントとの間のメディアリソースリクエストおよび/または応答を書き換えるシステムおよび方法
JP2002175274A (ja) * 2000-12-06 2002-06-21 Sony Corp 情報処理装置及び情報処理方法、ネットワーク・システム、記憶媒体、並びにコンピュータ・プログラム
US20020120743A1 (en) 2001-02-26 2002-08-29 Lior Shabtay Splicing persistent connections
US7143169B1 (en) * 2002-04-04 2006-11-28 Cisco Technology, Inc. Methods and apparatus for directing messages to computer systems based on inserted data
JP4196732B2 (ja) 2003-05-26 2008-12-17 日本電気株式会社 データ転送装置及びプログラム
JP4241660B2 (ja) * 2005-04-25 2009-03-18 株式会社日立製作所 負荷分散装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002207733A (ja) * 2001-01-10 2002-07-26 Ip Net Corp ウェブサーバ負荷分散システム
JP2004178286A (ja) * 2002-11-27 2004-06-24 Fujitsu Ltd 中継装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061622A (ja) * 2008-09-08 2010-03-18 Kddi R & D Laboratories Inc トランザクション負荷分散装置およびプログラム
JP2010140351A (ja) * 2008-12-12 2010-06-24 Canon Software Inc 情報処理装置、セッション管理方法、プログラム、及び、記録媒体
US8386575B2 (en) 2009-03-19 2013-02-26 Fujitsu Limited Method of realizing uniqueness assurance and method of determining message destination
WO2010110183A1 (ja) * 2009-03-23 2010-09-30 日本電気株式会社 分散処理システム、インタフェース、記憶装置、分散処理方法、分散処理プログラム
JP5354007B2 (ja) * 2009-03-23 2013-11-27 日本電気株式会社 分散処理システム、インタフェース、記憶装置、分散処理方法、分散処理プログラム
JP2011008484A (ja) * 2009-06-25 2011-01-13 Fujitsu Ltd データ処理装置、データ処理プログラムおよびデータ処理方法
US8370418B2 (en) 2009-08-07 2013-02-05 Fujitsu Limited Relay apparatus and method for transferring message
JP2011039681A (ja) * 2009-08-07 2011-02-24 Fujitsu Ltd 中継装置及び転送ルールに関連する情報処理方法並びにプログラム
JP2012073950A (ja) * 2010-09-29 2012-04-12 Fujitsu Ltd アプリケーション配備装置、アプリケーション配備方法およびアプリケーション配備プログラム
JP5960690B2 (ja) * 2011-04-19 2016-08-02 株式会社Murakumo ネットワークアクセスシステム
JP2014225157A (ja) * 2013-05-16 2014-12-04 富士通株式会社 通信システム、負荷分散装置、および、負荷分散プログラム
JP2015121932A (ja) * 2013-12-24 2015-07-02 富士ゼロックス株式会社 セッション管理システム、サービス提供装置、及びプログラム
JP2015121933A (ja) * 2013-12-24 2015-07-02 富士ゼロックス株式会社 セッション管理システム、動作モード管理装置、及びプログラム

Also Published As

Publication number Publication date
US7509424B2 (en) 2009-03-24
US20070192492A1 (en) 2007-08-16

Similar Documents

Publication Publication Date Title
JP2007219608A (ja) 負荷分散処理プログラム及び負荷分散装置
EP1303096B1 (en) Virtual network with adaptive dispatcher
US7899047B2 (en) Virtual network with adaptive dispatcher
JP4738344B2 (ja) リモートアプリケーションディスカバリのためのウェブサービス
US8200971B2 (en) Method for the provision of a network service
JP3966598B2 (ja) サーバ選択システム
US7418501B2 (en) Dynamic extension of network-accessible services
US20030187871A1 (en) Session information inheriting method and apparatus
JP4550067B2 (ja) 複数のプロバイダからのリモートアプリケーションショートカットのマージされたビューの提示
US10182126B2 (en) Multilevel redirection in a virtual desktop infrastructure environment
US8949952B2 (en) Multi-stack subscriber sign on
EP2140351B1 (en) Method and apparatus for cluster data processing
US20070124477A1 (en) Load Balancing System
US8341285B2 (en) Method and system for transferring files
EP3148125A1 (en) Setting method, server device and service chain system
JP3899076B2 (ja) 一時的ネットワーク
CN111327668B (zh) 网络管理方法、装置、设备和存储介质
US20170054705A1 (en) Secure transfer of web application client persistent state information into a new domain
CN114938396B (zh) 服务调用请求的路由方法、创建服务的方法及装置
JP2006285377A (ja) 故障監視プログラム及び負荷分散装置
US7885997B2 (en) Data processing method, program, device, message structure, message generation method, and message transmission method
KR100987768B1 (ko) 대용량 쿠키 처리 방법 및 장치
JP4341071B2 (ja) アプリケーションのタイムアウト時間調整システムおよび方法ならびにサーバ装置およびそのプログラム
KR20230003490A (ko) 오케스트레이션된 프록시 서비스
JP5017391B2 (ja) 加入者収容変更方法、移行先セッション制御サーバ装置および管理サーバ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101012