(57)【要約】【課題】負荷分散装置に関し，クライアントからの通信要求により，分散先サーバの一意性保証情報の初期化を効率的に行い，サーバの負荷分散の偏りをなくす。【解決手段】分散先継続処理部１１は，仮想コネクション情報テーブル１３に従って，各クライアント２０からの通信要求を各分散先の実サーバ３０に転送する。通信要求があったクライアント２０に関する仮想コネクション情報が存在しない場合には，分散先決定処理部１２が新規に割り当てる実サーバ３０を決定し，決定された実サーバ３０の割り当て情報をもとに，新たな仮想コネクション情報を仮想コネクション情報テーブル１３に登録する。終了検出処理部１４は，クライアント２０から特定の通信ポートに対する通信要求があると，仮想コネクションの終了を認識し，仮想コネクション情報テーブル１３から該当するクライアント２０に関する仮想コネクション情報を削除する。【選択図】図１
2006172241.tif 000002
【特許請求の範囲】
【請求項１】
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置において，
クライアントからの通信要求を受信する手段と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する手段と，
クライアントからの通信要求におけるポート番号が，あらかじめ一意性保証の終了を指示するためのポート番号として定められた特定のポート番号である場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する手段とを備える
ことを特徴とする負荷分散装置。
【請求項２】
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置において，
クライアントからの通信要求を受信する手段と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する手段と，
クライアントからの通信要求における特定の位置または範囲に，あらかじめ定められた一意性保証の終了を指示するための特定の文字列が存在する場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する手段とを備える
ことを特徴とする負荷分散装置。
【請求項３】
請求項２記載の負荷分散装置において，
前記一意性保証の終了を指示するための特定の文字列は，インターネット上のアクセス先を示すＵＲＬ中に含まれる特定の文字列である
ことを特徴とする負荷分散装置。
【請求項４】
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置による負荷分散方法において，
前記負荷分散装置が，
クライアントからの通信要求を受信する過程と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する過程と，
クライアントからの通信要求におけるポート番号が，あらかじめ一意性保証の終了を指示するためのポート番号として定められた特定のポート番号である場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する過程とを有する
ことを特徴とする負荷分散方法。
【請求項５】
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置のコンピュータに実行させるための負荷分散プログラムであって，
前記コンピュータを，
クライアントからの通信要求を受信する手段と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する手段と，
クライアントからの通信要求におけるポート番号が，あらかじめ一意性保証の終了を指示するためのポート番号として定められた特定のポート番号である場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する手段として，
機能させるための負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，クライアントからのリクエスト（通信要求）を複数のサーバに分散する負荷分散の技術に関するものであり，特に，分散先サーバの一意性が保証されている場合において，その一意性の保証をクライアントからの要求により解放することを可能とした負荷分散装置，負荷分散方法および負荷分散プログラムに関するものである。
【背景技術】
【０００２】
１台のサーバに対して多くのクライアントからの通信要求が集中すると，サーバの処理能力の不足により，クライアントへのレスポンスタイムが大幅に長くなってしまうことがある。このような状況に対処するため，同じ機能を持つサーバを複数台用意し，負荷分散装置によって複数のサーバに負荷を分散する技術がある（例えば，特許文献１，特許文献２参照）。
【０００３】
このような負荷分散システムにおいて，クライアントからの通信要求をサーバ群内の各サーバに転送する際の分散の単位としては，例えば，“ノード単位の分散”や“コネクション単位の分散”などがある。
【０００４】
“ノード単位の分散”では，ノード（クライアント）を１つの単位とし，同じノード（クライアント）からの通信要求を，サーバ群内の同じサーバに転送する。
【０００５】
“コネクション単位の分散”では，コネクション（ＴＣＰコネクションまたはＵＤＰフロー）を１つの単位とし，コネクション単位にサーバファーム内の最適なサーバを選択して通信要求を転送する。“ノード単位の分散”と違い，同じノード（クライアント）であってもコネクションが異なれば，別の最適なサーバに通信要求が転送される。
【０００６】
“ノード単位の分散”では，クライアントの送信元ＩＰアドレスに基づいて，同じ送信元ＩＰアドレスを持つすべての通信要求を同じサーバに転送する制御を行っている。しかしながら，クライアントからのアクセスがプロキシやファイアウォールを経由するような場合には，一般的に，すべてのクライアントの送信元ＩＰアドレスが１つまたは数個のＩＰアドレスに変換されるか，コネクション単位に別のＩＰアドレスが割り当てられる。この結果，１台または数台のサーバにトラフィックが集中してしまう可能性があり，また，すべての通信要求が同じサーバに転送されることを期待しているアプリケーションでは，誤作動を起こしてしまう可能性がある。このような環境では，“コネクション単位の分散”を使用する。
【０００７】
しかし，ＷＷＷサーバ上のｅ−コマースアプリケーションなどでは，対話処理を行っている間，同じサーバにアクセスすることを期待するものがある。このようなケースでは，“コネクション単位の分散”だけではうまく動作しない。このようなアプリケーションの負荷分散をサポートするために，一定時間最初にアクセスしたサーバと同じサーバへのアクセスを保証する“セッション維持”（アクセス先サーバの一意性の保証）がある（例えば，非特許文献１参照）。
【０００８】
このような技術では，クライアントと分散先サーバとを一意に接続するための情報（一意性保証情報）を，一意性保証テーブルで管理する。一意性保証情報の例としては，例えばノード情報やｃｏｏｋｉｅ情報などがある。
【０００９】
一意性保証テーブル内の一意性保証情報の初期化は，該当するクライアントからの通信が一定時間発生しないこと（一定時間無通信であること）を確認することにより，自動的に行われる。「無通信の状態が一定時間過ぎるまでは一意性を保証する」ということは，「無通信の状態が一定時間過ぎるまでは同じサーバに接続される」ということを意味しており，裏を返せば「無通信の状態が一定時間過ぎるまでは別のサーバに接続されない」ということを意味する。なお，このような一意性の保証時間として，数時間が設定されている場合もある。
【００１０】
クライアントからの通信要求を同じサーバに振り分け続けるのは，複数の通信要求で構成されるトランザクション型アプリケーションのためである。しかし，負荷分散装置では，クライアントからの通信要求でトランザクションの終わりを判断することができないため，同じサーバに振り分け続ける必要がなくなったかどうかを判断するためには，無通信である時間を監視するしかなかった。
【特許文献１】特開平４−２７１４５５号公報
【特許文献２】特開２００２−２５９３５４号公報
【非特許文献１】「Interstage Traffic Director 説明書」，平成１５年７月１４日，富士通株式会社，「負荷分散／ＱｏＳ制御  機能説明書」の「2.1.1.7 セッション維持（一意性の保証）」，インターネット，＜URL: http://software.fujitsu.com/jp/manual/s/b23pk35h0/0510m05/01/ndsv02/ndsv0015.html＞
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述の無通信時間の監視による一意性保証情報の初期化では，無通信の状態が一定時間経過するまで，一意性保証情報を初期化することができない。そのため，タイムアウトになる（無通信の状態が一定時間経過する）前に発生した通信要求は，各サーバの負荷状態にかかわらず，すべて一意性保証情報で保証された分散先サーバに接続されることになる。すなわち，一意性保証情報で保証された分散先サーバの負荷が高負荷になってしまっていても，一定時間の無通信状態によって一意性保証情報が初期化されない限り別の低負荷のサーバに再接続することができないため，効率的な負荷分散を実現できないことがあった。
【００１２】
本発明は，上記の問題点の解決を図り，無通信の状態が一定時間経過する前でも分散先サーバの一意性保証の解放を可能とすることによって，効率的な負荷分散が可能となる負荷分散装置，負荷分散方法および負荷分散プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は，上記の課題を解決するため，クライアントが負荷分散装置にトランザクションの終了を指示し，負荷分散装置がクライアントからの指示によって分散先サーバの一意性保証を解放することを特徴とする。
【００１４】
クライアントごとに分散先サーバの一意性が保証された状態で，あるクライアントから分散先サーバの一意性保証の解放指示があった場合に，それを受信した負荷分散装置が該当するクライアントに関する分散先サーバの一意性保証を解放することにより，それ以後のそのクライアントからの通信を低負荷のサーバに再接続することが可能となり，効率的な負荷分散が可能となる。
【００１５】
分散先サーバの一意性保証の解放指示としては，例えば次の第１の方法または第２の方法を用いることができる。第１の方法は，クライアントからの通信要求であらかじめ定められた特定のポート番号を指定する方法である。特定のポート番号が指定されたクライアントからの通信要求を受けた負荷分散装置は，一意性保証テーブル内の該当するクライアントに関する一意性保証情報を初期化する。
【００１６】
第２の方法は，クライアントからの通信要求（プロトコル／パケット）の特定の位置または範囲にあらかじめ定められた特定の文字列がある場合に，一意性保証の解放を指示していると認識する方法である。特定の文字列が指定されたクライアントからの通信要求を受けた負荷分散装置は，一意性保証テーブル内の該当するクライアントに関する一意性保証情報を初期化する。
【００１７】
例えばプロキシ経由の接続などではプロキシがクライアントの送信元ＩＰアドレスを隠蔽するため，送信元ＩＰアドレスから一意性保証の解放を要求しているクライアントを識別できない場合がある。この場合，上記の特定のポート番号を指定する第１の方法では送信元のクライアントを確定することができず，該当するクライアントに関する一意性保証情報を初期化することができない。第２の方法を用いると，このような場合でも，プロトコル内の位置情報を利用して，一意性保証を完了させるクライアントを確定することができる。
【発明の効果】
【００１８】
本発明によって，複数の既存製品パッケージから構成される複合トランザクションでも，クライアントからのトランザクションの終了通知により，負荷分散装置では，トランザクションの完了を容易に検出できるようになり，業務トランザクションのための一意性保証情報をそのタイムアウト前でも初期化することができるようになる。これにより，負荷分散の偏りを防止することが可能となり，効率的な負荷分散が可能となる。
【００１９】
また，送信元ＩＰアドレスを隠蔽するプロキシ経由の接続のような送信元ＩＰアドレスから業務終了のクライアントを識別できない場合でも，通信パケット上の位置情報などを利用することにより，業務トランザクションの終了をクライアントから指示できるようになる。特に，ＨＴＴＰ通信などでは，特定ＵＲＬのアクセスをトランザクション終了として定義しておけば，クライアント側のアプリケーションを新規に作成しなくても，既存のブラウザ機能を利用するだけで，負荷分散装置にトランザクションの終了を指示することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下，本発明の実施の形態について，図を用いて説明する。以下の実施の形態において，仮想コネクションとは，分散先サーバの一意性が保証された複数のコネクションをまとめたものであり，その仮想コネクションを示す情報を，仮想コネクション情報（上記の一意性保証情報に該当する）という。また，仮想コネクション情報を管理するテーブルを，仮想コネクション情報テーブル（上記の一意性保証テーブルに該当する）という。仮想コネクションは，トランザクション処理では通常１回の業務トランザクションで発生する全コネクションを意味する。
【００２１】
図１は，本発明の実施の形態における負荷分散システムの構成例を示す図である。負荷分散システムは，仮想サーバ１と，複数のクライアント２０とから構成される。また，仮想サーバ１は，負荷分散装置１０と，同じ機能を持つ複数の実サーバ３０とから構成される。各クライアント２０から仮想サーバ１への通信要求は，負荷分散装置１０によって，いずれかの実サーバ３０に転送される。
【００２２】
負荷分散装置１０は，分散先継続処理部１１と，分散先決定処理部１２とを備える。また，分散先継続処理部１１は，仮想コネクション情報テーブル１３と，終了検出処理部１４とを備える。
【００２３】
分散先継続処理部１１は，仮想コネクション情報テーブル１３に登録された仮想コネクション情報（分散先実サーバの一意性保証情報）に従って，各クライアント２０からの通信要求を各分散先の実サーバ３０に転送する。通信要求があったクライアント２０に関する仮想コネクション情報が存在しない場合には，分散先決定処理部１２に対し新規に分散先となる実サーバ３０の決定を指示する。
【００２４】
分散先決定処理部１２は，分散先継続処理部１１からの指示を受けると，各実サーバ３０の負荷状況等を考慮して新規に割り当てる実サーバ３０を決定し，決定された実サーバ３０の割り当て情報を分散先継続処理部１１に通知する。分散先継続処理部１１は，通知された割り当て情報をもとに，通信要求があったクライアント２０に関する仮想コネクション情報を仮想コネクション情報テーブル１３に登録する。
【００２５】
終了検出処理部１４は，クライアント２０からの通信要求に仮想コネクションの終了を示す情報が含まれているか否かを確認する。終了検出処理部１４がクライアント２０からの通信要求から仮想コネクションの終了を示す情報を検出すると，分散先継続処理部１１は，仮想コネクション情報テーブル１３から，該当するクライアント２０に関する仮想コネクション情報を削除する。このとき，最後に仮想コネクションの終了を示す情報を含んだ通信要求を分散先の実サーバ３０に転送してから処理を終了するようにしてもよいし，仮想コネクションの終了を示す情報を含んだ通信要求を分散先の実サーバ３０に転送しないで処理を終了するようにしてもよい。
【００２６】
以下，図１を用いて，本実施の形態における負荷分散装置１０の具体的な例を説明する。ここでは，最初の段階で，まだクライアント２０ａに関する仮想コネクション情報が存在していないものとする。
【００２７】
図１において，クライアント２０ａの業務処理部Ａ２１は，通信要求４１を分散先継続処理部１１に送信する。しかし，分散先継続処理部１１の仮想コネクション情報テーブル１３には，まだクライアント２０ａに関する仮想コネクション情報が存在しないため，分散先データを新規指示４２として，分散先決定処理部１２に中継する。
【００２８】
分散先決定処理部１２は，各実サーバ３０の負荷状況等を調べ，その結果により分散先となる実サーバ３０を決定する。ここでは，実サーバ３０ａが分散先となったとする。実サーバ３０ａが分散先となることにより，その実サーバ３０ａ内の業務処理部３１ａに対して通信業務４３が発生する。このとき，分散先となる実サーバ３０の割り当て情報通知４４を，分散先決定処理部１２から分散先継続処理部１１へ行う。
【００２９】
分散先継続処理部１１は，分散先決定処理部１２からの割り当て情報通知４４をもとにクライアント２０ａに関する仮想コネクション情報を生成し，仮想コネクション情報テーブル１３に登録する。
【００３０】
次に，クライアント２０ａの業務処理部Ｂ２２で，通信要求４５を分散先継続処理部１１に送信したとする。分散先継続処理部１１の終了検出処理部１４は，通信要求４５が仮想コネクションの終了パターンに一致しないことを確認する。分散先継続処理部１１は，仮想コネクション情報テーブル１３に登録されているクライアント２０ａに関する仮想コネクション情報を利用して，実サーバ３０ａの業務処理部３１ａを決定し，その業務処理部３１ａに対する通信業務４６を行う。
【００３１】
次に，クライアント２０ａの終了処理部２３が業務処理（トランザクション）の終了を指示する通信要求４７を送信し，分散先継続処理部１１が受信したとする。分散先継続処理部１１の終了検出処理部１４は，通信要求４７が仮想コネクションの終了パターンに一致することを検出する。分散先継続処理部１１は，一連の業務処理の終了を認識し，仮想コネクション情報テーブル１３に登録されているクライアント２０ａに関する仮想コネクション情報を破棄する。
【００３２】
その結果，クライアント２０ａの業務処理部Ａ２１が次の業務処理として通信要求４１を実行した場合に，分散先継続処理部１１では，すでにクライアント２０ａに関する仮想コネクション情報が仮想コネクション情報テーブル１３から消されているため，分散先決定処理部１２への新規指示４２として処理され，分散先決定処理部１２で分散先の実サーバ３０が再決定される。
【００３３】
従来の技術では，クライアント２０ａの業務処理部Ａ２１が次の業務処理として通信要求４１を実行した時点ですでに一定の無通信監視時間が経過していないと，分散先継続処理部１１では，まだ仮想コネクション情報テーブル１３に登録されているクライアント２０ａに関する仮想コネクション情報に従って，同じ実サーバ３０ａに通信要求が送られてしまう。
【００３４】
もちろん，本実施の形態においても，従来の技術と同様に，一定の無通信監視時間が経過した仮想コネクション情報が仮想コネクション情報テーブル１３に残っている場合には，時間監視によりその仮想コネクション情報を消去するが，クライアントからの終了指示があった場合には，無通信監視時間の経過を待つことなく直ちに仮想コネクション情報の消去を実行するので，負荷分散の偏りを防止することができるようになる。
【００３５】
次に，仮想コネクション情報テーブル１３について，具体的な例をあげて説明する。図２は，本実施の形態における仮想コネクション情報テーブルの例を示す図である。図２（Ａ）の例に示す仮想コネクション情報テーブル１３には，クライアントのＩＰアドレスごとに，仮想サーバのＩＰアドレス，実サーバのＩＰアドレス，管理情報の有効期限などの管理情報が記録されている。
【００３６】
図２（Ｂ）に示すように，各クライアント２０から仮想サーバ１（ＩＰアドレス＝“172.22.16.30”）への通信要求は，負荷分散装置１０で各実サーバ３０に振り分けられる。このとき，負荷分散装置１０は，仮想コネクション情報テーブル１３によって，通信要求の転送先となる実サーバ３０を決定する。
【００３７】
例えば，図２（Ａ）の仮想コネクション情報テーブル１３では，ＩＰアドレスが“192.168.0.100 ”のクライアント２０の割り当て実サーバ３０は，ＩＰアドレスが“172.22.16.31”の実サーバ３０となっている。したがって，図２（Ｂ）に示すように，ＩＰアドレスが“192.168.0.100 ”のクライアント２０からの通信要求は，ＩＰアドレスが“172.22.16.31”の実サーバ３０に転送される。
【００３８】
クライアント２０からの通信要求を受けると，図２（Ａ）に示す仮想コネクション情報テーブル１３における該当クライアント２０の管理情報の有効期限が延長更新される。管理情報の有効期限までにクライアント２０からの通信要求がなかった場合には，そのクライアント２０についての仮想コネクション情報が仮想コネクション情報テーブル１３から削除される。
【００３９】
次に，仮想コネクションの終了（一意性保証の解放）について，具体的な例をあげて説明する。図３は，本実施の形態における仮想コネクションの終了の例を説明する図である。
【００４０】
仮想コネクションを終了させるための第１の方法は，クライアント２０からの通信要求で指定されているポート番号があらかじめ定められた特定の番号である場合に，その特定のポート番号を仮想コネクションの終了を示す情報として認識する方法である。
【００４１】
図３（Ａ）に示すように，クライアント２０からの通信要求において，通常時には，例えば，ＨＴＴＰの場合には宛先ポート番号に８０が指定されており，ＦＴＰの場合には宛先ポート番号に２１が指定されている。これらの通常の番号が指定されている通信要求は，負荷分散装置１０において，仮想コネクション情報テーブル１３の仮想コネクション情報に従って，各実サーバ３０に分散される。
【００４２】
クライアント２０は，一連の通信の終了時に，仮想コネクションの終了を示す情報としてあらかじめ定められた特定の番号（図３（Ａ）の例では５０００）を宛先ポート番号として指定し，通信要求を送る。負荷分散装置１０では，終了検出処理部１４がクライアント２０からの通信要求で指定された宛先ポート番号が仮想コネクションの終了を示す番号（５０００）であることを検出し，分散先継続処理部１１は，仮想コネクション情報テーブル１３から該当するクライアント２０に関する仮想コネクション情報を削除する。
【００４３】
次に，仮想コネクションを終了させるための第２の方法として，クライアント２０からの通信要求の特定の位置の文字列があらかじめ定められた特定の文字列である場合に，その特定の文字列を仮想コネクションの終了を示す情報として認識する方法がある。
【００４４】
例えばプロキシ経由の接続などの場合に，プロキシがクライアント２０の送信元ＩＰアドレスを隠蔽することにより，送信元ＩＰアドレスから仮想コネクションの終了を要求しているクライアント２０を識別できない。そのため，前述の特定のポート番号を指定する第１の方法を用いても，クライアント２０からの通信要求によって仮想コネクションを終了することができない場合がある。このような場合でも，特定の文字列を指定する第２の方法では，プロトコル内の位置情報を利用して仮想コネクションを終了するクライアント２０を識別することができるため，クライアント２０からの通信要求によって仮想コネクションを終了することができる。
【００４５】
図３（Ｂ）に示すように，クライアント２０からの通信要求において，通常時には，例えば，ＨＴＴＰの場合にはＵＲＬの特定の位置で通常の文字列（図３（Ｂ）の例では“kaimono ”）が指定されている。これらの通常の文字列が指定されている通信要求は，負荷分散装置１０において，仮想コネクション情報テーブル１３の仮想コネクション情報に従って，各実サーバ３０に分散される。
【００４６】
クライアント２０は，一連の通信の終了時に，仮想コネクションの終了を示す情報としてあらかじめ定められた特定の文字列を（図３（Ｂ）の例では“ＯＷＡＲＩ”）を特定の位置に指定し，通信要求を送る。負荷分散装置１０では，終了検出処理部１４がクライアント２０からの通信要求の特定の位置の文字列があらかじめ定められた特定の文字列（“ＯＷＡＲＩ”）であることを検出し，分散先継続処理部１１は，仮想コネクション情報テーブル１３から該当するクライアント２０に関する仮想コネクション情報を削除する。
【００４７】
該当するクライアント２０については，例えば通信にｃｏｏｋｉｅ情報が用いられている場合には，そのｃｏｏｋｉｅ情報からクライアント２０を識別する情報を得て決定することができる。また，セッションＩＤとクライアントとの対応情報を記憶しておき，セッションＩＤによって仮想コネクション情報を削除するクライアントを判別してもよい。
【００４８】
特定の文字列としては，例えば，ＦＴＰにおけるファイル名やフォルダ名，ビデオ配信（Ｈ．３２３）上のファイル識別子，ＭＥＴＡＦＲＡＭＥのアプリ識別子など，ＨＴＴＰにおけるＵＲＬ以外のものでもよい。
【００４９】
次に，負荷分散装置１０における負荷分散処理の例について，フローチャートを用いて説明する。図４は，本実施の形態における負荷分散処理フローチャートである。
【００５０】
まず，クライアント２０からのパケットを受信すると（ステップＳ１０），その通信に該当する仮想コネクション情報が仮想コネクション情報テーブル１３に存在するかを検査する（ステップＳ１１）。
【００５１】
ステップＳ１１において該当する仮想コネクション情報が存在しない場合には（ステップＳ１２），分散先決定処理部１２において新たに分散先の実サーバ３０を決定する（ステップＳ１５）。決定された分散先実サーバ３０の情報をもとに，仮想コネクション情報テーブル１３に新たな仮想コネクション情報を追加し（ステップＳ１６），決定された分散先の実サーバ３０にパケットの宛先を変更する（ステップＳ１７）。
【００５２】
ステップＳ１１において該当する仮想コネクション情報が存在する場合には（ステップＳ１２），その仮想コネクション情報の有効期限が切れているかを確認し（ステップＳ１３），有効期限が切れていれば，該当する仮想コネクション情報を仮想コネクション情報テーブル１３から破棄し（ステップＳ１４），分散先決定処理部１２において新たに分散先の実サーバ３０を決定する（ステップＳ１５）。決定された分散先実サーバ３０の情報をもとに，仮想コネクション情報テーブル１３に新たな仮想コネクション情報を追加し（ステップＳ１６），決定された分散先の実サーバ３０にパケットの宛先を変更する（ステップＳ１７）。
【００５３】
ステップＳ１３において有効期限が切れていなければ，該当する仮想コネクション情報の管理情報の有効期限を，一定の無通信監視時間分だけ延長更新し（ステップＳ１８），該当する仮想コネクション情報に従って，パケットの宛先を変更する（ステップＳ１９）。
【００５４】
次に，本システムにおいて，特定のポート番号による仮想コネクションの終了が定義されているかを確認し（ステップＳ２０），定義されていれば，受信したパケットのポート番号が仮想コネクションの終了を示す番号と一致するかを検査する（ステップＳ２１）。一致すれば，該当する仮想コネクション情報を仮想コネクション情報テーブル１３から破棄する（ステップＳ２４）。
【００５５】
ステップＳ２０において特定のポート番号が定義されていないか，ステップＳ２１においてポート番号が一致しない場合には，続いて，本システムにおいて特定の文字列による仮想コネクションの終了が定義されているかを確認し（ステップＳ２２），定義されていれば，受信したパケットのデータに含まれるパスの特定位置の文字列が仮想コネクションの終了を示す文字列と一致するかを検査する（ステップＳ２３）。一致すれば，該当する仮想コネクション情報を仮想コネクション情報テーブル１３から破棄する（ステップＳ２４）。
【００５６】
ステップＳ２５では，宛先が変更されたパケットを，その変更先（分散先）である実サーバ３０に送信し，受信したパケットの転送処理を終了する。
【００５７】
次に，仮想コネクションを終了させるときの操作イメージについて，図５，図６を用いて具体的に説明する。以下では，「顧客登録」操作から順に操作を行い，発注業務を確定するために「発注終了」をクリックする業務アプリケーションの例を想定する。なお，この例では，特定の文字列による仮想コネクションの終了が定義されているものとし，その仮想コネクションの終了を示す文字列として，「/Kanryo/」の文字列を設定しておくものとする。また，図５，図６において，実サーバ３０内の矢印は，その実サーバ３０の負荷状態を示し，矢印が長いほど高負荷の状態であることを示す。
【００５８】
図５は，本実施の形態における通常の操作の例を説明する図である。図５（Ａ）は，クライアント２０における業務アプリケーション開始時のインターネット・ブラウザの画面の例であり，このときのＵＲＬは“http://172.22.16.30/Menu/index.html ”である。
【００５９】
このインターネット・ブラウザの画面には，いくつかのボタン（“顧客登録”，“注文選択”，“配送日”，“発注終了”）と“操作補助画面”とが表示されている。クライアント２０を操作して発注するユーザは，“操作補助画面”を利用しながら，必要に応じてボタン操作によって，この業務アプリケーションの操作を行う。
【００６０】
業務アプリケーションの開始時には，負荷分散装置１０によって，その時点で最も低負荷の実サーバ３０に業務処理が振り分けられる。ここでは，図５（Ｂ）に示すように，実サーバ３０ａに分散される。その後，業務アプリケーションの通常操作（“発注終了”以外の操作）中は，負荷分散装置１０内の仮想コネクション情報テーブル１３の仮想コネクション情報によって分散先実サーバ３０の一意性が保証されるため，図５（Ｃ）に示すように，常に実サーバ３０ａに業務処理が分散される。
【００６１】
図６は，本実施の形態における仮想コネクションの終了操作の例を説明する図である。図６（Ａ）は，クライアント２０において“発注終了”のボタンが押されることにより発注業務が確定され，業務アプリケーションが終了する場合のインターネット・ブラウザの画面の例であり，このときのＵＲＬは“http://172.22.16.30/Kanryo/index.html ”である。このインターネット・ブラウザの画面では，図５の“操作補助画面”が“完了画面”となり，発注の完了を示すメッセージが表示されている。
【００６２】
業務アプリケーションの終了時には，仮想コネクションの終了を示す文字列がＵＲＬのパスに含まれていることを確認することにより負荷分散装置１０内の仮想コネクション情報テーブル１３から該当するクライアント２０の仮想コネクション情報が破棄される。ここでは，ＵＲＬのパスに含まれる「/Kanryo/」の文字列が仮想コネクションの終了を示す文字列であるので，図６（Ｂ）に示すように，それまでのクライアント２０から実サーバ３０ａへの仮想コネクションが解消される。
【００６３】
その後，新たにクライアント２０において業務アプリケーションが開始されたときに，負荷分散装置１０によって，その時点で最も低負荷の実サーバ３０に業務処理を分散することが可能となる。ここでは，図６（Ｃ）に示すように，その時点で最も低負荷の実サーバ３０として，実サーバ３０ｃが選択される。
【００６４】
従来からの汎用的な負荷分散装置では，個々のユーザごとにカスタマイズされた業務処理におけるトランザクション完了を識別することができない。その結果，ある一定期間の無操作（無通信）の発生により業務完了を判断するしかなかった。このような従来の技術では，先の業務処理の完了後すぐに次の業務処理を開始すると，たとえ先の業務処理時の分散先の実サーバ３０が次の業務処理の開始時に高負荷状態であったとしても，先の業務処理時の分散先の実サーバ３０に次の業務処理を依頼してしまうことになる。
【００６５】
例えば，従来の技術では，業務アプリケーションの終了後にある一定期間の無操作（無通信）が発生しないと仮想コネクションが終了されないため，その一定期間が過ぎる前にクライアント２０における次の業務アプリケーションが開始してしまうと，図５（Ｃ）に示すように，たとえその時点で最も低負荷の実サーバ３０でなくとも，そのまま実サーバ３０ａに業務処理が分散されてしまう。本発明によれば，このような事態が解消され，実サーバ３０の負荷が従来よりも均一化されることになる。
【００６６】
なお，以上説明した負荷分散装置１０が実行する処理は，コンピュータとソフトウェアプログラムとによって実現することができ，そのプログラムをコンピュータ読み取り可能な記録媒体に記録することも，ネットワークを通して提供することも可能である。
【００６７】
以上説明した本発明の実施の形態の特徴をまとめると，以下のとおりとなる。
【００６８】
（付記１）
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置において，
クライアントからの通信要求を受信する手段と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する手段と，
クライアントからの通信要求におけるポート番号が，あらかじめ一意性保証の終了を指示するためのポート番号として定められた特定のポート番号である場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する手段とを備える
ことを特徴とする負荷分散装置。
【００６９】
（付記２）
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置において，
クライアントからの通信要求を受信する手段と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する手段と，
クライアントからの通信要求における特定の位置または範囲に，あらかじめ定められた一意性保証の終了を指示するための特定の文字列が存在する場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する手段とを備える
ことを特徴とする負荷分散装置。
【００７０】
（付記３）
付記２記載の負荷分散装置において，
前記一意性保証の終了を指示するための特定の文字列は，インターネット上のアクセス先を示すＵＲＬ中に含まれる特定の文字列である
ことを特徴とする負荷分散装置。
【００７１】
（付記４）
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置による負荷分散方法において，
前記負荷分散装置が，
クライアントからの通信要求を受信する過程と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する過程と，
クライアントからの通信要求におけるポート番号が，あらかじめ一意性保証の終了を指示するためのポート番号として定められた特定のポート番号である場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する過程とを有する
ことを特徴とする負荷分散方法。
【００７２】
（付記５）
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置による負荷分散方法において，
前記負荷分散装置が，
クライアントからの通信要求を受信する過程と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する過程と，
クライアントからの通信要求における特定の位置または範囲に，あらかじめ定められた一意性保証の終了を指示するための特定の文字列が存在する場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する過程とを有する
ことを特徴とする負荷分散方法。
【００７３】
（付記６）
付記５記載の負荷分散方法において，
前記一意性保証の終了を指示するための特定の文字列は，インターネット上のアクセス先を示すＵＲＬ中に含まれる特定の文字列である
ことを特徴とする負荷分散方法。
【００７４】
（付記７）
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置のコンピュータに実行させるための負荷分散プログラムであって，
前記コンピュータを，
クライアントからの通信要求を受信する手段と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する手段と，
クライアントからの通信要求におけるポート番号が，あらかじめ一意性保証の終了を指示するためのポート番号として定められた特定のポート番号である場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する手段として，
機能させるための負荷分散プログラム。
【００７５】
（付記８）
クライアントと負荷分散先のサーバとを関連付ける一意性保証情報を記憶する一意性保証情報記憶手段を備え，クライアントからの通信要求を一意性保証情報記憶手段を参照して複数のサーバのいずれかに振り分ける負荷分散装置のコンピュータに実行させるための負荷分散プログラムであって，
前記コンピュータを，
クライアントからの通信要求を受信する手段と，
通信要求を送信したクライアントが前記一意性保証情報記憶手段に記憶されている一意性保証情報により分散先のサーバの一意性が保証されているクライアントである場合に，その通信要求を一意性保証情報によって該クライアントに関連付けられているサーバに振り分け，分散先のサーバの一意性が保証されていないクライアントである場合に，前記複数のサーバの中から分散先となるサーバを決定して前記通信要求を分散先のサーバに分散するとともに，そのクライアントと分散先のサーバとを関連付ける一意性保証情報を前記一意性保証情報記憶手段に登録する手段と，
クライアントからの通信要求における特定の位置または範囲に，あらかじめ定められた一意性保証の終了を指示するための特定の文字列が存在する場合に，前記一意性保証情報記憶手段に登録されている該クライアントの一意性保証情報を消去する手段として，
機能させるための負荷分散プログラム。
【００７６】
（付記９）
付記８記載の負荷分散プログラムにおいて，
前記一意性保証の終了を指示するための特定の文字列は，インターネット上のアクセス先を示すＵＲＬ中に含まれる特定の文字列である
ことを特徴とする負荷分散プログラム。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施の形態における負荷分散システムの構成例を示す図である。
【図２】本実施の形態における仮想コネクション情報テーブルの例を示す図である。
【図３】本実施の形態における仮想コネクションの終了の例を説明する図である。
【図４】本実施の形態における負荷分散処理フローチャートである。
【図５】本実施の形態における通常の操作の例を説明する図である。
【図６】本実施の形態における仮想コネクションの終了操作の例を説明する図である。
【符号の説明】
【００７８】
１    仮想サーバ
１０  負荷分散装置
１１  分散先継続処理部
１２  分散先決定処理部
１３  仮想コネクション情報テーブル
１４  終了検出処理部
２０  クライアント
３０  実サーバ
【図１】
2006172241.tif 000003
【図２】
2006172241.tif 000004
【図３】
2006172241.tif 000005
【図４】
2006172241.tif 000006
【図５】
2006172241.tif 000007
【図６】
2006172241.tif 000008