(57)【要約】【課題】複数のサーバ装置を利用したクラスタにおいて、任意のタイミングでセッション情報を移動する。【解決手段】クライアントリクエストの処理結果をクライアントに返信するリクエスト割振り部と、受信したリクエストを処理するリクエスト処理部と、前記リクエストのセッション情報を管理するセッション情報管理部とを有するサーバ装置を複数備えてなるシステムでのセッション管理方法であって、第１のサーバ装置のセッション情報管理部は、第２のサーバ装置のセッション情報管理部にセッション情報を移動し、第１のサーバ装置のリクエスト割振り部は、前記第１のサーバ装置のリクエスト割振り部がリクエストを受信したリクエスト受信時刻及びクライアントに処理結果を返信したレスポンス返信時刻より前記セッション情報の移動時刻が遅い場合、前記セッション情報が移動した移動先情報に基づいて新たに受信したリクエストを第２のサーバ装置に割り振る。【選択図】図1
2012103879.tif 000002
【特許請求の範囲】
【請求項１】
クライアントリクエストの処理結果をクライアントに返信するリクエスト割振り部と、受信したリクエストを処理するリクエスト処理部と、前記リクエストのセッション情報を管理するセッション情報管理部と、を有するサーバ装置を複数備えてなるシステムでのセッション管理方法であって、
第１のサーバ装置のセッション情報管理部は、第２のサーバ装置のセッション情報管理部にセッション情報を移動し、
第１のサーバ装置のリクエスト割振り部は、前記第１のサーバ装置のリクエスト割振り部がリクエストを受信したリクエスト受信時刻及びクライアントに処理結果を返信したレスポンス返信時刻より前記セッション情報の移動時刻が遅い場合、前記セッション情報が移動した移動先情報に基づいて新たに受信したリクエストを第２のサーバ装置に割り振ることを特徴とするセッション管理方法。
【請求項２】
請求項１に記載のセッション管理方法であって、
前記第１のサーバ装置のリクエスト割振り部は、前記受信時刻及び前記返信時刻の少なくとも一方よりも、前記セッション情報の移動時刻が早い場合、前記第１のセッション情報管理部にセッション情報の移動を再実行することを特徴とするセッション管理方法。
【請求項３】
請求項２に記載のセッション管理方法であって、
前記サーバ装置を停止する際、前記第１のサーバ装置停止前に前記第１のサーバ装置のセッション情報管理部は、管理するセッション情報を前記第２のサーバ装置のセッション管理部に移動し、
前記第１のサーバ装置のリクエスト割振り部は、処理中のリクエストに関するセッション情報を前記第２のサーバ装置に転送することを特徴とするセッション管理方法。
【請求項４】
請求項１に記載のセッション管理方法であって、
前記システムは、セッション情報の移動条件を保持するセッション情報移動条件保存部と、前記セッション情報移動条件保存部から取得したセッション情報移動条件と、前記セッション情報移動条件保存部から取得したセッション情報と、を比較するセッション情報移動条件比較部とを更に有し、
前記取得したセッション情報移動条件とセッション情報が一致する場合、前記第１のサーバ装置から第２のサーバ装置へセッション情報を移動することを特徴とするセッション管理方法。
【請求項５】
請求項４に記載のセッション管理方法であって、
前記セッション情報移動条件は、少なくともセッションＩＤ及びセッション情報の応答値によって指定することを特徴とするセッション管理方法。
【請求項６】
請求項４記載のセッション管理方法であって、
前記システムは、前記第１及び第２のサーバ装置におけるセッション処理の負荷を管理するサーバ管理部を更に有し、
前記サーバ管理部は、前記セッション処理のセッション数又はセッション内容を少なくとも含む負荷情報をモニタに表示することを特徴とするセッション管理方法。
【請求項７】
請求項１に記載のセッション管理方法であって、
前記システムは、前記クライアントと、前記第１及び第２のサーバ装置との通信を仲介する負荷分散部を更に有し、
前記第１サーバ装置のセッション情報管理部は、前記第２のサーバ装置のセッション情報管理部に該セッション情報を複製することで、セッション情報を移動し、
前記負荷分散部は、同一の前記クライアントリクエストを前記第１及び第２のサーバ装置の夫々に送信し、前記第１のサーバ装置と第２のサーバ装置から先に受信したリクエスト処理結果を前記クライアントに返信することを特徴とするセッション管理方法。
【請求項８】
請求項７に記載のセッション管理方法であって、
前記システムは、前記第１及び第２のサーバ装置のリクエスト処理部が使用するデータを格納するための共有記憶部と、前記第１並びに第２のサーバ装置のリクエスト処理部及び前記共有記憶部間のアクセスを制御する共有アクセス部と、を更に有し、
前記共有アクセス部は、
前記第１及び第２のサーバ装置のリクエスト処理部で、前記同一のクライアントリクエストを処理することにより生じた前記共有記憶部に対する複数のアクセス要求のうち最先のアクセス要求を前記共有記憶部に送信し、
該アクセス要求に対する前記共有記憶部からの処理結果を保持するとともに前記最先のアクセス要求の送信元であるリクエスト処理部に該処理結果を返信し、
前記最先のアクセス要求以外のアクセス要求の送信元であるリクエスト処理部に対しては、前記保持した処理結果を返信することを特徴とするセッション管理方法。
【請求項９】
クライアントリクエストの処理を行う計算機を複数接続してなるセッション管理システムであって、
前記各計算機は前記リクエストのセッション情報を管理し、前記セッション情報の移動指示を受け、当該セッション情報を他の計算機に移動するとともにその移動時刻を管理するセッション情報管理部と、
前記リクエストの受信時刻及び処理結果の返信時刻を管理し、前記移動時刻が前記リクエストの受信時刻及び前記返信時刻よりも遅い場合に、新たなリクエストを前記他の計算機に転送するリクエスト割振り部と、
を有することを特徴とするセッション管理システム。
【請求項１０】
請求項９に記載のセッション管理システムであって、
前記移動時刻が、前記リクエストの受信時刻及び前記返信時刻の少なくとも一方より早い場合に、前記セッション情報の移動を再実行するセッション情報管理部を有することを特徴とするセッション管理システム。
【請求項１１】
請求項１０に記載のセッション管理システムであって、
特定の計算機を停止する際、当該計算機を停止する前に管理するセッション情報を他の計算機に移動するセッション情報管理部と、
処理中のリクエストに関するセッション情報を他の計算機に転送するリクエスト割振り部と、
を有することを特徴とするセッション管理システム。
【請求項１２】
請求項９に記載のセッション管理システムであって、
前記各計算機は、
セッション情報の移動条件を保持するセッション情報移動条件保存部と、
前記セッション情報移動条件保存部から取得したセッション情報移動条件と、前記セッション情報移動条件保存部から取得したセッション情報と、を比較し、前記取得したセッション情報移動条件とセッション情報が一致する場合に、他の計算機へセッション情報を移動するセッション情報移動条件比較部と、
を有することを特徴とするセッション管理システム。
【請求項１３】
請求項１２に記載のセッション管理システムであって、
前記セッション情報移動条件は、少なくともセッションＩＤ及びセッション情報の応答値によって指定することを特徴とするセッション管理システム。
【請求項１４】
請求項１２に記載のセッション管理システムであって、
前記各計算機は、
各計算機におけるセッション処理の負荷を管理し、前記セッション処理の数又はセッション内容を少なくとも含む負荷情報をモニタに表示する管理部を更に有することを特徴とするセッション管理システム。
【請求項１５】
クライアントからのリクエストの処理を行う計算機を複数接続してなるシステムの前記各計算機に、
前記リクエストのセッション情報を管理し、前記セッション情報の移動指示を受け、該セッション情報を他の計算機に移動するとともにその移動時刻を管理する機能と、
前記リクエストの受信時刻及び処理結果の返信時刻を管理し、前記移動時刻が、前記リクエストの受信時刻及び前記返信時刻よりも遅い場合に、新たなリクエストを前記他の計算機に転送する機能と、
を実現させることを特徴とするプログラム。
【請求項１６】
請求項１５に記載のプログラムであって、
前記受信時刻及び前記返信時刻の少なくとも一方よりも、前記セッション情報の移動時刻が早い場合に、セッション情報の移動を再実行する機能を更に実現させることを特徴とするプログラム。
【請求項１７】
請求項１６に記載のプログラムであって、
特定の計算機を停止する際、前記計算機を停止する前に管理するセッション情報を他の計算機に移動する機能と、
処理中のリクエストに関するセッション情報を他のサーバ装置に転送する機能と
を更に実現させることを特徴とするプログラム。
【請求項１８】
請求項１５に記載のプログラムであって、
前記各計算機に、
セッション情報の移動条件を保持する機能と、
当該セッション情報移動条件と、当該セッション情報とを比較する機能と、
前記取得したセッション情報移動条件とセッション情報が一致するならば他の計算機へセッション情報を移動する機能と、
を更に実現させることを特徴とするプログラム。
【請求項１９】
請求項１８に記載のプログラムであって、
前記セッション情報移動条件は、少なくともセッションＩＤ及びセッション情報の応答値によって指定することを特徴とするプログラム。
【請求項２０】
請求項１８に記載のプログラムであって、
前記各計算機に、
各計算機におけるセッション処理の負荷を管理する機能と、
前記セッション処理の数又はセッション内容を少なくとも含む負荷情報をモニタに表示する機能と、
を更に実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セッション管理方法、セッション管理システム及びプログラムに関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特表２００９−５０１３７３号公報（特許文献１）がある。特許文献１には、複数のサーバ装置でクラスタを構成したシステムが持つクライアントのセッション情報を、セッション共有装置及びセッション共有方法を用いずに移動するシステムが開示されている。クラスタとは、クライアントからのリクエストを受信してリクエスト処理結果を返信するサーバ装置群で構成するシステムを示しており、各サーバ装置へのリクエスト割り振りは、負荷分散装置が実行する。また、各サーバ装置でクライアントのリクエストを処理する際には、サーバ装置ごとにクライアントの状態を示すセッション情報を参照、生成、変更、追加又は削除することでクライアントに応じたリクエスト処理を実現している。
【０００３】
特許文献１には、分析コンポーネントからセッション情報の移動命令を受信すると、クライアントリクエストにリダイレクト・コマンドを追加して、セッション情報の移動を行う技術が開示されている。このとき、リクエストにリダイレクト・コマンドを追記するため、リクエストの返信であるレスポンスにリダイレクト・コマンドを追記するための命令文を含める。そして、クライアントが前記レスポンスを受信した後、クライアントが前記移動されたセッション情報に由来するリクエストを再度送信する場合、クライアントがレスポンスに含まれる命令文に従いリクエストをセッション情報の移動先となる新たなサーバ装置に転送する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００９−５０１３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、クライアントリクエストに対するレスポンスにリダイレクト・コマンドを追記する命令文を含めるため、セッション情報を移動するためにはクライアントリクエストを受信することが前提となる。つまり、クライアントリクエストを受信するとリクエストの転送設定を含むセッション情報の移動が行われる。
【０００６】
従って、特許文献１に開示されたセッション情報の移動方法では、セッション情報の移動命令を受信しても、上記したようにクライアントレスポンスにリダイレクト・コマンドを追記する命令文を含めるため、クライアントリクエストを受信しないとセッション情報の移動を行うことができない。
【０００７】
そのため、例えば、特定のサーバ装置を停止するスケールインを行う場合には、停止するサーバ装置が保持するセッション情報と関係する全クライアントのリクエストを受信するか、それらのセッション情報がタイムアウトにより無効化されるまでサーバ装置の停止を待つ必要がある。また、ある特定のサーバ装置にセッション情報が集中し、新たにサーバ装置を増やすようなスケールアウトを行う場合には、クライアントリクエストを受信した後でなければセッション情報の移動を行うことができない。
【０００８】
本発明は、複数のサーバ装置を利用したクラスタにおいて、任意のタイミングでセッションの移動を実現することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の代表的な一形態によれば、クライアントリクエストの処理結果をクライアントに返信するリクエスト割振り部と、受信したリクエストを処理するリクエスト処理部と、前記リクエストのセッション情報を管理するセッション情報管理部とを有するサーバ装置を複数備えてなるシステムでのセッション管理方法であって、第１のサーバ装置のセッション情報管理部は、第２のサーバ装置のセッション情報管理部にセッション情報を移動し、第１のサーバ装置のリクエスト割振り部は、前記第１のサーバ装置のリクエスト割振り部がリクエストを受信したリクエスト受信時刻及びクライアントに処理結果を返信したレスポンス返信時刻より前記セッション情報の移動時刻が遅い場合、前記セッション情報が移動した移動先情報に基づいて、新たに受信したリクエストを第２のサーバ装置に割り振ることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、クライアントリクエストの有無に関係なく任意のタイミングでセッション情報を移動することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】本発明を適用したセッション管理方法を実現するクラスタの全体構成を示す図である。
【図２】本発明を適用した第１の実施形態のクラスタにおける負荷分散装置が識別するリクエストヘッダの例を示す図である。
【図３】本発明を適用した第１の実施形態におけるセッション情報移動処理の流れを示すフローチャートである。
【図４】本発明を適用した第１の実施形態におけるセッション情報移動時のセッション情報管理部の処理の流れを示すフローチャートである。
【図５】本発明を適用した第１の実施形態におけるセッション情報移動時にリクエスト割振り部が保持するセッション識別情報及び時刻情報を示す図である。
【図６】本発明を適用した第１の実施形態におけるセッション情報移動時のリクエスト割り振り部の処理の流れを示すフローチャートである。
【図７】本発明を適用した第２の実施形態におけるセッション情報移動条件に従いセッション情報の移動処理を実現するクラスタの全体構成を示す図である。
【図８】本発明を適用した第２の実施形態におけるセッション情報移動時のセッション情報移動条件比較部の処理の流れを示すフローチャートである。
【図９】本発明を適用した第２の実施形態におけるセッション情報移動条件の例を示す図である。
【図１０】本発明を適用したセッション情報とセッション情報移動情報の表示例を示す図である。
【図１１】本発明を適用した第３の実施形態におけるリクエスト処理を多重実行するクラスタの全体構成を示す図である。
【図１２】本発明を適用した第３の実施形態における共有部アクセス装置の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
[第１の実施形態]
以下、図面を用いて本発明を実施するための第１の実施形態について説明する。
図１は、本発明を適用したクラスタを示す。
クラスタは、サーバ装置１０１（１０１ａ、１０１ｂ、１０１ｃ）と、サーバ管理装置１０２と、負荷分散装置１０３とから主に構成される。以下、サーバ装置１０１ａを用いて本発明の構成について説明する。
【００１３】
サーバ装置１０１aは、通信装置１０４ａ、メモリ１１０ａ、ＣＰＵ１０５ａ、記憶装置１０７ａ、入力装置１１８及び表示装置１１９を備え、通信装置１０４ａを介して、サーバ管理装置１０２及び負荷分散装置１０３に接続している。通信装置１０４ａは、ネットワーク１２２などを介して、他の装置と各種データやコマンドを交換する。メモリ１１０ａは、サーバ装置が処理を実行する各種プログラム及び一時的なデータを保持する。ＣＰＵ１０５ａは、メモリに格納される各種プログラムを実行する。また、ＣＰＵ１０５ａは時刻管理を行う機能部であるクロック１０６ａを有する。
【００１４】
サーバ装置を備える記憶装置１０７ａは、サーバ装置が処理を実行するための各種プログラム及び当該プログラムの実行に必要なデータを保存する。後述する構成変更処理部１１３ａ、Ｗｅｂサーバ１１１ａ及びＡＰサーバ１１２ａは、記憶装置１０７ａに記憶されているプログラム１０９ａやデータ１０８ａをメモリ上１１０ａに読みだし、それをＣＰＵ１０５ａで実行することで動作する。なお、Ｗｅｂサーバ１１１ａ及びＡＰサーバ１１２ａは同一のＣＰＵ１０５ａで、図示しないＯＳ（オペレーティングシステム）上で動作している。Ｗｅｂサーバ１１１ａは、リクエスト割振り部１１４ａを有する。ＡＰサーバ１１２ａは、リクエスト処理部１１５ａ、セッション情報保存部１１６ａ及びセッション情報管理部１１７ａといった機能部を有する。
【００１５】
構成変更命令処理部１１３ａは、クラスタの構成変更命令をサーバ管理装置１０２から通信装置１０４ａを介して受信する。構成変更命令は例えば、サーバ装置のスケールインやスケールアウトの要求である。構成変更命令処理部１１３ａは、受信した構成変更命令に従ってセッション情報の移動を判断する。セッション情報の一部又は全部を他のサーバに移動すると判断した場合には、移動先のセッション情報管理部に移動するセッション情報を指定してセッション情報の移動を命令する。
【００１６】
リクエスト割振り部１１４ａは、セッション情報を管理するセッション情報管理部１１７ａから受け取った情報に従って受信したクライアントリクエストを、自サーバ装置のリクエスト処理部１１５ａ又は通信装置１０４ａを介して他のサーバ装置のリクエスト処理部へ転送する。
【００１７】
リクエスト処理部１１５ａは、リクエスト割振り部１１４ａから割振られたクライアントリクエストを処理し、その結果をリクエスト割振り部１１４ａへ返信する。リクエスト処理の際に、セッション情報の参照、生成、変更、追加、削除をセッション情報保存部１１６ａに要求する。
【００１８】
セッション情報保存部１１６ａは、クライアントごとのセッション情報をメモリに保存する。そして、セッション情報保存部１１６ａは、リクエスト処理部１１５ａからのセッション情報の参照、生成、変更、追加、削除の要求に対して、該当するセッション情報を当該要求に応じて処理するか、リクエスト割振り部１１４ａに送信する。なお、セッション情報の保存先は、メモリに限定せずサーバ装置内の記憶装置でもよい。
【００１９】
セッション情報管理部１１７ａは、構成変更命令処理部１１３ａからの構成変更命令により、命令されたセッション情報をセッション情報保存部１１６ａから選択し、命令されたサーバ装置のセッション情報管理部に送信する。そして、セッション情報送信後には、セッション情報の移動先サーバ装置を自身又はクラスタを構成する全てのサーバ装置のリクエスト割振り部に通知し、セッションを利用するクライアントのリクエストをセッション情報移動先のサーバ装置に転送するように命令する。または、他のサーバ装置から送付されたセッション情報をセッション情報保存部１１６ａに格納する。
【００２０】
入力装置１１８は、キーボードやマウスなどのコンピュータに指示を入力するための装置であり、プログラム起動などの指示を入力する。表示装置１１９は、ディスプレイなどであり、サーバ装置やサーバ管理装置による処理の実行状況や実行結果などを表示する。
【００２１】
サーバ管理装置１０２は、ネットワーク１２２を介してクラスタ内のサーバ装置や負荷分散装置の状態を監視又はそれらの設定を変更する機能を有し、一般的なコンピュータを用いて実現することができる。なお、クラスタを構成するサーバ装置は何台でもよい。また、サーバ管理装置１０２はサーバ装置が備える入力装置１１８と表示装置１１９と同様の機能をもつ入力装置１２０と表示装置１２１とを備える。そして、当該入力装置１２０を介して構成変更命令処理部１１３ａへ構成変更命令を送信することや、サーバ装置外から命令を送信することも可能である。
【００２２】
負荷分散装置１０３は、ネットワーク１２２を介してクライアント１００に接続されており、クライアントリクエストを受信すると、後述するクライアントリクエストに含まれるクライアント情報を用いて、クラスタ内の１以上のサーバ装置に当該クライアントリクエストを割振る機能を有する。
【００２３】
クライアント情報を示すリクエストヘッダ及びレスポンスヘッダ情報として、例えばＣｏｏｋｉｅがある。Ｃｏｏｋｉｅには、図２に示すリクエストヘッダ２０１及びレスポンスヘッダ２０２のようにクライアントに割り付けたセッション情報を識別するセッションＩＤ（ＳｅｓｓｉｏｎＩＤ）及びそのセッション情報を保持するサーバＩＤ（ＳｅｒｖｅｒＩＤ）が含まれる。負荷分散装置１０３は、当該サーバＩＤに従って、クライアントに割り付けたセッション情報を保持するサーバ装置にクライアントリクエストを振分ける。また、Ｃｏｏｋｉｅに限らず、例えばクライアントからＰＯＳＴメソッドにより送信されたリクエストに含まれるＰＯＳＴパラメータによりクライアントに割り付けたセッション情報を識別してもよい。
【００２４】
また、図２では負荷分散装置１０３がネットワーク１２２とサーバ装置１０１との間に存在しているが、クラスタ内のサーバ装置内に負荷分散装置と同様の機能部を持たせてもよい。あるいは、クライアントが負荷分散装置１０３と同様にリクエストを割振る処理を行ってもよい。
【００２５】
セッション情報の移動について、図３に示すフローチャートに従って説明する。
サーバ管理装置１０２は各サーバ装置１０１及び負荷分散装置１０３の負荷状況を監視、制御している（ステップ３０１）。そして、サーバ管理装置１０２は、当該負荷状況や何らかの契機に応じてクラスタを構成する各サーバ装置１０１や負荷分散装置１０３に構成変更命令を送信する（ステップ３０２）。
【００２６】
契機は、例えば、クラスタが処理するリクエスト量が増減した場合、サーバ装置間でリクエスト処理数に偏りが生じた場合、一部のサーバ装置で障害が発生した場合又はサーバ管理装置１０２の入力装置１２０から管理者により構成変更の指示が入力された場合などである。構成変更は、例えば、スケールイン、スケールアウト及び仮想化環境であればクラスタを構成する仮想サーバを物理サーバ間で移動する処理などである。構成変更命令は、移動対象となるセッションを指定する情報、移動先となるサーバ装置を指定する情報を含む。そして、いま移動元サーバ装置がサーバ装置１０１ａであるとすると、構成変更命令は、移動元サーバ装置１０１ａの構成変更命令処理部１１３ａへ送信される。
【００２７】
構成変更命令を受信したサーバ装置１０１ａのセッション情報管理部１１７ａは、セッション情報を他のサーバ装置に移動する（ステップ３０３）。
そして、セッション情報の移動が完了した後、移動したセッション情報を利用するクライアント毎のセッション情報移動元サーバ装置のサーバＩＤ、セッション情報移動先サーバ装置のサーバＩＤ及びセッション情報移動開始時刻からなるセッション識別情報を、クラスタを構成する全てのサーバ装置のリクエスト割振り部へ送信する（ステップ３０４）。ここで、セッション情報の移動が完了しても、セッション情報移動中にセッション情報が変更されている場合がある。そのため、セッション情報管理部１１７ａは、セッション情報の変更の有無を確認できるまではセッション情報の消去を行わずに保存しておくものとする。なお、セッション情報の変更の有無の確認方法は後述する。また、セッション情報の移動元サーバ装置から移動先サーバ装置への移動の完了は、移動元サーバ装置が、移動先サーバ装置が送信したセッション情報の受領を示す確認信号（Ａｃｋ信号）を受信することで確認することができる。
【００２８】
次に、リクエスト割振り部１１４ａは、ステップ３０４で受信したセッション識別情報をもとに、セッション情報移動開始後に受信したセッション情報が変更されたか否かを確認する（ステップ３０５）。セッション情報移動開始後に受信したセッション情報が変更されていない場合には、リクエスト割振り部１１４ａは、セッション情報移動先サーバ装置の情報に従って新たなクライアントリクエストをセッション情報移動先サーバ装置に転送する（ステップ３０６）。他方、セッション情報移動開始後に受信したセッション情報が変更されている場合には、セッション情報が移動元サーバ装置から移動先サーバ装置へ正しく移動されておらず、以後のリクエスト処理に支障をきたすことが想定される。そのため、リクエスト割振り部１１４ａは、変更されたセッション情報を再度セッション情報移動元サーバ装置からセッション情報移動先サーバ装置に転送するように、セッション情報移動元サーバ装置のセッション情報管理部１１７ａに要求し、ステップ３０３に戻る（３０７）。このとき、複数保持しているセッション情報のうち、セッション情報の移動開始後に変更されていないセッション情報に関しては、セッション情報移動先サーバ装置の情報に従ってクライアントリクエストをセッション情報移動先サーバ装置に転送する。なお、セッション情報がセッション情報移動開始後に変更されていないことを確認する方法については後述する。
【００２９】
また、このセッション情報の移動は、クラスタの構成変更前又は後のいずれかで実行する。例えば、スケールインする場合には、セッション情報を移動した後に、構成変更に従ってサーバ装置の停止を実行することができる。また、逆にスケールアウトする場合には、構成変更によってサーバ装置の追加を実行し、追加したサーバ装置にセッション情報を移動することができる。
【００３０】
次に、図５に示すセッション情報管理部１１７ａがセッション情報を移動する時の具体的な動作について図４に示すフローチャートに従って説明する。
セッション情報管理部１１７ａは、セッション情報の移動を開始する時刻をセッション情報移動開始時刻５０１として記録する（ステップ４０１）。
【００３１】
その後、通信装置１０４ａを介して任意のクライアントに割り付けられたセッション情報を任意のサーバ装置のセッション情報管理部に移動する（ステップ４０２）。
【００３２】
セッション情報の移動が完了した後、スケールインのような自サーバ装置を停止する処理を実行する場合はステップ４０４へ、スケールアウトのような自サーバ装置を停止しない処理を実行する場合にはステップ４０５へ進む（ステップ４０３）。
【００３３】
自サーバ装置を停止する場合、セッションＩＤ５０２、クライアント毎のセッション情報の移動元サーバ装置のサーバＩＤ５０３、セッション情報の移動先サーバ装置のサーバＩＤ５０４及びセッション情報の移動開始時刻５０１からなるセッション識別情報を、クラスタを構成する全てのサーバ装置のリクエスト割振り部へ送信する（ステップ４０４）。
【００３４】
自サーバ装置を停止しない場合、クライアント毎のセッション識別情報を自サーバのリクエスト割振り部１１４ａに送信する（ステップ４０５）。
【００３５】
リクエスト割振り部１１４ａからセッション情報の移動の再実行要求が存在する場合、クライアントリクエストをセッション移動先サーバ装置に転送する処理を実行する（ステップ４０６）。
【００３６】
以上のようにセッション情報管理部１１７ａは、セッション情報の移動開始時刻５０１を記録し、リクエスト割振り部１１４ａからセッション情報の移動の再実行要求が無くなるまで繰り返す。
【００３７】
次に、図５に示すリクエスト割振り部１１４ａの動作について、図６のフローチャートに従って説明する。
リクエスト割振り部１１４ａは通信装置１０４ａを介して受信したクライアントリクエストを任意のサーバのリクエスト処理部に転送し、リクエスト処理結果をクライアントに通信装置１０４ａを介して返信する。
【００３８】
このとき、リクエスト割振り部１１４ａは、クライアント毎のセッションＩＤ５０２、最新のリクエスト受信時刻５０５及び最新のレスポンス返信時刻５０６を記録する（ステップ６０１）。なお、リクエスト受信時刻５０５とレスポンス返信時刻５０６の記録はセッション情報の移動を開始する直前に始めても良いし常に記録してもよい。但し、セッション情報を移動する際にのみ時刻を記録することによって、それ以外の時刻を記録するためのＣＰＵの負荷を減らすことができる。
【００３９】
さらに、リクエスト割振り部１１４ａはセッション情報管理部１１７ａからリクエストの転送要求及びセッション情報の移動開始時刻５０１を受信する（ステップ６０２）。
【００４０】
その後、セッション情報の移動開始時刻５０１、クライアント毎の最新のリクエスト受信時刻５０５及び最新のレスポンス返信時刻５０６を比較する（ステップ６０３）。
【００４１】
そして、最新のリクエスト受信時刻５０５及び最新のレスポンス返信時刻５０６が、セッション情報の移動開始時刻５０１よりも前であるかを判断する（ステップ６０４）。
【００４２】
最新のリクエスト受信時刻５０５及び最新のレスポンス返信時刻５０６がセッション情報の移動開始時刻５０１よりも前であるならば、セッション情報の移動開始後にセッション情報は変更されていないと判断し、セッション情報を移動したクライアントの新たなリクエストをセッション情報の移動先サーバ装置に転送する（ステップ６０５）。
【００４３】
また、最新のリクエスト受信時刻５０５あるいは最新のレスポンス返信時刻５０６よりもセッション情報の移動開始時刻５０１が後であるならば、セッション情報がセッション情報移動開始時刻５０１から変更された可能性があると判断し、変更された可能性のあるセッション情報のセッションＩＤを抽出する（ステップ６０６）。
そして、抽出されたセッションＩＤについてセッション情報の移動を再実行するようにセッション情報管理部１１７ａに要求する（ステップ６０７）。
【００４４】
なお、セッション情報管理部１１７ａからＷｅｂサーバ内のリクエスト割振り部１１４ａへのセッション情報移動の通知は、セッション情報の移動が完了した時点で行われる。従って、リクエスト割振り部１１４ａがセッション情報移動の通知を受信した時点でセッション情報の移動は完了している。そのため、上記ステップ６０４では、セッション情報移動開始時刻から移動終了時刻までの間に移動対象となっているセッション情報のリクエスト処理が行われていないかを確認できる。即ちセッション移動中に、セッション情報の変更がされていないことを確認できる。
【００４５】
また、本実施形態では、上述したように最新のリクエストの受信時刻５０５及び最新のレスポンス返信時刻５０６とセッション情報移動開始時刻５０１とを比較することで、セッション情報移動開始後にセッション情報の変更が生じているのかを確認しているが、これはセッション情報移動元サーバ装置と移動先サーバ装置のセッション情報を比較しても良い。
【００４６】
あるいは、移動中のセッションＩＤをリクエスト割り振り管理部１１４ａが保持し、移動が終了する前に同一セッションＩＤを持つリクエストを受信すればセッション情報が書き換えられた可能性があると判断してもよい。
【００４７】
また、移動中のセッション情報を利用するリクエストをセッション情報移動先サーバ装置に転送し、セッション情報の移動が終了した後に、前記転送したリクエストをセッション情報移動先サーバ装置のリクエスト処理部で処理してもよい。
【００４８】
以上のセッション管理方法及びセッション管理を実現するシステムにより、従来技術として開示されたセッション情報の移動方法では、クライアントからのリクエストを受信した後でなければセッション情報の移動を行うことができないが、本第1の実施形態では、クライアントのリクエストを待たずともクライアントに割り付けたセッション情報を任意のサーバ装置に移動できる。また、本第1の実施形態では、セッション情報移動開始後にセッション情報が変更されても、セッション情報の移動を再実行するため移動先サーバ装置と移動元サーバ装置でセッション情報が異なるような不整合は発生しない。つまり、クライアントのリクエストを受けつけながらセッション情報の移動を行うことが可能である。
【００４９】
[第２の実施形態]
次に、本発明を適用した第２の実施形態について図を用いて詳細に説明する。
図７は、第２の実施形態のクラスタを示すブロック図である。第２の実施形態のクラスタは、第1の実施形態でのクラスタの構成に加えて、セッション情報管理部１１７ａに、セッション情報移動条件比較部７０１及びセッション情報移動条件保存部７０２を更に有する。本第２の実施形態では、セッション情報保存部７０２が保持するセッション情報の数やそのセッション情報の内容を、予め指定してあるセッション情報移動条件と比較し、その結果に応じて任意のサーバ装置に任意のセッション情報を移動させることを特徴の一つとする。以下に、セッション情報移動条件に従ってセッション情報の移動を実現する本第２の実施形態を、図８に示すフローチャートを用いて説明する。
【００５０】
セッション情報移動条件比較部７０１は、任意のタイミングでクラスタを構成する任意のサーバ装置のセッション情報保存部１１６ａからセッション情報の数やセッション情報を取得する（ステップ８０１）。このとき、これらを取得するタイミングは定期的でもよいし、入力装置１１８から信号を受信した時でもよい。
【００５１】
次に、セッション情報移動条件比較部７０１は、セッション情報移動条件保存部７０２からセッション情報移動条件を取得する（ステップ８０２）。セッション情報移動条件は、図９に示すセッション情報移動条件９０１の様に、特定のセッションＩＤを有するセッション情報や、特定の応答値を有するセッション情報等で指定することができる。図９については詳細に後述する。
【００５２】
次に、セッション情報移動条件比較部７０１は、ステップ８０１で取得したセッション情報とセッション移動条件が一致するセッション情報が存在するかどうかを判断する（ステップ８０３）。
【００５３】
そして、セッション情報とセッション情報移動条件が一致するセッション情報が存在するならば、当該セッション情報をセッション情報移動先サーバ装置に移動する（８０４）。また、一致するセッション情報が存在しなければ処理を終了する。このとき、セッション情報とセッション情報移動条件との比較処理をサーバ装置の外部で実施することもできる。
【００５４】
具体的には、図１０に示すように、表示装置１１９のモニタにセッション情報の状態を表示し、そこから移動対象となるセッション情報とその移動先サーバ装置をクライアントが入力装置を介して指定することもできる。なお、前記サーバ装置の機能をクラスタ内の各サーバ装置が備えることもできる。
【００５５】
以上のようなセッション情報の移動条件に従ったセッション情報の移動では、例えば、クラスタを構成するサーバ装置が保持するセッション数が均等になるようにセッション情報を移動することにより、負荷の偏りを防止することができる。そして、負荷の偏りを防止することで、クラスタを構成するサーバ装置の一部が過負荷状態となり性能劣化となることを防ぐことができる。
【００５６】
また、本第２実施形態では、図９に示すようなセッション情報移動条件９０１とその条件に一致した実行内容９０２を記述したリストをクラスタ構成のシステムを管理する管理者が作成し、このリストをサーバ管理装置が入力装置を介して受信してもよい。また、セッション情報管理部が、過去に取得したセッション情報とリクエスト処理部での処理内容とを比較して生成してもよい。
【００５７】
例えば、ショッピングサイトにおいて、購入回数や購入金額が一定値を超えると予測されるリクエストを、他のサーバ装置よりリクエスト処理能力が高く、クライアントへの応答性能が高いと予測される高性能なサーバ装置で処理するようなセッション情報移動条件９０１と実行内容９０２を生成する。購入回数が一定回数を超えたことを判定するために、リクエスト処理部１１４ａで購入処理を実行した際のクライアントのセッション情報をセッション情報管理部１１７ａに通知し、セッション情報管理部１１７ａは、その通知回数をカウントし、保持する。リクエスト処理部１１５ａはクライアントのリクエストを受信した時に、リクエストに含まれるセッション情報をセッション情報管理部１１７ａに問い合わせて、一定回数以上の購入回数が記録されていれば、セッションＩＤにＰｒｅｍｉｅｒ追記し、セッション情報移動条件９０１に合致するセッションＩＤに変更する。
【００５８】
このとき、購入金額が一定値を超えることを判定するために、リクエスト処理部１１５ａで購入処理を実行した際の購入金額をその時のセッション情報に含まれる情報とともにセッション情報管理部１１７ａに送信する。例えば、送信したセッション情報の値（Ｖａｌｕｅ）にＣａｒが含まれている場合、一定値を超えている購入金額の回数が、他のセッション情報の値（Ｖａｌｕｅ）より多いとき、「高性能なサーバ装置にセッション情報の移動を行う」という実行内容９０２などである。
【００５９】
また、高性能なサーバ装置を選択するには、各サーバ装置のリクエスト処理能力が大きい順に順位付けしておく方法が考えられる。各サーバ装置の順位付けは、例えばサーバ管理装置が入力装置を介して受信した各サーバ装置のＣＰＵやメモリのスペック値によって行うことができる。また、各サーバ装置が通信装置を介して相互にＣＰＵやメモリのスペック値を送受信して収集し、収集した各サーバ装置のＣＰＵやメモリのスペック値を大きい順に順位付けしてもよい。
【００６０】
また、クライアントのリクエストが複数のサーバ装置のうち、特定のサーバ装置に偏ることを防ぐようなセッション情報移動条件９０１と実行内容９０２を加えてもよい。例えば、サーバ管理装置が各サーバ装置のセッション情報管理部からセッション情報の保持数を取得する。サーバ管理装置が収集した各サーバ装置のセッション情報の保持数の偏差を計算し、セッション情報移動条件９０１に従って１．５より大きい場合には、偏りが存在すると判定する。そして、その偏りを低下させるために、サーバ管理装置は実行内容に従ってセッション保持数が最も多いサーバから最も少ないサーバにセッション情報を移動するようにしてもよい。
【００６１】
[第３の実施形態]
次に、本発明を適用した第３の実施形態について図を用いて詳細に説明する。
本第３の実施形態は、セッション情報を移動する際にセッション情報を複製し、移動元サーバ装置及び移動先サーバ装置で同じセッション情報を保持する。そして、同一セッション情報を用いて同一リクエストを処理することで、セッション情報移動元サーバ装置及び移動先サーバ装置でセッション情報を同一に保つセッション管理方法を実現するものである。
【００６２】
また、本第３の実施形態は、同一のクライアントリクエストを処理するので、処理結果をリクエスト送信元であるクライアントに複数返信することになるが、このような重複する返信を防止することを実現することができるようになっている。
【００６３】
更には、本第３の実施形態は、各サーバ装置がクライアントリクエストを処理するために必要なデータを格納した共有装置（データ等を一元的に集約した装置）を更に設ける構成となっている。上述のように、各サーバ装置は同一のクライアントリクエストを処理する場合に、共有装置へのアクセスも重複し、この重複により生ずる共有装置へのアクセス負荷の軽減やエラー発生等の回避を実現することができるようになっている。
【００６４】
図１１に、第３の実施形態のクラスタを示す。第３の実施形態は、第１又は第２の実施形態でのクラスタに加えて、負荷分散装置１０３内に、リクエスト複製部１１０１及びレスポンス比較部１１０２を更に有する点を特徴の一つとする。
また、セッション情報の複製は、移動元サーバ装置のセッション情報管理部１１７ｃから移動先サーバ装置のセッション情報管理部に移動する際に通信装置１０４ｃを介して行う。
【００６５】
リクエスト複製部１１０１は、クライアントからのリクエストを複製し、各サーバ装置にリクエストを割り振る。そして、各サーバ装置のリクエスト処理部がリクエスト処理を実行し、最初に負荷分散装置１０３に返信したリクエスト処理結果を、レスポンス比較部１１０２が、クライアントに返信する。このレスポンス比較部１１０２の処理によって、クライアントがレスポンスを二重に受信することを防ぐ。
【００６６】
また、同一セッション情報を持つサーバ装置が３以上ある場合に、リクエスト複製部１１０１がクライアントリクエストを３以上に複製し、各サーバ装置に送付してもよい。そして、各サーバ装置での処理結果を比較して、同じ処理結果が多数ある方の処理結果をクライアントに返す。このように各サーバ装置での処理結果を比較することで、一部のサーバ装置に障害が発生して不正な処理結果が発生しても、正常に稼働するサーバ装置での処理結果を用いて、クライアントに正常な処理結果を送付することができる。
【００６７】
更に、クライアントからのリクエストを複製して、複数のサーバ装置で同一リクエストを処理する場合に、複数のサーバ装置からセッション共有以外の目的で共有してアクセスされる共有装置１１０４があってもよい。
共有装置１１０４は、例えば、データベース装置やＷｅｂサービスを提供するサーバ装置である。複数のサーバ装置で同一リクエストを処理して単一の共有装置にアクセスする場合、共有装置が各サーバ装置からのアクセスにより同一の処理を多重に実行し、共有装置の状態が不正になる場合がある。例えば、クライアントが送付するリクエスト数を数えるデータベース装置が共有装置１１０４である場合を考える。この場合、クライアントのリクエストは１つであるが、リクエスト複製部１１０１がリクエストを２以上に複製して２以上のサーバ装置に送付する。各サーバ装置は受信したリクエストを処理して、共有装置１１０４であるデータベース装置に別々にアクセスする。この時、クライアントのリクエストは１つでアクセス数の増分は１であることが正しいが、共有装置１１０４へのアクセスは２以上になるためアクセス数の増分が２以上になる。
【００６８】
このような、共有装置１１０４での処理が多重に実行されることを防ぐために、図１１に示す共有部アクセス装置１１０５を追加する。この共有部アクセス装置１１０５は、共有装置１１０４へのリクエストの送受信を仲介する機能を有する。
なお、共有アクセス装置１１０５は、サーバ装置と同様に一般的なコンピュータを用いて実現することができる。また、共有部アクセス装置１１０５は、各サーバ装置の一機能としてもよい。
【００６９】
共有部アクセス装置１１０５の具体的な機能を図１２のフローチャートに従って説明する。
共有部アクセス装置１１０５は、任意のサーバ装置のリクエスト処理部から共有装置１１０４へのリクエストを受信する（ステップ１２０１）。
【００７０】
次いで、共有部アクセス装置１１０５は、受信したリクエストと同一リクエストが、共有装置１１０４のメモリ又は記憶領域に記憶されているか判定する（ステップ１２０２）。記憶されていなければ、ステップ１２０３に進む。記憶されていればステップ１２０５に進む。
【００７１】
ステップ１２０３で、共有部アクセス装置１１０５は、受信した共有装置１１０４へのリクエストをメモリ又は記憶領域に記憶する。その後、共有部アクセス装置１１０５は、共有装置１１０４にリクエストを送付し、リクエスト処理結果を受信する。
【００７２】
そして、受信したリクエスト処理結果を、共有部アクセス装置１１０５のメモリ又は記憶領域に記憶する（ステップ１２０４）。
【００７３】
その後、共有部アクセス装置１１０５へリクエストを送信したリクエスト処理部に、前記リクエスト処理結果を返信する（ステップ１２０６）。
【００７４】
他方、ステップ１２０５で、共有部アクセス装置１１０５は、自装置内のメモリ又は記憶領域に、前記リクエストの処理結果が記憶されているか確認する。記憶されていれば、そのリクエスト処理結果を共有部アクセス装置１１０５へリクエストを送信したリクエスト処理部に前記リクエスト処理結果を返信する（ステップ１２０６）。記憶されていなければリクエスト処理結果が記憶されるまで待機する。
【００７５】
以上のセッション情報の複製により、クラスタを構成する複数のサーバ装置で、同一リクエストを処理することができる。そのため、一部のサーバ装置が障害によりリクエスト処理中に停止しても他のサーバ装置で処理したリクエスト処理結果をクライアントに返信でき、可用性を向上させることができる。
また、障害が発生したサーバ装置が回復した場合には、稼動中のサーバ装置の保持するセッション情報との同期を行う必要がある。このとき、本第３実施形態では、各サーバ装置でセッション情報を保持するように構成されているため、特定のサーバ装置の停止を行うことなく迅速にサーバ装置の回復を行うことができる。
【００７６】
その他にも、セッション情報を複製することで、ある特定時点でのサーバ装置のメモリ状態とセッション情報を保持したまま、セッションを利用するクライアントリクエストを継続することもできる。例えば、性能障害などサービス停止を伴わない障害が発生した場合に、セッション情報の移動先サーバ装置でクライアントリクエスト処理を継続しながら、セッション情報の複製元で障害発生時のセッション情報を保持する。このように、ある特定時点でのサーバ装置のメモリ状態とセッション情報とを保持することで、サーバ装置の状態を障害発生時の原因解析のために利用することができる。
【００７７】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上述した実施形態は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、各実施形態の構成の一部について、他の構成の追加、削除及び置換をすることも可能である。
【００７８】
更に、上記の各構成、機能、処理部及び処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード及びＤＶＤ等の記録媒体に置くこともできる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００７９】
１０１  サーバ装置
１０２  サーバ管理装置
１０３  負荷分散装置
１０４  通信装置
１０５  ＣＰＵ
１０７  記憶装置
１０８  データ
１０９  プログラム
１１０  メモリ
１１１  Ｗｅｂサーバ
１１２  ＡＰサーバ
１１３  構成変更命令処理部
１１４  リクエスト割振り部
１１５  リクエスト処理部
１１６  セッション情報保存部
１１７  セッション情報管理部
７０１  セッション情報移動条件比較部
７０２  セッション情報移動条件保存部
１１０１  リクエスト複製部
１１０２  レスポンス比較部
１１０３  通信装置
１１０４  共有装置
１１０５  共有部アクセス装置
【図１】
2012103879.tif 000003
【図２】
2012103879.tif 000004
【図３】
2012103879.tif 000005
【図４】
2012103879.tif 000006
【図５】
2012103879.tif 000007
【図６】
2012103879.tif 000008
【図７】
2012103879.tif 000009
【図８】
2012103879.tif 000010
【図９】
2012103879.tif 000011
【図１０】
2012103879.tif 000012
【図１１】
2012103879.tif 000013
【図１２】
2012103879.tif 000014