(57)【要約】【課題】システム構成や業務形態によらず、一意性を保証する。【解決手段】応答メッセージに振り分け先サーバを特定する特定情報が含まれていなければ、特定情報挿入手段１２は、この応答メッセージの送信元のサーバを検出して振り分け先サーバに設定し、振り分け先サーバを特定する特定情報を応答メッセージに挿入する。クライアント３ａは、特定情報を記憶しておき、一意性を保証する必要がある場合には、リクエストメッセージに特定情報を挿入して送信する。第２の特定情報検出手段１３は、リクエストメッセージに特定情報が挿入されているかどうかを検出する。振り分け先決定手段１４は、特定情報が検出された場合は、特定情報によって特定される振り分け先サーバを振り分け先として、リクエストメッセージを送信する。【選択図】図１
2007219608.tif 000002
【特許請求の範囲】
【請求項１】
リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラムにおいて、
コンピュータを、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第１の特定情報検出手段、
前記第１の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第２の特定情報検出手段、
前記第２の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段、
として機能させることを特徴とする負荷分散処理プログラム。
【請求項２】
前記特定情報挿入手段として、前記振り分け先サーバに指定する前記送信元サーバの実アドレスを検出し、前記送信元サーバの実アドレスに変換可能な情報を前記特定情報として生成する、
処理を実行させることを特徴とする請求項１記載の負荷分散処理プログラム。
【請求項３】
前記特定情報挿入手段として、生成した前記特定情報をクッキー情報として前記応答メッセージのヘッダ部に埋め込む、
処理を行わせることを特徴とする請求項１記載の負荷分散処理プログラム。
【請求項４】
リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散装置において、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第１の特定情報検出手段と、
前記第１の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段と、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第２の特定情報検出手段と、
前記第２の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段と、
を具備することを特徴とする負荷分散装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は負荷分散処理プログラム及び負荷分散装置に関し、特にリクエストメッセージを振り分けて負荷分散を図るとともに、関連のあるリクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラム及び負荷分散装置に関する。
【背景技術】
【０００２】
従来から、信頼性の高いクライアント・サーバシステムを構築するために欠かせない要素として、負荷分散技術が知られている。図８は、従来の負荷分散装置を備えたクライアント・サーバシステムの構成の一例を示した図である。
【０００３】
クライアント・サーバシステムは、所定の業務処理を行うサーバ群９３０と、任意のタイミングでサーバ群９３０に対しリクエストメッセージ（以下、単にリクエストとする）を送信するクライアント（利用者装置）群９４０との間に、負荷分散装置９１０が設置される。たとえば、クライアントＡ（９４１）からサーバ群９３０を代表する仮想アドレスにリクエストが送信されると、負荷分散装置９１０がリクエストを一旦受信し、サーバ群９３０から最適な振り分け先サーバを選択し、リクエストを転送する。このように、負荷分散装置９１０は、クライアントからのリクエスト受信ごとに、リクエストを最適なサーバに振り分けるが、業務によっては振り分け先のサーバが同じでなければならない場合がある。たとえば、ショッピングサイトでは、購入する商品のリスト管理のため、ショッピングの開始から決済まで同じサーバに接続する必要がある。このため、負荷分散装置９１０は、クライアントから送られてくるリクエストの中で、関連のあるリクエストを同じサーバに振り分けるセッション維持機能を備えている。なお、セッション維持機能は、クライアントとサーバ間のデータの一意性を保証する一意性保証機能とも呼ばれており、以下の説明では、一意性保障機能と記す。
【０００４】
代表的な一意性保証機能として、（１）送信元のＩＰ（Internet Protocol）アドレス、（２）サーバが設定するクッキー（cookie）、及び（３）負荷分散装置が設定するクッキーなどを利用した手法がある。
【０００５】
（１）送信元のＩＰアドレスを利用した一意性保証では、送信元ＩＰアドレスでクライアントを特定し、同じクライアントからのリクエストは同じサーバに振り分ける。
（２）サーバが設定するクッキーを利用した一意性保証では、サーバ・クライアント間のクッキー機能を利用する。サーバ・クライアント間において、サーバは、必要に応じて利用者固有のクッキーを応答メッセージに追加してクライアントに送信する。クッキーには、たとえばランダムに設定される文字列など、他と重なりにくいものが設定される。クライアントは、同じサーバにアクセスする必要がある場合には、このクッキーをリクエストに添付して送信するという機能を有する。負荷分散装置は、この機能を利用し、サーバが設定したクッキーを記憶しておき、クライアントからのリクエストに添付されるクッキーに基づき、このリクエストをクッキー発行元のサーバに振り分ける。また、クッキーの代わりに、ＵＲＬ（Uniform Resource Locators）埋め込みパラメータを用いることもできる。
【０００６】
（３）負荷分散装置が設定するクッキーを利用した一意性保証では、上記の（２）のクッキーを負荷分散装置が生成する。たとえば、クライアントＡ（９４１）からのリクエスト９５１をサーバ１（９３１）に振り分けた場合、サーバ１（９３１）からの応答９５２にクッキーｃ１（９５３）を添付してクライアントＡ（９４１）へ返す。以降、クライアントＡ（９４１）からのリクエストに設定されるクッキーｃ１（９５３）に基づき、このリクエストをサーバ１（９３１）に振り分ける。
【０００７】
また、クッキー機能を用いる手法の１つとして、サーバから送信された通信データに含まれるクッキーにサーバ識別子を上書きしてクライアントに送信し、クライアントからのクッキーに含まれるサーバ識別子で転送先を決定する中継装置が提案されている（たとえば、特許文献１参照）。
【特許文献１】特開２００４−１７８２８６号公報（段落番号〔００９２〕〜〔０１１３〕、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、従来の負荷分散処理には、システム構成や業務形態によっては、以下のように一意性の保証ができないケースが発生するという問題点があった。
（１）送信元ＩＰアドレスを利用した一意性保証では、クライアントは必ず同じＩＰアドレスであることが前提であるが、クライアント側にプロキシが存在するような場合、同一クライアントでも送信元ＩＰアドレスが動的に変更されることがある。このため、単一業務であっても一意性保証ができない場合が生じる。
【０００９】
（２）サーバが設定するクッキーを利用した一意性保証では、サーバ側は個別の業務に対応するアプリケーションごとに独自にクッキーを設定しているため、同じ業務における一意性は保証されるが、複数の業務での一意性保証は難しいという問題がある。したがって、一意性保証のためには、事前に複数の業務を１つの業務に集約したり、業務アプリケーション間での連携などの処理が必要になったりする。しかしながら、そのためにはアプリケーションを新たに開発しなければならず、多大な労力が必要となる。
【００１０】
（３）負荷分散装置が設定するクッキーを利用した一意性保証も、（２）のサーバが設定するクッキーを利用する場合と同様に、複数の業務での一意性保証が難しいという問題がある。
【００１１】
図９は、従来の負荷分散装置におけるクッキー設定処理を示した図である。
ここでは、業務Ａ１と業務Ａ２は関連しており、処理は同一サーバで実行される必要があるとする。クライアントＡ（９４１）が、業務Ａ１を開始し、サーバに対して「業務Ａ１に関するリクエスト」を送信すると、負荷分散装置１（９１０）は、リクエストを受け付け、振り分け先サーバを選択する。たとえば、サーバ１（９３１）へ振り分けた場合、クライアントＡ（９４１）の応答にクッキーｃ１を添付し、自装置内の管理テーブル９１１に、業務「Ａ１」、設定したクッキー「ｃ１」、及び振り分け先サーバ「サーバ１」を設定しておく。以降、業務Ａ１に関するクライアントＡ（９４１）からのリクエストにはクッキーｃ１が添付されるので、負荷分散装置１（９１０）は、管理テーブル９１１を参照し、リクエストを常にサーバ１（９３１）へ振り分けることができる。ところが、業務２が開始され、クライアントＡ（９４２）が「業務Ａ２に関するリクエスト」にクッキーｃ１を添付しても、負荷分散装置１（９１０）では、管理テーブル９１１に該当する設定はないので、新たに振り分けを行い、クッキーを設定し、管理テーブル９１１に登録する。この場合、サーバ１（９３１）以外のサーバ、たとえば、サーバ２（９３２）に振り分けられる可能性があり、一意性は保証されない。この場合の対策も、（２）のサーバが設定するクッキーを利用する場合と同様であり、実現は容易ではない。
【００１２】
また、負荷分散装置が複数台設定される場合にも、一意性が保証されないという問題がある。たとえば、上述のように、クライアントＡ（９４１）が、業務Ａ１のリクエストにクッキーｃ１を添付して送信した場合、これを管理テーブル９１１に業務「Ａ１」とクッキー「ｃ１」が設定された負荷分散装置１（９１０）が受け取る場合には問題ないが、もう１台の負荷分散装置２（９２９）が受け取った場合には、管理テーブル９２１に該当する設定がないので、適当に振り分けを行い、クッキーを設定する。このため、サーバ２（９３２）に振り分け、クッキーｃ３を設定し、クライアントＡ（９４１）にクッキーｃ３を添付した応答を返すことが考えられ、一意性は保証されない。この場合、負荷分散装置を１台とするか、負荷分散装置間で管理テーブルを共有すれば一意性が保証されるが、現実的ではない。なお、（２）サーバが設定するクッキーを利用する場合、及び特許文献１記載のクッキー利用手法でも、同様の問題が生じる。
【００１３】
このように、従来の負荷分散処理では、負荷分散装置が複数台存在する場合、あるいは、複数の業務を同一のサーバ上で実現する必要がある場合などには、一意性の保証が難しかった。
【００１４】
本発明はこのような点に鑑みてなされたものであり、システム構成や業務形態によらず、必要なケースにおいて一意性を保証することが可能な負荷分散処理プログラム及び負荷分散装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明では、上記課題を解決するために、図１に示すような処理をコンピュータに実行させるための負荷分散処理プログラムが提供される。本発明にかかる負荷分散処理プログラムは、負荷分散装置１ａ及び負荷分散装置１ｂに適用され、コンピュータに以下の処理を実行させることができる。負荷分散装置１ａは、応答メッセージに挿入されている特定情報を検出する第１の特定情報検出手段１１、特定情報を挿入する特定情報挿入手段１２、リクエストメッセージに挿入される特定情報を検出する第２の特定情報検出手段１３、及びリクエストメッセージの振り分け先を決定する振り分け先決定手段１４を具備し、リクエストメッセージを複数のサーバに振り分けて負荷分散を図るとともに、関連のあるリクエストメッセージを同一サーバに振り分ける処理を行う。負荷分散装置１ｂも同様の処理を行う。
【００１６】
第１の特定情報検出手段１１は、クライアント３ａからサーバ２ａまたはサーバ２ｂに渡されたリクエストメッセージに対する応答メッセージをサーバ２ａまたはサーバ２ｂから受け取ると、応答メッセージの送信元アドレス部を除く所定の領域に特定情報が挿入されているかどうかを検出する。特定情報には、リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定することが可能な情報が設定されている。特定情報挿入手段１２は、第１の特定情報検出手段１１によって特定情報が検出されなかった場合は、応答メッセージの送信元サーバを検出して振り分け先サーバに指定し、この指定された振り分け先サーバに関する特定情報を生成して応答メッセージに挿入する。この応答メッセージは、クライアント３ａに送信する。第２の特定情報検出手段１３は、クライアント３ａから受信したリクエストメッセージに、特定情報が挿入されているかどうかを検出する。クライアント３ａは、負荷分散装置１ａから受信した応答メッセージに挿入された特定情報を記憶しておき、一意性を保証する必要がある場合は、リクエストメッセージに特定情報を挿入して送信する。振り分け先決定手段１４は、第２の特定情報検出手段１３によって特定情報が検出されなかった場合は、予め決められた規則に応じてリクエストメッセージの振り分け先を決定する。また、特定情報が検出された場合は、特定情報によって特定される振り分け先サーバを振り分け先に決定する。そして、決定された振り分け先にリクエストメッセージを送信する。
【００１７】
このような負荷分散装置１ａでは、第１の特定情報検出手段１１は、サーバ２ａまたはサーバ２ｂから、クライアント３ａのリクエストメッセージに対する応答メッセージを受け取ると、応答メッセージの送信元アドレス部を除く所定の領域に特定情報が挿入されているかどうかのチェックを行う。応答メッセージに振り分け先に指定される振り分け先サーバを特定する特定情報が挿入されていなければ、特定情報挿入手段１２は、今回受け取った応答メッセージの送信元サーバを検出して振り分け先サーバに指定する。そして、振り分け先サーバに指定した送信元サーバを一意に特定する特定情報を生成し、応答メッセージに挿入する。こうして、振り分け先サーバの特定情報が挿入された応答メッセージがクライアント３ａへ届く。クライアント３ａは、特定情報を記憶しておき、一意性を保証する必要がある場合は、特定情報を読み出し、リクエストメッセージに挿入して送信する。負荷分散装置１ａの第２の特定情報検出手段１３は、クライアント３ａからリクエストメッセージを受け取ると、受け取ったリクエストメッセージに特定情報が挿入されているかどうかを検出する。振り分け先決定手段１４は、特定情報が検出された場合は、特定情報によって特定される振り分け先サーバを振り分け先に決定し、リクエストメッセージを送信する。一方、特定情報が検出されなかった場合は、予め決められた規則に基づいて振り分け先を決定し、リクエストメッセージを送信する。
【発明の効果】
【００１８】
本発明の負荷分散処理プログラムによって処理を行う負荷分散装置では、振り分け先サーバを特定する特定情報を応答メッセージに挿入してクライアントに送信し、クライアントから受信したリクエストメッセージに特定情報が挿入されていれば、特定情報に基づき振り分け先サーバにリクエストメッセージを振り分ける。この特定情報は、振り分け先サーバを一意に特定することのできる情報であって、他装置が設定した特定情報を用いても、同じように振り分け先サーバを決定することができる。したがって、複数台の負荷分散装置で構成されるシステムであっても、いずれかの負荷分散装置が設定した特定情報に基づき、他の負荷分散装置も同じサーバにリクエストメッセージを振り分けることができる。また、クライアント側が業務間をまたがって同じ特定情報をリクエストメッセージに挿入すれば、同様にして、同一のサーバへリクエストメッセージを振り分けることができる。この結果、システム構成や業務形態によらず、必要なケースにおいて一意性を保証することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、実施の形態に適用される発明の概念図である。
【００２０】
本発明に係る負荷分散装置１ａ及び負荷分散装置１ｂは、クライアント３ａと、サーバ群２との間に配置される。
サーバ群２は、所定の処理業務を分散処理するサーバ２ａとサーバ２ｂを有する。サーバ２ａは、アプリケーションＡ（以下、ＡＰＬ−Ａとする）２１ａ及びアプリケーションＢ（以下、ＡＰＬ−Ｂとする）２２ａについてのサーバ側処理を実行する。サーバ２ｂもサーバ２ａと同様に、ＡＰＬ−Ａ（２１ｂ）及びＡＰＬ−Ｂ（２２ｂ）についてのサーバ側処理を実行する。従って、リクエストメッセージがどちらのサーバに振り分けられても、同様の処理が行われる。図の例では、サーバの数は２台であるが、設置されるサーバは何台であってもよい。サーバ２ａ及びサーバ２ｂは、クライアント３ａとの間の一意性保証のため、負荷分散装置１ａまたは負荷分散装置１ｂから受信したリクエストメッセージの予め決められた所定の領域に挿入された特定情報を応答メッセージの予め決められた所定の領域にそのまま設定し、負荷分散装置１ａまたは負荷分散装置１ｂに送信する。
【００２１】
クライアント３ａは、ＡＰＬ−Ａ（３１）及びＡＰＬ−Ｂ（３２）についてのクライアント側処理を実行する。クライアント３ａは、サーバ２ａ及びサーバ２ｂとの間の一意性保証のため、負荷分散装置１ａまたは負荷分散装置１ｂから受信した応答メッセージの所定の領域に挿入された特定情報を装置内の記憶手段に記憶しておき、一意性を保証する必要がある場合は、サーバ２ａまたはサーバ２ｂに対するリクエストメッセージの所定の領域に特定情報を挿入し、このリクエストメッセージを負荷分散装置１ａまたは負荷分散装置１ｂに送信する。図の例では、クライアントの数は１台であるが、実際には複数台のクライアントが接続する。
【００２２】
特定情報４ａ、４ｂ、４ｃ、４ｄ、４ｅ、４ｆは、負荷分散装置１ａまたは負荷分散装置１ｂがリクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定することが可能な情報で、たとえば、振り分け先サーバの実アドレスに変換可能な情報などが設定されている。これにより、特定情報のみから振り分け先サーバを特定することが可能で、負荷分散装置１ａ、１ｂ内に振り分け先を管理する管理テーブルを設ける必要がなくなる。なお、特定情報４ａ、４ｂ、４ｃ、４ｄ、４ｅ、４ｆの内容は、挿入されるメッセージや転送経路は異なるが、その内容は同一である。特定情報４ａは、負荷分散装置１ａからクライアント３ａに送信される応答メッセージに挿入される。特定情報４ｂは、クライアント３ａが送信し、負荷分散装置１ａが受信したリクエストメッセージに挿入される。特定情報４ｃは、負荷分散装置１ａからサーバ２ａに送信されるリクエストメッセージに挿入される。特定情報４ｄは、サーバ２ａから負荷分散装置１ａに送信される応答メッセージに挿入される。特定情報４ｅは、クライアント３ａが送信し、負荷分散装置１ｂが受信したリクエストメッセージに挿入される。特定情報４ｆは、ＡＰＬ−Ａ（３１）からＡＰＬ−Ｂ（３２）に引き渡される。
【００２３】
負荷分散装置１ａ及び負荷分散装置１ｂは、負荷分散装置１ａを例にとると、第１の特定情報検出手段（以下、特定情報検出手段１１とする）、特定情報挿入手段１２、第２の特定情報検出手段（以下、特定情報検出手段１３とする）及び振り分け先決定手段１４を具備する。なお、負荷分散装置１ｂも同様に構成される。
【００２４】
特定情報検出手段１１は、クライアント３ａから、サーバ２ａまたはサーバ２ｂに渡されたリクエストメッセージに対する応答メッセージを取得し、応答メッセージの送信元アドレス部を除く所定の領域に特定情報が挿入されているかどうかを検出する。負荷分散装置１ａでは、応答メッセージの送信元アドレス部によって、送信元サーバ（振り分け先サーバに指定されている場合は振り分け先サーバに相当する）を特定できるが、クライアント３ａ、サーバ２ａとメッセージが転送される際には書き換えられる情報であるので、別途領域を確保する必要がある。特定情報は、クライアイント３ａからのリクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定することが可能な情報であり、応答メッセージの予め決められた所定の領域に挿入されている。負荷分散装置１ａ、１ｂと、サーバ２ａ、２ｂ間で整合性がとれれば、特定情報を格納する所定の領域は、ヘッダ部及びデータ部を含む応答メッセージの任意の場所に設定することができる。検出結果及び応答メッセージは、特定情報挿入手段１２へ引き渡す。
【００２５】
特定情報挿入手段１２は、特定情報検出手段１１の検出結果に基づき、応答メッセージに特定情報が挿入されている場合は、この応答メッセージをそのままクライアント３ａに送信する。特定情報が含まれていない場合は、応答メッセージの送信元サーバを検出して振り分け先サーバに指定する。そして、振り分け先サーバに設定された送信元サーバに関する特定情報４ａを生成し、クライアント３ａへの応答メッセージの所定の領域に挿入し、この応答メッセージをクライアント３ａに送信する。送信元サーバの特定は、振り分け先決定手段１４が振り分け先を決定した際に生成した情報を参照して行うこともできるし、また、実アドレスに基づく特定情報を生成する場合は、受信した応答メッセージの送信元アドレスを参照して行うこともできる。
【００２６】
特定情報検出手段１３は、クライアント３ａのリクエストメッセージを取得し、リクエストメッセージに特定情報４ｂが挿入されているかどうかを検出し、検出結果とともにリクエストメッセージを振り分け先決定手段１４へ送る。
【００２７】
振り分け先決定手段１４は、特定情報検出手段１３の検出結果に基づき、リクエストメッセージに特定情報４ｂが含まれていない場合には、予め決められた規則に応じてリクエストメッセージの振り分け先を決定する。たとえば、ラウンドロビン方式などによって、最適な振り分け先サーバを決定する。そして、決定した振り分け先にリクエストメッセージを送信する。リクエストメッセージに特定情報４ｂが含まれている場合は、特定情報４ｂによって特定される振り分け先サーバを振り分け先に決定し、リクエストメッセージを送信する。振り分け先サーバは、受け取ったリクエストメッセージに挿入されていた特定情報４ｂから特定することができるので、自装置以外、たとえば、負荷分散装置２ａによって設定された特定情報であっても、サーバを特定することができる。
【００２８】
なお、上記の説明の負荷分散装置１ａの各処理手段は、コンピュータが負荷分散処理プログラムを実行することにより、その処理機能が実現される。
このような構成の負荷分散装置１ａの動作について説明する。
【００２９】
クライアント３ａでは、ＡＰＬ−Ａ（３１）が実行する所定の処理において、サーバ群２（実際の送信先アドレスは、サーバ２ａ及びサーバ２ｂを代表する仮想サーバアドレス）に対し、リクエストメッセージを送信する。最初に送信するリクエストメッセージには、特定情報は挿入されていない。
【００３０】
負荷分散装置１ａは、クライアント３ａが送信したリクエストメッセージを受け取ると、特定情報検出手段１３がリクエストメッセージに特定情報が挿入されているかどうかを検出する。この時点では、特定情報は検出されず、振り分け先決定手段１４は、ラウンドロビン方式などの予め決められた規則によって、リクエストメッセージの振り分け先を決定し、リクエストメッセージを送信する。ここでは、サーバ２ａが選択されたとし、リクエストメッセージがサーバ２ａに送信されたとする。送信されるリクエストメッセージには、特定情報は挿入されていない。
【００３１】
負荷分散装置１ａが振り分けたクライアント３ａからのリクエストメッセージを受け取ったサーバ２ａは、ＡＰＬ−Ａ（２１ａ）によってリクエストメッセージに対する応答メッセージを生成し、負荷分散装置１ａに送信する。送信される応答メッセージには、特定情報は挿入されていない。
【００３２】
負荷分散装置１ａでは、サーバ２ａから応答メッセージを受け取ると、特定情報検出手段１１は、受け取った応答メッセージに特定情報が挿入されているかどうかを検出する。この時点では特定情報は検出されないので、特定情報挿入手段１２は、応答メッセージの送信元であるサーバ２ａを検出して振り分け先サーバに指定する。そして、サーバ２ａを一意に特定する特定情報４ａを生成し、応答メッセージに挿入してクライアント３ａに送信する。
【００３３】
以上の処理手順により、振り分け先サーバに設定したサーバ２ａを特定可能にする特定情報４ａが挿入された応答メッセージが、クライアント３ａに送信される。クライアント３ａは、特定情報４ａが挿入された応答メッセージから、特定情報４ａを抽出し、図示しない記憶手段に格納しておく。
【００３４】
クライアント３ａのＡＰＬ−Ａ（３１）が、一意性保証を必要とする処理を行っていた場合、記憶手段に格納された特定情報を読み出し、次に出力するリクエストメッセージに挿入して送信する。これを特定情報４ｂとする。この特定情報４ｂには、振り分け先サーバに設定されたサーバ、すなわち、関連するセッションの相手先であるサーバ（サーバ２ａ）を特定する情報が設定されている。
【００３５】
負荷分散装置１ａでは、特定情報４ｂが挿入されたリクエストメッセージを受け取り、特定情報検出手段１３によって特定情報の有無が調べられる。今回は、特定情報４ｂが検出されるので、振り分け先決定手段１４は、特定情報４ｂに基づき、振り分け先サーバを特定し、振り分け先に決定する。ここでは、特定情報４ｂには、サーバ２ａを特定する情報が設定されているので、サーバ２ａに対してリクエストメッセージを送信する。これにより、前回処理を行ったサーバ２ａに対し、リクエストメッセージが送信される。このリクエストメッセージには、サーバ２ａを特定する特定情報４ｃが設定されている。
【００３６】
特定情報４ｃを受信したサーバ２ａは、ＡＰＬ−Ａ（２１ａ）が続きの処理を行い、今回のリクエストメッセージに対する応答メッセージを生成し、負荷分散装置１ａに送信する。このとき、受け取ったリクエストメッセージに挿入されている特定情報４ｃは、そのまま応答メッセージの特定情報４ｄとして負荷分散装置１ａに送り返される。
【００３７】
負荷分散装置１ａでは、特定情報４ｄが挿入された応答メッセージを受け取ると、特定情報検出手段１１によって特定情報のチェックを行う。今回は、特定情報４ｄが検出されるので、特定情報挿入手段１２は、特定情報４ｄが挿入された応答メッセージをそのままクライアント３ａに送信する。
【００３８】
以上のように、本発明では、所定のアプリケーションにおいて、クライアント３ａとサーバ２ａとの間でセッションが確立されると、負荷分散装置１ａは、サーバ２ａを振り分け先サーバに指定し、サーバ２ａを特定する特定情報４ａを応答メッセージに挿入してクライアント３ａに送信する。クライアント３ａは、一意性を保証する必要がある場合には、リクエストメッセージに特定情報４ｂを挿入して送信する。負荷分散装置１ａは、特定情報４ｂに基づき、クライアント３ａのリクエストメッセージを必ずサーバ２ａに振り分ける。このようにして、一意性が保証される。
【００３９】
ところで、図１は、負荷分散装置１ａと同等の負荷分散装置１ｂが設けられているシステムであり、クライアント３ａからのリクエストメッセージを負荷分散装置１ｂが受信する場合もある。上述のように、クライアント３ａは、一意性保証が必要な場合は、リクエストメッセージに特定情報を挿入して送信する。これを特定情報４ｅとする。負荷分散装置１ｂは、特定情報４ｅが挿入されたリクエストメッセージを受け取ると、負荷分散装置１ａと同様に、検出された特定情報４ｅに基づき、リクエストメッセージをサーバ２ａに振り分ける。このように、負荷分散装置１ａ及び負荷分散装置１ｂでは、振り分け先を管理する管理テーブルを必要とせず、特定情報４ｅのみに基づき振り分け先サーバを決定することができる。従って、負荷分散装置１ｂにおいて、負荷分散装置１ａが設定した特定情報に基づき、サーバ２ａにリクエストメッセージを振り分けることができる。
【００４０】
負荷分散装置がさらに設置されている場合であっても、複数台の負荷分散装置のうちの１台が振り分け先サーバを設定し、振り分け先サーバを特定する特定情報を応答メッセージに挿入してクライアントに通知すれば、クライアントから受け取るリクエストメッセージに挿入される特定情報に基づき、同一のサーバにリクエストメッセージを送信することができる。
【００４１】
また、クライアント３ａでは、ＡＰＬ−Ａ（３１）以外のアプリケーションＡＰＬ−Ｂ（３２）においても、ＡＰＬ−Ａ（３１）の処理で確立された一意性保証を引き続き利用したい場合がある。このような場合、ＡＰＬ−Ａ（３１）からＡＰＬ―Ｂ（３２）に特定情報を引き渡しておく。これを特定情報４ｆとする。クライアント３ａのＡＰＬ−Ｂ（３２）は、一意性保証が必要な場合には、リクエストメッセージに特定情報４ｆを挿入して送信すれば、負荷分散装置１ａ及び負荷分散装置１ｂは、このリクエストメッセージをサーバ２ａに振り分ける。すなわち、負荷分散装置１ａ及び負荷分散装置１ｂは、特定情報４ｆのみを参照し、特定情報４ｆによって特定される振り分け先サーバを振り分け先とする処理を行なっているので、業務（ＡＰＬの種類）が異なっても、特定情報４ｆが同じであれば、同じサーバにリクエストメッセージを振り分ける。
【００４２】
このように、負荷分散装置が複数台存在する場合であっても、また、業務が複数にまたがる場合であっても、クライアントとサーバ間の一意性保証が可能となる。
以下、実施の形態を、Ｗｅｂベースのアプリケーション処理を行うクライアント・サーバシステムに適用した場合を例に図面を参照して詳細に説明する。
【００４３】
図２は、本発明の実施の形態の負荷分散システムのシステム構成を示す図である。
本発明の実施の形態の負荷分散システムは、サーバ群２０とクライアント群３０が、負荷分散装置群１００を介して接続する。
【００４４】
クライアント群３０を構成するクライアント３０ａ、クライアント３０ｂ、・・・は、ｈｔｔｐ（Hypertext Transfer Protocol）及びｈｔｔｐｓ（Hypertext Transfer Protocol Security）を用いて、サーバ群２０のＷｅｂサーバから、ＨＴＭＬ文書や、文書に関連付けられている画像、音声、動画などのファイルを取得する。サーバ群２０を構成するサーバ１（２０ａ）、サーバ２（２０ｂ）、・・・は、不定期に発生するクライアントからのリクエストを処理するＷｅｂサーバである。
【００４５】
負荷分散装置群１００を構成する負荷分散装置１００ａ、負荷分散装置１００ｂ、・・・は、クライアントからのリクエストメッセージを最適なサーバに振り分け、サーバの負荷分散を図る。負荷分散装置１００ａ、負荷分散装置１００ｂ、・・・は、予め登録されたポリシー１３０に基づき、振り分け処理を実行する。ポリシー１３０には、サーバ群２０の仮想ＩＰアドレス（Ｖ−ｉｐ）、仮想ポート（Ｖ−ｐｏｒｔ）などのほか、サーバ群２０を構成するサーバのＩＰアドレスが登録される。たとえば、図の例では、サーバ１（２０ａ）のＩＰアドレスとしてＷ１（＝１０．１２４．３８．１）、及びサーバ２（２０ｂ）のＩＰアドレスとしてＷ２（＝１０．１２４．３８．２）が登録されている。また、負荷分散の方式なども登録される。
【００４６】
ここで、負荷分散装置１００ａのハードウェア構成について説明する。図３は、本実施の形態の負荷分散装置のハードウェア構成例を示すブロック図である。
負荷分散装置１００ａは、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、通信インタフェース１０６が接続されている。
【００４７】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションのプログラムが格納される。グラフィック処理装置１０４には、モニタ１０８が接続されており、ＣＰＵ１０１からの命令に従って画像をモニタ１０８の画面に表示させる。入力インタフェース１０５には、キーボード１０９ａやマウス１０９ｂが接続されており、キーボード１０９ａやマウス１０９ｂから送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。通信インタフェース１０６は、ネットワーク５００に接続されており、ネットワーク５００を介してクライアントやサーバとの間でデータの送受信を行う。
【００４８】
このようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３では、モニタ１０８、キーボード１０９ａ、マウス１０９ｂが直接負荷分散装置１００ａに接続するとしたが、モニタ、キーボード、マウスなどを備える他の端末装置とネットワーク５００を介して接続するとしてもよい。この場合、たとえば、他の端末装置のマウスまたはキーボードからの入力指示をネットワーク５００経由で取得して処理を行い、ネットワーク５００経由で出力する処理結果が他の端末装置のモニタに表示される。また、図３には、負荷分散装置のハードウェア構成を示したが、サーバ及びクライアントのハードウェア構成も同様である。
【００４９】
ところで、Ｗｅｂベースのアプリケーション処理のためのｈｔｔｐでは、一意性を保証するため、クッキーが利用される。クッキーの仕様は、たとえば、ＲＦＣ（Request For Comments）２９６５などに定義されている。
【００５０】
クッキーは、ｈｔｔｐのヘッダとして現われ、クライアントでは、常にサーバから返答されたクッキーを保存し、一意性保証が必要な場合、すなわち、同じサーバやＵＲＬにアクセスする際に、必ず同じものを送り返すことになっている。また、サーバでクッキー設定する以外にも、負荷分散装置などによって、サーバからクライアントに送信される応答メッセージに新たなクッキー情報を挿入するインサート・モードの仕様も定義されている。
【００５１】
本実施の形態では、クッキーを利用し、振り分け先サーバを特定する特定情報をクッキー情報に埋め込み、クライアント、サーバ及び負荷分散装置間を伝達させる。また、特定情報として、振り分け先サーバのＩＰアドレスに変換可能な情報を生成する。
【００５２】
一意性保証が必要な場合のクッキー処理は既にクライアント及びサーバに装備されているので、クッキーを利用することにより、負荷分散装置の負荷分散処理プログラムを更新すれば、既存のシステムに本実施の形態を適用することができるという利点がある。
【００５３】
本実施の形態のシステムのソフトウェア構成について説明する。
図４は、本実施の形態を構成する各装置のソフトウェア構成を示した図である。図２と同じものには同じ番号を付し、説明は省略する。また、図は、クライアント群、サーバ群、及び負荷分散装置群を代表し、クライアント３０ａ、サーバ１（２０ａ）、及び負荷分散装置１００ａのソフトウェア構成を示している。
【００５４】
クライアント３０ａは、ｈｔｔｐ処理を行うＡＰＬ−Ａ（３１）と、ｈｔｔｐｓ処理を行うＡＰＬ−Ｂ（３２）を備え、応答メッセージに挿入されて送られてきたクッキーを保存し、一意性保証が必要な場合には、必ず同じものをリクエストメッセージに挿入して送り返すクッキー機能を有する。また、サーバ１（２０ａ）は、これに対応し、ＡＰＬ−Ａ（２１ａ）とＡＰＬ−Ｂ（２２ａ）を備え、アプリケーションレベルでクライアントを識別する必要がある場合は、クッキー情報を利用したセッション維持を図るとともに、負荷分散装置が挿入したクッキー情報はそのまま転送するクッキー機能を有する。
【００５５】
負荷分散装置１（１００ａ）は、クッキー検出部１１１、送信元サーバ検出部１１２、クッキー挿入部１１３、クッキー検出部１１４、及び振り分け先決定部１１５を具備する。
【００５６】
クッキー検出部１１１は、サーバから受信された応答メッセージのヘッダ部に、振り分け先サーバを特定する特定情報が含まれるクッキーが挿入されているかどうかを検出する。送信元サーバ検出部１１２は、クッキー検出部１１１により、クッキーが検出されなかった場合は、応答メッセージの送信元サーバのＩＰアドレスを検出する。ＩＰアドレスは、振り分け先サーバ決定部１１５が振り分け先決定時に生成する情報や、受け取った応答メッセージの送信元アドレスなどを参照して行う。ＩＰアドレスにより、送信元サーバを一意に特定することができる。クッキー挿入部１１３は、送信元サーバ検出部１１２が検出した送信元サーバを振り分け先サーバに設定し、送信元サーバのＩＰアドレスに基づいてＩＰアドレスに変換可能な特定情報を生成する。特定情報には、ＩＰアドレスを直接設定するほか、暗号化するなど変換を施した後に設定してもよい。また、負荷分散装置１００ａは、図２に示したポリシー１３０を共通に持っているので、管理下のサーバのＩＰアドレス情報を指示する情報を設定してもよい。生成された特定情報は、クッキーに埋め込み、クッキーを応答メッセージに挿入する。応答メッセージへのクッキー挿入は、クッキー仕様に従って行う。こうしてクッキー情報が挿入された応答メッセージは、リクエストメッセージの送信元のクライアントに返す。
【００５７】
一方、クッキー検出部１１４は、クライアントから受信したリクエストメッセージのヘッダ部にクッキーが含まれているかどうかを検出する。振り分け先決定部１１５は、クッキー検出部１１４によってクッキーが検出された場合は、クッキーに含まれる特定情報によって特定されるサーバにリクエストメッセージを振り分ける。また、クッキー検出部１１４によってクッキーが検出されなかった場合は、ポリシー１３０に設定された振り分け規則に基づき、最適なサーバに振り分けする。
【００５８】
以上の構成の負荷分散システムの動作について説明する。なお、図４では、実線で示された矢印は、ＡＰＬ−Ａに関するクッキー（図では、ｃｏｏｋｉｅと表記）の流れを示しており、点線で示された矢印は、ＡＰＬ−Ｂに関するクッキーの流れを示している。
【００５９】
クライアント３０ａのＡＰＬ−Ａ（３１）から最初に送信されたリクエストメッセージには、クッキーは設定されておらず、負荷分散装置１００ａは、ポリシー１３０に基づいて、このリクエストメッセージをサーバ１（２０ａ）に振り分ける。
【００６０】
負荷分散装置１００ａでは、サーバ１（２０ａ）の応答メッセージを受信すると、クッキー検出部１１１がクッキーを探すが、検出されない。そこで、送信元サーバ検出部１１２は、応答メッセージの送信元サーバであるサーバ１（２０ａ）の実ＩＰアドレスを検出する。クッキー挿入部１１３は、検出された送信元サーバを振り分け先サーバに設定し、その特定情報を生成する。ここでは、ＩＰアドレス、または、このＩＰアドレスに変換可能な情報、たとえば、サーバ１（２０ａ）の実ＩＰアドレス「１０．１２４．３８．１」をクッキー情報に設定する。Ｓｅｔ−Ｃｏｏｋｉｅコマンドの書式は、たとえば、以下のようになる。
Ｓｅｔ−Ｃｏｏｋｉｅ：Ｖｅｒｓｉｏｎ＝バージョン番号；Ｎａｍｅ＝ＶＡＬＵＥ；ｐａｔｈ＝ＰＡＴＨ；・・・・
本実施の形態では、“Ｎａｍｅ＝ＶＡＬＵＥ”に、“ＦＪＸＸＸＩＤＸ＝１０．１２４．３８．１”を設定したＳｅｔ−Ｃｏｏｋｉｅコマンドを発行し、応答メッセージのヘッダ部にクッキーを挿入する。こうして、生成された応答メッセージをクライアント３０ａに送信する（Ｓ１）。
【００６１】
これにより、Ｓｅｔ−Ｃｏｏｋｉｅコマンドがヘッダ部に挿入された応答メッセージがクライアント３０ａに送信される。
この応答メッセージを受信したクライアント３０ａは、受信したクッキー情報を保存しておき、一意性保証が必要な場合は、次のようなヘッダをリクエストメッセージに付加する。
Ｃｏｏｋｉｅ：Ｖｅｒｓｉｏｎ＝バージョン番号；Ｎａｍｅ＝ＶＡＬＵＥ；ｐａｔｈ＝ＰＡＴＨ；・・・・
ここで、“Ｎａｍｅ＝ＶＡＬＵＥ”には、“ＦＪＸＸＸＩＤＸ＝１０．１２４．３８．１”が設定されている。こうして生成されたリクエストメッセージをサーバに向けて送信する。
【００６２】
負荷分散装置１００ａでは、このリクエストメッセージを受信すると、クッキー検出部１１４によってクッキーが検出される。振り分け先決定部１１５は、クッキーに設定されるＩＰアドレスを含む特定情報（“ＦＪＸＸＸＩＤＸ＝１０．１２４．３８．１”）に基づいて、振り分け先サーバをサーバ１（２０ａ）と特定する。そして、サーバ１（２０ａ）に対し、リクエストメッセージをそのまま送信する（Ｓ３）。
【００６３】
以下の説明では、ヘッダ部のうち、クッキー情報が占める領域をクッキーヘッダと呼ぶ。
サーバ１（２０ａ）は、リクエストメッセージを受信し、クッキーが挿入されるヘッダ部はそのままの状態で応答メッセージを生成し、送信する（Ｓ４）。負荷分散装置１００ａでは、クッキー検出部１１１によってクッキーが検出されるので、送信元サーバ検出部１１２及びクッキー挿入部１１３は処理を行わず、そのまま送信する。これにより、Ｓ１で送信されたクッキーヘッダと同じものがヘッダに設定される応答メッセージが、クライアント３０ａに送信される。
【００６４】
以上の処理が繰り返されることにより、クライアント３０ａのＡＰＬ−Ａ（３１）とサーバ１（２０ａ）のＡＰＬ−Ａ（２１ａ）との間の一意性が保証される。なお、負荷分散装置１００ｂがリクエストメッセージを受信した場合であっても、クッキーヘッダには、サーバ１（２０ａ）のＩＰアドレスの特定情報が設定されているので、これに基づき、サーバ１（２０ａ）にリクエストメッセージを送信することができる。
【００６５】
また、クライアント３０ａのＡＰＬ−Ｂ（３２）にまたがって一意性保証を行う場合は、ＡＰＬ−Ａ（３１）で用いたクッキーをＡＰＬ−Ｂ（３２）に引き渡し（Ｓ５）、ＡＰＬ−Ｂ（３２）においても、同じクッキーヘッダをリクエストメッセージに挿入して送信する（Ｓ６）。
【００６６】
負荷分散装置１００ａでは、クッキーに設定される特定情報のみに基づいて、リクエストメッセージの振り分け先を決定するので、ＡＰＬ−Ａ（３１）の場合と同様の処理が行われ、リクエストメッセージは、サーバ１（２０ａ）のＡＰＬ−Ｂ（２２ａ）に引き渡される（Ｓ７）。このクッキーは、再び負荷分散装置１００ａに送られ（Ｓ８）、負荷分散装置１００ａからクライアント３０ａに送信される（Ｓ９）。
【００６７】
上記の処理が繰り返されることにより、クライアント３０ａのＡＰＬ−Ａ（３１）とサーバ１（２０ａ）のＡＰＬ−Ａ（２１ａ）との間の一意性保証に引き続き、クライアント３０ａのＡＰＬ−Ｂ（３２）とサーバ１（２０ａ）のＡＰＬ−Ｂ（２２ａ）との間の一意性が保証される。このリクエストメッセージを負荷分散装置１００ｂが受信しても、一意性が保証されることは、ＡＰＬ−Ａの場合と同様である。
【００６８】
以下、負荷分散装置における一意性保証の処理手順を説明する。
図５は、本発明の実施の形態の負荷分散装置における一意性保証が確立されるまでの処理手順を示した図である。図４と同じものには、同じ番号を付し説明は省略する。なお、以下の説明のクッキー（ＣＫ）は、負荷分散装置１００ａ、１００ｂが設定する振り分け先サーバを特定する特定情報を含むクッキー情報を指すとし、サーバが、アプリケーションレベルの一意性を保持するために設定するクッキーは含まないとする。
【００６９】
クライアント３０ａのＡＰＬ−Ａ（３１）からリクエストメッセージ（ＲＥＱ）が送信される。負荷分散装置１００ａは、これを受信し、クッキー（ＣＫ）が挿入されているかどうかを判定する。クッキー（ＣＫ）は、挿入されていないので、最適なサーバを振り分け先に決定し、リクエストメッセージ（ＲＥＱ）を振り分け先に送信するサーバ振り分け処理を行う（Ｓ１１）。図の例では、サーバ１（２０ａ）が振り分け先サーバに決定されるとする。
【００７０】
サーバ１（２０ａ）は、リクエストメッセージ（ＲＥＱ）を受信し、ＡＰＬ−Ａ（２１ａ）による処理を行って、応答メッセージ（ＲＥＳ）を送信する。なお、アプリケーションレベルで、さらに、クライアント３０ａを特定するクッキー情報が必要な場合は、ＡＰＬ−Ａ（２１ａ）が利用するクッキー情報を設定しておくこともできる。
【００７１】
負荷分散装置１００ａは、応答メッセージ（ＲＥＳ）を受け取ると、クッキー（ＣＫ）が挿入されているかどうかを判定する。ここでは、クッキー（ＣＫ）は、検出されないので、クッキー挿入処理（Ｓ１２）を行う。応答メッセージ（ＲＥＳ）の送信元サーバがサーバ１（２０ａ）であることを特定し、振り分け先サーバに設定する。そして、その実ＩＰアドレスに変換可能な情報をクッキー（ＣＫ）に設定し、Ｓｅｔ−Ｃｏｏｋｉｅコマンドを発行して応答メッセージに挿入し、クッキー付応答メッセージ（ＲＥＳ＋ＣＫ）を生成する。そして、このクッキー付応答メッセージ（ＲＥＳ＋ＣＫ）をクライアント３０ａに返す。
【００７２】
クッキー付応答メッセージ（ＲＥＳ＋ＣＫ）を受信したクライアント３０ａは、クッキー（ＣＫ）を保存する。そして以降のアクセスにおいて一意性保証が必要な場合は、保存したクッキー（ＣＫ）を読み出してリクエストメッセージに挿入し、クッキー付リクエストメッセージ（ＲＥＱ＋ＣＫ）をサーバに向けて送信する。
【００７３】
負荷分散装置１００ａは、クッキー付リクエストメッセージ（ＲＥＱ＋ＣＫ）を受信すると、クッキー（ＣＫ）が検出されるので、クッキー（ＣＫ）を参照して振り分け先を決定するクッキー参照サーバ振り分け処理を行う（Ｓ１３）。挿入されたクッキー（ＣＫ）に埋め込まれた特定情報によって、振り分けサーバがサーバ１（２０ａ）であることを特定し、クッキー付リクエストメッセージ（ＲＥＱ＋ＣＫ）をサーバ１（２０ａ）に送信する。
【００７４】
サーバ１（２０ａ）は、クッキー付リクエストメッセージ（ＲＥＱ＋ＣＫ）を受信し、ＡＰＬ−Ａ（２１ａ）による処理を行って、クッキー付応答メッセージ（ＲＥＳ＋ＣＫ）を送信する。なお、アプリケーションレベルで設定されたクッキー情報がある場合は、これを参照して処理を行う。
【００７５】
負荷分散装置１００ａは、サーバ１（２０ａ）から送られた応答メッセージを受け付け、クッキー（ＣＫ）が挿入されているかどうかを判定する。クッキー（ＣＫ）が検出されるので、クッキー付応答メッセージ（ＲＥＳ＋ＣＫ）をそのままクライアント３０ａに送信する（Ｓ１４）。
【００７６】
以下、ステップＳ１３とステップＳ１４の処理が繰り返され、クライアント３０ａのＡＰＬ−Ａ（３１）と、サーバ１（３０ａ）のＡＰＬ−Ａ（２１ａ）との間の一意性が保証される。
【００７７】
次に、複数業務に渡る一意性保証について説明する。
図６は、本発明の実施の形態の負荷分散装置における複数業務に渡る一意性保証の処理手順を示した図である。図５と同じものには同じ番号を付し、説明は省略する。
【００７８】
ステップＳ１３とステップＳ１４の処理が繰り返され、クライアント３０ａのＡＰＬ−Ａ（３１）と、サーバ１（２０ａ）のＡＰＬ−Ａ（２１ａ）との間の一意性が保証されている状態から、クライアント３０ａでは、ＡＰＬ−Ａ（３１）からＡＰＬ−Ｂ（３２）にクッキー（ＣＫ）が引き渡され、ＡＰＬ−Ｂ（３２）の処理が開始される。
【００７９】
クライアント３０ａのＡＰＬ−Ｂ（３２）では、クッキー（ＣＫ）をリクエストメッセージに挿入し、ＡＰＬ−Ｂに関するクッキー付リクエストメッセージ（ＲＥＱ（Ｂ）＋ＣＫ）を送信する。リクエストメッセージは、ＡＰＬ−Ａ（３１）のＲＥＱ（Ａ）からＲＥＱ（Ｂ）に変わっているが、クッキー（ＣＫ）は変わらない。
【００８０】
負荷分散装置１００ａでは、クッキー付リクエストメッセージ（ＲＥＱ（Ｂ）＋ＣＫ）を受信すると、クッキー（ＣＫ）を参照し、クッキー（ＣＫ）の特定情報によってサーバ１（２０ａ）を特定し、サーバ１（２０ａ）を振り分け先としてクッキー付リクエストメッセージ（ＲＥＱ（Ｂ）＋ＣＫ）を送信するクッキー参照サーバ振り分け処理（Ｓ１５）を行う。
【００８１】
サーバ１（２０ａ）は、クッキー付リクエストメッセージ（ＲＥＱ（Ｂ）＋ＣＫ）を受信し、ＲＥＱ（Ｂ）に対応するＡＰＬ−Ｂ（２２ａ）による処理を行って、クッキー付応答メッセージ（ＲＥＳ（Ｂ）＋ＣＫ）を送信する。負荷分散装置１００ａは、これを受信し、クッキー（ＣＫ）が挿入されているかどうかを判定する。クッキー（ＣＫ）が検出されるので、クッキー付応答メッセージ（ＲＥＳ（Ｂ）＋ＣＫ）をそのままクライアント３０ａに送信する（Ｓ１６）。
【００８２】
このように、負荷分散装置は、クッキー（ＣＫ）を参照して振り分け先サーバを決定するので、クッキー（ＣＫ）が同じであれば、複数業務に渡って同一のサーバにリクエストメッセージを振り分けるため、一意性保証が可能となる。
【００８３】
なお、実際のアプリケーション処理では、ＡＰＬ−Ａ（２１ａ）からＡＰＬ−Ｂ（２２ａ）にクライアント３０ａに関する何らかの情報が引き継がれてアプリケーションレベルでの一意性保証が行われる。たとえば、サーバ１（２０ａ）でクッキーを発行し、このクッキーをＡＰＬ−Ａ（２１ａ）からＡＰＬ−Ｂ（２２ａ）に引き継ぐなどの手法がある。しかしながら、このようなクッキーを用意しても、本実施の形態の処理によって、負荷分散装置１００ａがサーバ１（２０ａ）にリクエストメッセージを振り分けることが保証されなければ、アプリケーションレベルでの複数業務に渡る一意性保証が実現できない。
【００８４】
次に、負荷分散装置が複数台存在する場合の一意性保証について説明する。
図７は、本発明の実施の形態の負荷分散装置が複数台存在する場合の一意性保証の処理手順を示した図である。図５と同じものには同じ番号を付し、説明は省略する。
【００８５】
負荷分散装置１００ａでは、ステップＳ１１とステップＳ１２により、クライアント３０ａからのリクエストメッセージ（ＲＥＱ）をサーバ１（２０ａ）に振り分け、サーバ１（２０ａ）のＩＰアドレスに変換可能なクッキー（ＣＫ）を挿入したクッキー付応答メッセージ（ＲＥＳ＋ＣＫ）をクライアント３０ａに送信する。
【００８６】
クッキー付応答メッセージ（ＲＥＳ＋ＣＫ）を受信したクライアント３０ａは、クッキー（ＣＫ）を保存し、一意性保証が必要な場合は、クッキー付リクエストメッセージ（ＲＥＱ＋ＣＫ）を送信する。
【００８７】
負荷分散装置２（１００ｂ）は、クッキー付リクエストメッセージ（ＲＥＱ＋ＣＫ）を受信すると、クッキー（ＣＫ）を参照し、指定されたサーバ１（２０ａ）を振り分け先サーバに決定し、クッキー付リクエストメッセージ（ＲＥＱ＋ＣＫ）を送信するクッキー参照サーバ振り分け処理（Ｓ２１）を行う。そして、サーバ１（２０ａ）が送信したクッキー付応答メッセージ（ＲＥＳ＋ＣＫ）を受信すると、クッキー（ＣＫ）が検出されるので、クッキー付応答メッセージ（ＲＥＳ＋ＣＫ）をそのままクライアント３０ａに送信する（Ｓ２２）。
【００８８】
このように、負荷分散装置１００ａは、クッキー（ＣＫ）を参照して振り分け先サーバを特定し、リクエストメッセージの振り分け先を決定するので、クッキー（ＣＫ）が設定されていれば、他装置が設定したクッキー（ＣＫ）を用いても、関連するリクエストメッセージを同一サーバに送信することができる。
【００８９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、負荷分散装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００９０】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９１】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００９２】
（付記１）  リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラムにおいて、
コンピュータを、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第１の特定情報検出手段、
前記第１の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第２の特定情報検出手段、
前記第２の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段、
として機能させることを特徴とする負荷分散処理プログラム。
【００９３】
（付記２）  前記特定情報挿入手段として、前記振り分け先サーバに指定する前記送信元サーバの実アドレスを検出し、前記送信元サーバの実アドレスに変換可能な情報を前記特定情報として生成する、
処理を実行させることを特徴とする付記１記載の負荷分散処理プログラム。
【００９４】
（付記３）  前記振り分け先決定手段として、前記特定情報に基づいて前記振り分け先サーバの実アドレスを取得し、前記振り分け先サーバの実アドレスを用いて前記リクエストメッセージを送信する、
処理を実行させることを特徴とする付記２記載の負荷分散処理プログラム。
【００９５】
（付記４）  前記特定情報挿入手段として、生成した前記特定情報をクッキー情報として前記応答メッセージのヘッダ部に埋め込む、
処理を行わせることを特徴とする付記１記載の負荷分散処理プログラム。
【００９６】
（付記５）  リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散装置において、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第１の特定情報検出手段と、
前記第１の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段と、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第２の特定情報検出手段と、
前記第２の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段と、
を具備することを特徴とする負荷分散装置。
【００９７】
（付記６）  リクエストメッセージを振り分けて負荷分散を図るとともに、関連のある前記リクエストメッセージを同一サーバに振り分けて一意性保証を行う負荷分散処理プログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータを、
クライアントからサーバに渡された前記リクエストメッセージに対する応答メッセージを前記サーバから受け取ると、前記リクエストメッセージの振り分け先に指定される振り分け先サーバを一意に特定する特定情報が、前記応答メッセージの送信元アドレス部を除く所定の領域に挿入されているかどうかを検出する第１の特定情報検出手段、
前記第１の特定情報検出手段によって前記特定情報が検出されなかった場合は、前記応答メッセージの送信元サーバを検出して前記振り分け先サーバに指定し、指定された前記振り分け先サーバに関する特定情報を生成して前記応答メッセージに挿入し、前記応答メッセージを前記クライアントに送信する特定情報挿入手段、
受信した前記応答メッセージに挿入された前記特定情報を記憶しておき、一意性を保証する必要がある場合は前記リクエストメッセージに前記特定情報を挿入して送信する前記クライアントから前記リクエストメッセージを受信すると、受信した前記リクエストメッセージに前記特定情報が挿入されているかどうかを検出する第２の特定情報検出手段、
前記第２の特定情報検出手段によって前記特定情報が検出されなかった場合は、予め決められた規則に応じて前記リクエストメッセージの振り分け先を決定し、前記特定情報が検出された場合は、前記特定情報によって特定される前記振り分け先サーバを振り分け先に決定し、決定された振り分け先に前記リクエストメッセージを送信する振り分け先決定手段、
として機能させることを特徴とする負荷分散処理プログラムを記録した記録媒体。
【図面の簡単な説明】
【００９８】
【図１】実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態の負荷分散システムのシステム構成を示す図である。
【図３】本実施の形態の負荷分散装置のハードウェア構成例を示すブロック図である。
【図４】本実施の形態を構成する各装置のソフトウェア構成を示した図である。
【図５】本発明の実施の形態の負荷分散装置における一意性保証が確立されるまでの処理手順を示した図である。
【図６】本発明の実施の形態の負荷分散装置における複数業務に渡る一意性保証の処理手順を示した図である。
【図７】本発明の実施の形態の負荷分散装置が複数台存在する場合の一意性保証の処理手順を示した図である。
【図８】従来の負荷分散装置を備えたクライアント・サーバシステムの構成の一例を示した図である。
【図９】従来の負荷分散装置におけるクッキー設定処理を示した図である。
【符号の説明】
【００９９】
１ａ、１ｂ  負荷分散装置
２  サーバ群
２ａ、２ｂ  サーバ
３ａ  クライアント
４ａ、４ｂ、４ｃ、４ｄ、４ｅ  特定情報
１１  （第１の）特定情報検出手段
１２  特定情報挿入手段
１３  （第２の）特定情報検出手段
１４  振り分け先決定手段
２１ａ、２１ｂ  ＡＰＬ−Ａ（サーバ側）
２２ａ、２２ｂ  ＡＰＬ−Ｂ（サーバ側）
３１  ＡＰＬ−Ａ（クライアント側）
３２  ＡＰＬ−Ｂ（クライアント側）
【図１】
2007219608.tif 000003
【図２】
2007219608.tif 000004
【図３】
2007219608.tif 000005
【図４】
2007219608.tif 000006
【図５】
2007219608.tif 000007
【図６】
2007219608.tif 000008
【図７】
2007219608.tif 000009
【図８】
2007219608.tif 000010
【図９】
2007219608.tif 000011
【手続補正書】
【提出日】平成18年5月25日(2006.5.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
図９は、従来の負荷分散装置におけるクッキー設定処理を示した図である。
ここでは、業務Ａ１と業務Ａ２は関連しており、処理は同一サーバで実行される必要があるとする。クライアントＡ（９４１）が、業務Ａ１を開始し、サーバに対して「業務Ａ１に関するリクエスト」を送信すると、負荷分散装置１（９１０）は、リクエストを受け付け、振り分け先サーバを選択する。たとえば、サーバ１（９３１）へ振り分けた場合、クライアントＡ（９４１）への応答にクッキーｃ１を添付し、自装置内の管理テーブル９１１に、業務「Ａ１」、設定したクッキー「ｃ１」、及び振り分け先サーバ「サーバ１」を設定しておく。以降、業務Ａ１に関するクライアントＡ（９４１）からのリクエストにはクッキーｃ１が添付されるので、負荷分散装置１（９１０）は、管理テーブル９１１を参照し、リクエストを常にサーバ１（９３１）へ振り分けることができる。ところが、業務２が開始され、クライアントＡ（９４１）が「業務Ａ２に関するリクエスト」にクッキーｃ１を添付しても、負荷分散装置１（９１０）では、管理テーブル９１１に該当する設定はないので、新たに振り分けを行い、クッキーを設定し、管理テーブル９１１に登録する。この場合、サーバ１（９３１）以外のサーバ、たとえば、サーバ２（９３２）に振り分けられる可能性があり、一意性は保証されない。この場合の対策も、（２）のサーバが設定するクッキーを利用する場合と同様であり、実現は容易ではない。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
また、負荷分散装置が複数台設定される場合にも、一意性が保証されないという問題がある。たとえば、上述のように、クライアントＡ（９４１）が、業務Ａ１のリクエストにクッキーｃ１を添付して送信した場合、これを管理テーブル９１１に業務「Ａ１」とクッキー「ｃ１」が設定された負荷分散装置１（９１０）が受け取る場合には問題ないが、もう１台の負荷分散装置２（９２０）が受け取った場合には、管理テーブル９２１に該当する設定がないので、適当に振り分けを行い、クッキーを設定する。このため、サーバ２（９３２）に振り分け、クッキーｃ３を設定し、クライアントＡ（９４１）にクッキーｃ３を添付した応答を返すことが考えられ、一意性は保証されない。この場合、負荷分散装置を１台とするか、負荷分散装置間で管理テーブルを共有すれば一意性が保証されるが、現実的ではない。なお、（２）サーバが設定するクッキーを利用する場合、及び特許文献１記載のクッキー利用手法でも、同様の問題が生じる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
振り分け先決定手段１４は、特定情報検出手段１３の検出結果に基づき、リクエストメッセージに特定情報４ｂが含まれていない場合には、予め決められた規則に応じてリクエストメッセージの振り分け先を決定する。たとえば、ラウンドロビン方式などによって、最適な振り分け先サーバを決定する。そして、決定した振り分け先にリクエストメッセージを送信する。リクエストメッセージに特定情報４ｂが含まれている場合は、特定情報４ｂによって特定される振り分け先サーバを振り分け先に決定し、リクエストメッセージを送信する。振り分け先サーバは、受け取ったリクエストメッセージに挿入されていた特定情報４ｂから特定することができるので、自装置以外、たとえば、負荷分散装置１ｂによって設定された特定情報であっても、サーバを特定することができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
これにより、Ｓｅｔ−Ｃｏｏｋｉｅコマンドがヘッダ部に挿入された応答メッセージがクライアント３０ａに送信される。
この応答メッセージを受信したクライアント３０ａは、受信したクッキー情報を保存しておき、一意性保証が必要な場合は、次のようなヘッダをリクエストメッセージに付加する。
Ｃｏｏｋｉｅ：Ｖｅｒｓｉｏｎ＝バージョン番号；Ｎａｍｅ＝ＶＡＬＵＥ；ｐａｔｈ＝ＰＡＴＨ；・・・・
ここで、“Ｎａｍｅ＝ＶＡＬＵＥ”には、“ＦＪＸＸＸＩＤＸ＝１０．１２４．３８．１”が設定されている。こうして生成されたリクエストメッセージをサーバに向けて送信する（Ｓ２）。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
このように、負荷分散装置１００ｂは、クッキー（ＣＫ）を参照して振り分け先サーバを特定し、リクエストメッセージの振り分け先を決定するので、クッキー（ＣＫ）が設定されていれば、他装置が設定したクッキー（ＣＫ）を用いても、関連するリクエストメッセージを同一サーバに送信することができる。