説明

セッション管理方法、セッション管理システム及びプログラム

【課題】複数のサーバ装置を利用したクラスタにおいて、任意のタイミングでセッション情報を移動する。
【解決手段】クライアントリクエストの処理結果をクライアントに返信するリクエスト割振り部と、受信したリクエストを処理するリクエスト処理部と、前記リクエストのセッション情報を管理するセッション情報管理部とを有するサーバ装置を複数備えてなるシステムでのセッション管理方法であって、第1のサーバ装置のセッション情報管理部は、第2のサーバ装置のセッション情報管理部にセッション情報を移動し、第1のサーバ装置のリクエスト割振り部は、前記第1のサーバ装置のリクエスト割振り部がリクエストを受信したリクエスト受信時刻及びクライアントに処理結果を返信したレスポンス返信時刻より前記セッション情報の移動時刻が遅い場合、前記セッション情報が移動した移動先情報に基づいて新たに受信したリクエストを第2のサーバ装置に割り振る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セッション管理方法、セッション管理システム及びプログラムに関する。
【背景技術】
【0002】
本技術分野の背景技術として、特表2009−501373号公報(特許文献1)がある。特許文献1には、複数のサーバ装置でクラスタを構成したシステムが持つクライアントのセッション情報を、セッション共有装置及びセッション共有方法を用いずに移動するシステムが開示されている。クラスタとは、クライアントからのリクエストを受信してリクエスト処理結果を返信するサーバ装置群で構成するシステムを示しており、各サーバ装置へのリクエスト割り振りは、負荷分散装置が実行する。また、各サーバ装置でクライアントのリクエストを処理する際には、サーバ装置ごとにクライアントの状態を示すセッション情報を参照、生成、変更、追加又は削除することでクライアントに応じたリクエスト処理を実現している。
【0003】
特許文献1には、分析コンポーネントからセッション情報の移動命令を受信すると、クライアントリクエストにリダイレクト・コマンドを追加して、セッション情報の移動を行う技術が開示されている。このとき、リクエストにリダイレクト・コマンドを追記するため、リクエストの返信であるレスポンスにリダイレクト・コマンドを追記するための命令文を含める。そして、クライアントが前記レスポンスを受信した後、クライアントが前記移動されたセッション情報に由来するリクエストを再度送信する場合、クライアントがレスポンスに含まれる命令文に従いリクエストをセッション情報の移動先となる新たなサーバ装置に転送する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2009−501373号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1では、クライアントリクエストに対するレスポンスにリダイレクト・コマンドを追記する命令文を含めるため、セッション情報を移動するためにはクライアントリクエストを受信することが前提となる。つまり、クライアントリクエストを受信するとリクエストの転送設定を含むセッション情報の移動が行われる。
【0006】
従って、特許文献1に開示されたセッション情報の移動方法では、セッション情報の移動命令を受信しても、上記したようにクライアントレスポンスにリダイレクト・コマンドを追記する命令文を含めるため、クライアントリクエストを受信しないとセッション情報の移動を行うことができない。
【0007】
そのため、例えば、特定のサーバ装置を停止するスケールインを行う場合には、停止するサーバ装置が保持するセッション情報と関係する全クライアントのリクエストを受信するか、それらのセッション情報がタイムアウトにより無効化されるまでサーバ装置の停止を待つ必要がある。また、ある特定のサーバ装置にセッション情報が集中し、新たにサーバ装置を増やすようなスケールアウトを行う場合には、クライアントリクエストを受信した後でなければセッション情報の移動を行うことができない。
【0008】
本発明は、複数のサーバ装置を利用したクラスタにおいて、任意のタイミングでセッションの移動を実現することを目的とする。
【課題を解決するための手段】
【0009】
本発明の代表的な一形態によれば、クライアントリクエストの処理結果をクライアントに返信するリクエスト割振り部と、受信したリクエストを処理するリクエスト処理部と、前記リクエストのセッション情報を管理するセッション情報管理部とを有するサーバ装置を複数備えてなるシステムでのセッション管理方法であって、第1のサーバ装置のセッション情報管理部は、第2のサーバ装置のセッション情報管理部にセッション情報を移動し、第1のサーバ装置のリクエスト割振り部は、前記第1のサーバ装置のリクエスト割振り部がリクエストを受信したリクエスト受信時刻及びクライアントに処理結果を返信したレスポンス返信時刻より前記セッション情報の移動時刻が遅い場合、前記セッション情報が移動した移動先情報に基づいて、新たに受信したリクエストを第2のサーバ装置に割り振ることを特徴とする。
【発明の効果】
【0010】
本発明によれば、クライアントリクエストの有無に関係なく任意のタイミングでセッション情報を移動することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0011】
【図1】本発明を適用したセッション管理方法を実現するクラスタの全体構成を示す図である。
【図2】本発明を適用した第1の実施形態のクラスタにおける負荷分散装置が識別するリクエストヘッダの例を示す図である。
【図3】本発明を適用した第1の実施形態におけるセッション情報移動処理の流れを示すフローチャートである。
【図4】本発明を適用した第1の実施形態におけるセッション情報移動時のセッション情報管理部の処理の流れを示すフローチャートである。
【図5】本発明を適用した第1の実施形態におけるセッション情報移動時にリクエスト割振り部が保持するセッション識別情報及び時刻情報を示す図である。
【図6】本発明を適用した第1の実施形態におけるセッション情報移動時のリクエスト割り振り部の処理の流れを示すフローチャートである。
【図7】本発明を適用した第2の実施形態におけるセッション情報移動条件に従いセッション情報の移動処理を実現するクラスタの全体構成を示す図である。
【図8】本発明を適用した第2の実施形態におけるセッション情報移動時のセッション情報移動条件比較部の処理の流れを示すフローチャートである。
【図9】本発明を適用した第2の実施形態におけるセッション情報移動条件の例を示す図である。
【図10】本発明を適用したセッション情報とセッション情報移動情報の表示例を示す図である。
【図11】本発明を適用した第3の実施形態におけるリクエスト処理を多重実行するクラスタの全体構成を示す図である。
【図12】本発明を適用した第3の実施形態における共有部アクセス装置の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0012】
[第1の実施形態]
以下、図面を用いて本発明を実施するための第1の実施形態について説明する。
図1は、本発明を適用したクラスタを示す。
クラスタは、サーバ装置101(101a、101b、101c)と、サーバ管理装置102と、負荷分散装置103とから主に構成される。以下、サーバ装置101aを用いて本発明の構成について説明する。
【0013】
サーバ装置101aは、通信装置104a、メモリ110a、CPU105a、記憶装置107a、入力装置118及び表示装置119を備え、通信装置104aを介して、サーバ管理装置102及び負荷分散装置103に接続している。通信装置104aは、ネットワーク122などを介して、他の装置と各種データやコマンドを交換する。メモリ110aは、サーバ装置が処理を実行する各種プログラム及び一時的なデータを保持する。CPU105aは、メモリに格納される各種プログラムを実行する。また、CPU105aは時刻管理を行う機能部であるクロック106aを有する。
【0014】
サーバ装置を備える記憶装置107aは、サーバ装置が処理を実行するための各種プログラム及び当該プログラムの実行に必要なデータを保存する。後述する構成変更処理部113a、Webサーバ111a及びAPサーバ112aは、記憶装置107aに記憶されているプログラム109aやデータ108aをメモリ上110aに読みだし、それをCPU105aで実行することで動作する。なお、Webサーバ111a及びAPサーバ112aは同一のCPU105aで、図示しないOS(オペレーティングシステム)上で動作している。Webサーバ111aは、リクエスト割振り部114aを有する。APサーバ112aは、リクエスト処理部115a、セッション情報保存部116a及びセッション情報管理部117aといった機能部を有する。
【0015】
構成変更命令処理部113aは、クラスタの構成変更命令をサーバ管理装置102から通信装置104aを介して受信する。構成変更命令は例えば、サーバ装置のスケールインやスケールアウトの要求である。構成変更命令処理部113aは、受信した構成変更命令に従ってセッション情報の移動を判断する。セッション情報の一部又は全部を他のサーバに移動すると判断した場合には、移動先のセッション情報管理部に移動するセッション情報を指定してセッション情報の移動を命令する。
【0016】
リクエスト割振り部114aは、セッション情報を管理するセッション情報管理部117aから受け取った情報に従って受信したクライアントリクエストを、自サーバ装置のリクエスト処理部115a又は通信装置104aを介して他のサーバ装置のリクエスト処理部へ転送する。
【0017】
リクエスト処理部115aは、リクエスト割振り部114aから割振られたクライアントリクエストを処理し、その結果をリクエスト割振り部114aへ返信する。リクエスト処理の際に、セッション情報の参照、生成、変更、追加、削除をセッション情報保存部116aに要求する。
【0018】
セッション情報保存部116aは、クライアントごとのセッション情報をメモリに保存する。そして、セッション情報保存部116aは、リクエスト処理部115aからのセッション情報の参照、生成、変更、追加、削除の要求に対して、該当するセッション情報を当該要求に応じて処理するか、リクエスト割振り部114aに送信する。なお、セッション情報の保存先は、メモリに限定せずサーバ装置内の記憶装置でもよい。
【0019】
セッション情報管理部117aは、構成変更命令処理部113aからの構成変更命令により、命令されたセッション情報をセッション情報保存部116aから選択し、命令されたサーバ装置のセッション情報管理部に送信する。そして、セッション情報送信後には、セッション情報の移動先サーバ装置を自身又はクラスタを構成する全てのサーバ装置のリクエスト割振り部に通知し、セッションを利用するクライアントのリクエストをセッション情報移動先のサーバ装置に転送するように命令する。または、他のサーバ装置から送付されたセッション情報をセッション情報保存部116aに格納する。
【0020】
入力装置118は、キーボードやマウスなどのコンピュータに指示を入力するための装置であり、プログラム起動などの指示を入力する。表示装置119は、ディスプレイなどであり、サーバ装置やサーバ管理装置による処理の実行状況や実行結果などを表示する。
【0021】
サーバ管理装置102は、ネットワーク122を介してクラスタ内のサーバ装置や負荷分散装置の状態を監視又はそれらの設定を変更する機能を有し、一般的なコンピュータを用いて実現することができる。なお、クラスタを構成するサーバ装置は何台でもよい。また、サーバ管理装置102はサーバ装置が備える入力装置118と表示装置119と同様の機能をもつ入力装置120と表示装置121とを備える。そして、当該入力装置120を介して構成変更命令処理部113aへ構成変更命令を送信することや、サーバ装置外から命令を送信することも可能である。
【0022】
負荷分散装置103は、ネットワーク122を介してクライアント100に接続されており、クライアントリクエストを受信すると、後述するクライアントリクエストに含まれるクライアント情報を用いて、クラスタ内の1以上のサーバ装置に当該クライアントリクエストを割振る機能を有する。
【0023】
クライアント情報を示すリクエストヘッダ及びレスポンスヘッダ情報として、例えばCookieがある。Cookieには、図2に示すリクエストヘッダ201及びレスポンスヘッダ202のようにクライアントに割り付けたセッション情報を識別するセッションID(SessionID)及びそのセッション情報を保持するサーバID(ServerID)が含まれる。負荷分散装置103は、当該サーバIDに従って、クライアントに割り付けたセッション情報を保持するサーバ装置にクライアントリクエストを振分ける。また、Cookieに限らず、例えばクライアントからPOSTメソッドにより送信されたリクエストに含まれるPOSTパラメータによりクライアントに割り付けたセッション情報を識別してもよい。
【0024】
また、図2では負荷分散装置103がネットワーク122とサーバ装置101との間に存在しているが、クラスタ内のサーバ装置内に負荷分散装置と同様の機能部を持たせてもよい。あるいは、クライアントが負荷分散装置103と同様にリクエストを割振る処理を行ってもよい。
【0025】
セッション情報の移動について、図3に示すフローチャートに従って説明する。
サーバ管理装置102は各サーバ装置101及び負荷分散装置103の負荷状況を監視、制御している(ステップ301)。そして、サーバ管理装置102は、当該負荷状況や何らかの契機に応じてクラスタを構成する各サーバ装置101や負荷分散装置103に構成変更命令を送信する(ステップ302)。
【0026】
契機は、例えば、クラスタが処理するリクエスト量が増減した場合、サーバ装置間でリクエスト処理数に偏りが生じた場合、一部のサーバ装置で障害が発生した場合又はサーバ管理装置102の入力装置120から管理者により構成変更の指示が入力された場合などである。構成変更は、例えば、スケールイン、スケールアウト及び仮想化環境であればクラスタを構成する仮想サーバを物理サーバ間で移動する処理などである。構成変更命令は、移動対象となるセッションを指定する情報、移動先となるサーバ装置を指定する情報を含む。そして、いま移動元サーバ装置がサーバ装置101aであるとすると、構成変更命令は、移動元サーバ装置101aの構成変更命令処理部113aへ送信される。
【0027】
構成変更命令を受信したサーバ装置101aのセッション情報管理部117aは、セッション情報を他のサーバ装置に移動する(ステップ303)。
そして、セッション情報の移動が完了した後、移動したセッション情報を利用するクライアント毎のセッション情報移動元サーバ装置のサーバID、セッション情報移動先サーバ装置のサーバID及びセッション情報移動開始時刻からなるセッション識別情報を、クラスタを構成する全てのサーバ装置のリクエスト割振り部へ送信する(ステップ304)。ここで、セッション情報の移動が完了しても、セッション情報移動中にセッション情報が変更されている場合がある。そのため、セッション情報管理部117aは、セッション情報の変更の有無を確認できるまではセッション情報の消去を行わずに保存しておくものとする。なお、セッション情報の変更の有無の確認方法は後述する。また、セッション情報の移動元サーバ装置から移動先サーバ装置への移動の完了は、移動元サーバ装置が、移動先サーバ装置が送信したセッション情報の受領を示す確認信号(Ack信号)を受信することで確認することができる。
【0028】
次に、リクエスト割振り部114aは、ステップ304で受信したセッション識別情報をもとに、セッション情報移動開始後に受信したセッション情報が変更されたか否かを確認する(ステップ305)。セッション情報移動開始後に受信したセッション情報が変更されていない場合には、リクエスト割振り部114aは、セッション情報移動先サーバ装置の情報に従って新たなクライアントリクエストをセッション情報移動先サーバ装置に転送する(ステップ306)。他方、セッション情報移動開始後に受信したセッション情報が変更されている場合には、セッション情報が移動元サーバ装置から移動先サーバ装置へ正しく移動されておらず、以後のリクエスト処理に支障をきたすことが想定される。そのため、リクエスト割振り部114aは、変更されたセッション情報を再度セッション情報移動元サーバ装置からセッション情報移動先サーバ装置に転送するように、セッション情報移動元サーバ装置のセッション情報管理部117aに要求し、ステップ303に戻る(307)。このとき、複数保持しているセッション情報のうち、セッション情報の移動開始後に変更されていないセッション情報に関しては、セッション情報移動先サーバ装置の情報に従ってクライアントリクエストをセッション情報移動先サーバ装置に転送する。なお、セッション情報がセッション情報移動開始後に変更されていないことを確認する方法については後述する。
【0029】
また、このセッション情報の移動は、クラスタの構成変更前又は後のいずれかで実行する。例えば、スケールインする場合には、セッション情報を移動した後に、構成変更に従ってサーバ装置の停止を実行することができる。また、逆にスケールアウトする場合には、構成変更によってサーバ装置の追加を実行し、追加したサーバ装置にセッション情報を移動することができる。
【0030】
次に、図5に示すセッション情報管理部117aがセッション情報を移動する時の具体的な動作について図4に示すフローチャートに従って説明する。
セッション情報管理部117aは、セッション情報の移動を開始する時刻をセッション情報移動開始時刻501として記録する(ステップ401)。
【0031】
その後、通信装置104aを介して任意のクライアントに割り付けられたセッション情報を任意のサーバ装置のセッション情報管理部に移動する(ステップ402)。
【0032】
セッション情報の移動が完了した後、スケールインのような自サーバ装置を停止する処理を実行する場合はステップ404へ、スケールアウトのような自サーバ装置を停止しない処理を実行する場合にはステップ405へ進む(ステップ403)。
【0033】
自サーバ装置を停止する場合、セッションID502、クライアント毎のセッション情報の移動元サーバ装置のサーバID503、セッション情報の移動先サーバ装置のサーバID504及びセッション情報の移動開始時刻501からなるセッション識別情報を、クラスタを構成する全てのサーバ装置のリクエスト割振り部へ送信する(ステップ404)。
【0034】
自サーバ装置を停止しない場合、クライアント毎のセッション識別情報を自サーバのリクエスト割振り部114aに送信する(ステップ405)。
【0035】
リクエスト割振り部114aからセッション情報の移動の再実行要求が存在する場合、クライアントリクエストをセッション移動先サーバ装置に転送する処理を実行する(ステップ406)。
【0036】
以上のようにセッション情報管理部117aは、セッション情報の移動開始時刻501を記録し、リクエスト割振り部114aからセッション情報の移動の再実行要求が無くなるまで繰り返す。
【0037】
次に、図5に示すリクエスト割振り部114aの動作について、図6のフローチャートに従って説明する。
リクエスト割振り部114aは通信装置104aを介して受信したクライアントリクエストを任意のサーバのリクエスト処理部に転送し、リクエスト処理結果をクライアントに通信装置104aを介して返信する。
【0038】
このとき、リクエスト割振り部114aは、クライアント毎のセッションID502、最新のリクエスト受信時刻505及び最新のレスポンス返信時刻506を記録する(ステップ601)。なお、リクエスト受信時刻505とレスポンス返信時刻506の記録はセッション情報の移動を開始する直前に始めても良いし常に記録してもよい。但し、セッション情報を移動する際にのみ時刻を記録することによって、それ以外の時刻を記録するためのCPUの負荷を減らすことができる。
【0039】
さらに、リクエスト割振り部114aはセッション情報管理部117aからリクエストの転送要求及びセッション情報の移動開始時刻501を受信する(ステップ602)。
【0040】
その後、セッション情報の移動開始時刻501、クライアント毎の最新のリクエスト受信時刻505及び最新のレスポンス返信時刻506を比較する(ステップ603)。
【0041】
そして、最新のリクエスト受信時刻505及び最新のレスポンス返信時刻506が、セッション情報の移動開始時刻501よりも前であるかを判断する(ステップ604)。
【0042】
最新のリクエスト受信時刻505及び最新のレスポンス返信時刻506がセッション情報の移動開始時刻501よりも前であるならば、セッション情報の移動開始後にセッション情報は変更されていないと判断し、セッション情報を移動したクライアントの新たなリクエストをセッション情報の移動先サーバ装置に転送する(ステップ605)。
【0043】
また、最新のリクエスト受信時刻505あるいは最新のレスポンス返信時刻506よりもセッション情報の移動開始時刻501が後であるならば、セッション情報がセッション情報移動開始時刻501から変更された可能性があると判断し、変更された可能性のあるセッション情報のセッションIDを抽出する(ステップ606)。
そして、抽出されたセッションIDについてセッション情報の移動を再実行するようにセッション情報管理部117aに要求する(ステップ607)。
【0044】
なお、セッション情報管理部117aからWebサーバ内のリクエスト割振り部114aへのセッション情報移動の通知は、セッション情報の移動が完了した時点で行われる。従って、リクエスト割振り部114aがセッション情報移動の通知を受信した時点でセッション情報の移動は完了している。そのため、上記ステップ604では、セッション情報移動開始時刻から移動終了時刻までの間に移動対象となっているセッション情報のリクエスト処理が行われていないかを確認できる。即ちセッション移動中に、セッション情報の変更がされていないことを確認できる。
【0045】
また、本実施形態では、上述したように最新のリクエストの受信時刻505及び最新のレスポンス返信時刻506とセッション情報移動開始時刻501とを比較することで、セッション情報移動開始後にセッション情報の変更が生じているのかを確認しているが、これはセッション情報移動元サーバ装置と移動先サーバ装置のセッション情報を比較しても良い。
【0046】
あるいは、移動中のセッションIDをリクエスト割り振り管理部114aが保持し、移動が終了する前に同一セッションIDを持つリクエストを受信すればセッション情報が書き換えられた可能性があると判断してもよい。
【0047】
また、移動中のセッション情報を利用するリクエストをセッション情報移動先サーバ装置に転送し、セッション情報の移動が終了した後に、前記転送したリクエストをセッション情報移動先サーバ装置のリクエスト処理部で処理してもよい。
【0048】
以上のセッション管理方法及びセッション管理を実現するシステムにより、従来技術として開示されたセッション情報の移動方法では、クライアントからのリクエストを受信した後でなければセッション情報の移動を行うことができないが、本第1の実施形態では、クライアントのリクエストを待たずともクライアントに割り付けたセッション情報を任意のサーバ装置に移動できる。また、本第1の実施形態では、セッション情報移動開始後にセッション情報が変更されても、セッション情報の移動を再実行するため移動先サーバ装置と移動元サーバ装置でセッション情報が異なるような不整合は発生しない。つまり、クライアントのリクエストを受けつけながらセッション情報の移動を行うことが可能である。
【0049】
[第2の実施形態]
次に、本発明を適用した第2の実施形態について図を用いて詳細に説明する。
図7は、第2の実施形態のクラスタを示すブロック図である。第2の実施形態のクラスタは、第1の実施形態でのクラスタの構成に加えて、セッション情報管理部117aに、セッション情報移動条件比較部701及びセッション情報移動条件保存部702を更に有する。本第2の実施形態では、セッション情報保存部702が保持するセッション情報の数やそのセッション情報の内容を、予め指定してあるセッション情報移動条件と比較し、その結果に応じて任意のサーバ装置に任意のセッション情報を移動させることを特徴の一つとする。以下に、セッション情報移動条件に従ってセッション情報の移動を実現する本第2の実施形態を、図8に示すフローチャートを用いて説明する。
【0050】
セッション情報移動条件比較部701は、任意のタイミングでクラスタを構成する任意のサーバ装置のセッション情報保存部116aからセッション情報の数やセッション情報を取得する(ステップ801)。このとき、これらを取得するタイミングは定期的でもよいし、入力装置118から信号を受信した時でもよい。
【0051】
次に、セッション情報移動条件比較部701は、セッション情報移動条件保存部702からセッション情報移動条件を取得する(ステップ802)。セッション情報移動条件は、図9に示すセッション情報移動条件901の様に、特定のセッションIDを有するセッション情報や、特定の応答値を有するセッション情報等で指定することができる。図9については詳細に後述する。
【0052】
次に、セッション情報移動条件比較部701は、ステップ801で取得したセッション情報とセッション移動条件が一致するセッション情報が存在するかどうかを判断する(ステップ803)。
【0053】
そして、セッション情報とセッション情報移動条件が一致するセッション情報が存在するならば、当該セッション情報をセッション情報移動先サーバ装置に移動する(804)。また、一致するセッション情報が存在しなければ処理を終了する。このとき、セッション情報とセッション情報移動条件との比較処理をサーバ装置の外部で実施することもできる。
【0054】
具体的には、図10に示すように、表示装置119のモニタにセッション情報の状態を表示し、そこから移動対象となるセッション情報とその移動先サーバ装置をクライアントが入力装置を介して指定することもできる。なお、前記サーバ装置の機能をクラスタ内の各サーバ装置が備えることもできる。
【0055】
以上のようなセッション情報の移動条件に従ったセッション情報の移動では、例えば、クラスタを構成するサーバ装置が保持するセッション数が均等になるようにセッション情報を移動することにより、負荷の偏りを防止することができる。そして、負荷の偏りを防止することで、クラスタを構成するサーバ装置の一部が過負荷状態となり性能劣化となることを防ぐことができる。
【0056】
また、本第2実施形態では、図9に示すようなセッション情報移動条件901とその条件に一致した実行内容902を記述したリストをクラスタ構成のシステムを管理する管理者が作成し、このリストをサーバ管理装置が入力装置を介して受信してもよい。また、セッション情報管理部が、過去に取得したセッション情報とリクエスト処理部での処理内容とを比較して生成してもよい。
【0057】
例えば、ショッピングサイトにおいて、購入回数や購入金額が一定値を超えると予測されるリクエストを、他のサーバ装置よりリクエスト処理能力が高く、クライアントへの応答性能が高いと予測される高性能なサーバ装置で処理するようなセッション情報移動条件901と実行内容902を生成する。購入回数が一定回数を超えたことを判定するために、リクエスト処理部114aで購入処理を実行した際のクライアントのセッション情報をセッション情報管理部117aに通知し、セッション情報管理部117aは、その通知回数をカウントし、保持する。リクエスト処理部115aはクライアントのリクエストを受信した時に、リクエストに含まれるセッション情報をセッション情報管理部117aに問い合わせて、一定回数以上の購入回数が記録されていれば、セッションIDにPremier追記し、セッション情報移動条件901に合致するセッションIDに変更する。
【0058】
このとき、購入金額が一定値を超えることを判定するために、リクエスト処理部115aで購入処理を実行した際の購入金額をその時のセッション情報に含まれる情報とともにセッション情報管理部117aに送信する。例えば、送信したセッション情報の値(Value)にCarが含まれている場合、一定値を超えている購入金額の回数が、他のセッション情報の値(Value)より多いとき、「高性能なサーバ装置にセッション情報の移動を行う」という実行内容902などである。
【0059】
また、高性能なサーバ装置を選択するには、各サーバ装置のリクエスト処理能力が大きい順に順位付けしておく方法が考えられる。各サーバ装置の順位付けは、例えばサーバ管理装置が入力装置を介して受信した各サーバ装置のCPUやメモリのスペック値によって行うことができる。また、各サーバ装置が通信装置を介して相互にCPUやメモリのスペック値を送受信して収集し、収集した各サーバ装置のCPUやメモリのスペック値を大きい順に順位付けしてもよい。
【0060】
また、クライアントのリクエストが複数のサーバ装置のうち、特定のサーバ装置に偏ることを防ぐようなセッション情報移動条件901と実行内容902を加えてもよい。例えば、サーバ管理装置が各サーバ装置のセッション情報管理部からセッション情報の保持数を取得する。サーバ管理装置が収集した各サーバ装置のセッション情報の保持数の偏差を計算し、セッション情報移動条件901に従って1.5より大きい場合には、偏りが存在すると判定する。そして、その偏りを低下させるために、サーバ管理装置は実行内容に従ってセッション保持数が最も多いサーバから最も少ないサーバにセッション情報を移動するようにしてもよい。
【0061】
[第3の実施形態]
次に、本発明を適用した第3の実施形態について図を用いて詳細に説明する。
本第3の実施形態は、セッション情報を移動する際にセッション情報を複製し、移動元サーバ装置及び移動先サーバ装置で同じセッション情報を保持する。そして、同一セッション情報を用いて同一リクエストを処理することで、セッション情報移動元サーバ装置及び移動先サーバ装置でセッション情報を同一に保つセッション管理方法を実現するものである。
【0062】
また、本第3の実施形態は、同一のクライアントリクエストを処理するので、処理結果をリクエスト送信元であるクライアントに複数返信することになるが、このような重複する返信を防止することを実現することができるようになっている。
【0063】
更には、本第3の実施形態は、各サーバ装置がクライアントリクエストを処理するために必要なデータを格納した共有装置(データ等を一元的に集約した装置)を更に設ける構成となっている。上述のように、各サーバ装置は同一のクライアントリクエストを処理する場合に、共有装置へのアクセスも重複し、この重複により生ずる共有装置へのアクセス負荷の軽減やエラー発生等の回避を実現することができるようになっている。
【0064】
図11に、第3の実施形態のクラスタを示す。第3の実施形態は、第1又は第2の実施形態でのクラスタに加えて、負荷分散装置103内に、リクエスト複製部1101及びレスポンス比較部1102を更に有する点を特徴の一つとする。
また、セッション情報の複製は、移動元サーバ装置のセッション情報管理部117cから移動先サーバ装置のセッション情報管理部に移動する際に通信装置104cを介して行う。
【0065】
リクエスト複製部1101は、クライアントからのリクエストを複製し、各サーバ装置にリクエストを割り振る。そして、各サーバ装置のリクエスト処理部がリクエスト処理を実行し、最初に負荷分散装置103に返信したリクエスト処理結果を、レスポンス比較部1102が、クライアントに返信する。このレスポンス比較部1102の処理によって、クライアントがレスポンスを二重に受信することを防ぐ。
【0066】
また、同一セッション情報を持つサーバ装置が3以上ある場合に、リクエスト複製部1101がクライアントリクエストを3以上に複製し、各サーバ装置に送付してもよい。そして、各サーバ装置での処理結果を比較して、同じ処理結果が多数ある方の処理結果をクライアントに返す。このように各サーバ装置での処理結果を比較することで、一部のサーバ装置に障害が発生して不正な処理結果が発生しても、正常に稼働するサーバ装置での処理結果を用いて、クライアントに正常な処理結果を送付することができる。
【0067】
更に、クライアントからのリクエストを複製して、複数のサーバ装置で同一リクエストを処理する場合に、複数のサーバ装置からセッション共有以外の目的で共有してアクセスされる共有装置1104があってもよい。
共有装置1104は、例えば、データベース装置やWebサービスを提供するサーバ装置である。複数のサーバ装置で同一リクエストを処理して単一の共有装置にアクセスする場合、共有装置が各サーバ装置からのアクセスにより同一の処理を多重に実行し、共有装置の状態が不正になる場合がある。例えば、クライアントが送付するリクエスト数を数えるデータベース装置が共有装置1104である場合を考える。この場合、クライアントのリクエストは1つであるが、リクエスト複製部1101がリクエストを2以上に複製して2以上のサーバ装置に送付する。各サーバ装置は受信したリクエストを処理して、共有装置1104であるデータベース装置に別々にアクセスする。この時、クライアントのリクエストは1つでアクセス数の増分は1であることが正しいが、共有装置1104へのアクセスは2以上になるためアクセス数の増分が2以上になる。
【0068】
このような、共有装置1104での処理が多重に実行されることを防ぐために、図11に示す共有部アクセス装置1105を追加する。この共有部アクセス装置1105は、共有装置1104へのリクエストの送受信を仲介する機能を有する。
なお、共有アクセス装置1105は、サーバ装置と同様に一般的なコンピュータを用いて実現することができる。また、共有部アクセス装置1105は、各サーバ装置の一機能としてもよい。
【0069】
共有部アクセス装置1105の具体的な機能を図12のフローチャートに従って説明する。
共有部アクセス装置1105は、任意のサーバ装置のリクエスト処理部から共有装置1104へのリクエストを受信する(ステップ1201)。
【0070】
次いで、共有部アクセス装置1105は、受信したリクエストと同一リクエストが、共有装置1104のメモリ又は記憶領域に記憶されているか判定する(ステップ1202)。記憶されていなければ、ステップ1203に進む。記憶されていればステップ1205に進む。
【0071】
ステップ1203で、共有部アクセス装置1105は、受信した共有装置1104へのリクエストをメモリ又は記憶領域に記憶する。その後、共有部アクセス装置1105は、共有装置1104にリクエストを送付し、リクエスト処理結果を受信する。
【0072】
そして、受信したリクエスト処理結果を、共有部アクセス装置1105のメモリ又は記憶領域に記憶する(ステップ1204)。
【0073】
その後、共有部アクセス装置1105へリクエストを送信したリクエスト処理部に、前記リクエスト処理結果を返信する(ステップ1206)。
【0074】
他方、ステップ1205で、共有部アクセス装置1105は、自装置内のメモリ又は記憶領域に、前記リクエストの処理結果が記憶されているか確認する。記憶されていれば、そのリクエスト処理結果を共有部アクセス装置1105へリクエストを送信したリクエスト処理部に前記リクエスト処理結果を返信する(ステップ1206)。記憶されていなければリクエスト処理結果が記憶されるまで待機する。
【0075】
以上のセッション情報の複製により、クラスタを構成する複数のサーバ装置で、同一リクエストを処理することができる。そのため、一部のサーバ装置が障害によりリクエスト処理中に停止しても他のサーバ装置で処理したリクエスト処理結果をクライアントに返信でき、可用性を向上させることができる。
また、障害が発生したサーバ装置が回復した場合には、稼動中のサーバ装置の保持するセッション情報との同期を行う必要がある。このとき、本第3実施形態では、各サーバ装置でセッション情報を保持するように構成されているため、特定のサーバ装置の停止を行うことなく迅速にサーバ装置の回復を行うことができる。
【0076】
その他にも、セッション情報を複製することで、ある特定時点でのサーバ装置のメモリ状態とセッション情報を保持したまま、セッションを利用するクライアントリクエストを継続することもできる。例えば、性能障害などサービス停止を伴わない障害が発生した場合に、セッション情報の移動先サーバ装置でクライアントリクエスト処理を継続しながら、セッション情報の複製元で障害発生時のセッション情報を保持する。このように、ある特定時点でのサーバ装置のメモリ状態とセッション情報とを保持することで、サーバ装置の状態を障害発生時の原因解析のために利用することができる。
【0077】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上述した実施形態は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、各実施形態の構成の一部について、他の構成の追加、削除及び置換をすることも可能である。
【0078】
更に、上記の各構成、機能、処理部及び処理手段等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク及びSSD(Solid State Drive)等の記録装置、ICカード、SDカード及びDVD等の記録媒体に置くこともできる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0079】
101 サーバ装置
102 サーバ管理装置
103 負荷分散装置
104 通信装置
105 CPU
107 記憶装置
108 データ
109 プログラム
110 メモリ
111 Webサーバ
112 APサーバ
113 構成変更命令処理部
114 リクエスト割振り部
115 リクエスト処理部
116 セッション情報保存部
117 セッション情報管理部
701 セッション情報移動条件比較部
702 セッション情報移動条件保存部
1101 リクエスト複製部
1102 レスポンス比較部
1103 通信装置
1104 共有装置
1105 共有部アクセス装置

【特許請求の範囲】
【請求項1】
クライアントリクエストの処理結果をクライアントに返信するリクエスト割振り部と、受信したリクエストを処理するリクエスト処理部と、前記リクエストのセッション情報を管理するセッション情報管理部と、を有するサーバ装置を複数備えてなるシステムでのセッション管理方法であって、
第1のサーバ装置のセッション情報管理部は、第2のサーバ装置のセッション情報管理部にセッション情報を移動し、
第1のサーバ装置のリクエスト割振り部は、前記第1のサーバ装置のリクエスト割振り部がリクエストを受信したリクエスト受信時刻及びクライアントに処理結果を返信したレスポンス返信時刻より前記セッション情報の移動時刻が遅い場合、前記セッション情報が移動した移動先情報に基づいて新たに受信したリクエストを第2のサーバ装置に割り振ることを特徴とするセッション管理方法。
【請求項2】
請求項1に記載のセッション管理方法であって、
前記第1のサーバ装置のリクエスト割振り部は、前記受信時刻及び前記返信時刻の少なくとも一方よりも、前記セッション情報の移動時刻が早い場合、前記第1のセッション情報管理部にセッション情報の移動を再実行することを特徴とするセッション管理方法。
【請求項3】
請求項2に記載のセッション管理方法であって、
前記サーバ装置を停止する際、前記第1のサーバ装置停止前に前記第1のサーバ装置のセッション情報管理部は、管理するセッション情報を前記第2のサーバ装置のセッション管理部に移動し、
前記第1のサーバ装置のリクエスト割振り部は、処理中のリクエストに関するセッション情報を前記第2のサーバ装置に転送することを特徴とするセッション管理方法。
【請求項4】
請求項1に記載のセッション管理方法であって、
前記システムは、セッション情報の移動条件を保持するセッション情報移動条件保存部と、前記セッション情報移動条件保存部から取得したセッション情報移動条件と、前記セッション情報移動条件保存部から取得したセッション情報と、を比較するセッション情報移動条件比較部とを更に有し、
前記取得したセッション情報移動条件とセッション情報が一致する場合、前記第1のサーバ装置から第2のサーバ装置へセッション情報を移動することを特徴とするセッション管理方法。
【請求項5】
請求項4に記載のセッション管理方法であって、
前記セッション情報移動条件は、少なくともセッションID及びセッション情報の応答値によって指定することを特徴とするセッション管理方法。
【請求項6】
請求項4記載のセッション管理方法であって、
前記システムは、前記第1及び第2のサーバ装置におけるセッション処理の負荷を管理するサーバ管理部を更に有し、
前記サーバ管理部は、前記セッション処理のセッション数又はセッション内容を少なくとも含む負荷情報をモニタに表示することを特徴とするセッション管理方法。
【請求項7】
請求項1に記載のセッション管理方法であって、
前記システムは、前記クライアントと、前記第1及び第2のサーバ装置との通信を仲介する負荷分散部を更に有し、
前記第1サーバ装置のセッション情報管理部は、前記第2のサーバ装置のセッション情報管理部に該セッション情報を複製することで、セッション情報を移動し、
前記負荷分散部は、同一の前記クライアントリクエストを前記第1及び第2のサーバ装置の夫々に送信し、前記第1のサーバ装置と第2のサーバ装置から先に受信したリクエスト処理結果を前記クライアントに返信することを特徴とするセッション管理方法。
【請求項8】
請求項7に記載のセッション管理方法であって、
前記システムは、前記第1及び第2のサーバ装置のリクエスト処理部が使用するデータを格納するための共有記憶部と、前記第1並びに第2のサーバ装置のリクエスト処理部及び前記共有記憶部間のアクセスを制御する共有アクセス部と、を更に有し、
前記共有アクセス部は、
前記第1及び第2のサーバ装置のリクエスト処理部で、前記同一のクライアントリクエストを処理することにより生じた前記共有記憶部に対する複数のアクセス要求のうち最先のアクセス要求を前記共有記憶部に送信し、
該アクセス要求に対する前記共有記憶部からの処理結果を保持するとともに前記最先のアクセス要求の送信元であるリクエスト処理部に該処理結果を返信し、
前記最先のアクセス要求以外のアクセス要求の送信元であるリクエスト処理部に対しては、前記保持した処理結果を返信することを特徴とするセッション管理方法。
【請求項9】
クライアントリクエストの処理を行う計算機を複数接続してなるセッション管理システムであって、
前記各計算機は前記リクエストのセッション情報を管理し、前記セッション情報の移動指示を受け、当該セッション情報を他の計算機に移動するとともにその移動時刻を管理するセッション情報管理部と、
前記リクエストの受信時刻及び処理結果の返信時刻を管理し、前記移動時刻が前記リクエストの受信時刻及び前記返信時刻よりも遅い場合に、新たなリクエストを前記他の計算機に転送するリクエスト割振り部と、
を有することを特徴とするセッション管理システム。
【請求項10】
請求項9に記載のセッション管理システムであって、
前記移動時刻が、前記リクエストの受信時刻及び前記返信時刻の少なくとも一方より早い場合に、前記セッション情報の移動を再実行するセッション情報管理部を有することを特徴とするセッション管理システム。
【請求項11】
請求項10に記載のセッション管理システムであって、
特定の計算機を停止する際、当該計算機を停止する前に管理するセッション情報を他の計算機に移動するセッション情報管理部と、
処理中のリクエストに関するセッション情報を他の計算機に転送するリクエスト割振り部と、
を有することを特徴とするセッション管理システム。
【請求項12】
請求項9に記載のセッション管理システムであって、
前記各計算機は、
セッション情報の移動条件を保持するセッション情報移動条件保存部と、
前記セッション情報移動条件保存部から取得したセッション情報移動条件と、前記セッション情報移動条件保存部から取得したセッション情報と、を比較し、前記取得したセッション情報移動条件とセッション情報が一致する場合に、他の計算機へセッション情報を移動するセッション情報移動条件比較部と、
を有することを特徴とするセッション管理システム。
【請求項13】
請求項12に記載のセッション管理システムであって、
前記セッション情報移動条件は、少なくともセッションID及びセッション情報の応答値によって指定することを特徴とするセッション管理システム。
【請求項14】
請求項12に記載のセッション管理システムであって、
前記各計算機は、
各計算機におけるセッション処理の負荷を管理し、前記セッション処理の数又はセッション内容を少なくとも含む負荷情報をモニタに表示する管理部を更に有することを特徴とするセッション管理システム。
【請求項15】
クライアントからのリクエストの処理を行う計算機を複数接続してなるシステムの前記各計算機に、
前記リクエストのセッション情報を管理し、前記セッション情報の移動指示を受け、該セッション情報を他の計算機に移動するとともにその移動時刻を管理する機能と、
前記リクエストの受信時刻及び処理結果の返信時刻を管理し、前記移動時刻が、前記リクエストの受信時刻及び前記返信時刻よりも遅い場合に、新たなリクエストを前記他の計算機に転送する機能と、
を実現させることを特徴とするプログラム。
【請求項16】
請求項15に記載のプログラムであって、
前記受信時刻及び前記返信時刻の少なくとも一方よりも、前記セッション情報の移動時刻が早い場合に、セッション情報の移動を再実行する機能を更に実現させることを特徴とするプログラム。
【請求項17】
請求項16に記載のプログラムであって、
特定の計算機を停止する際、前記計算機を停止する前に管理するセッション情報を他の計算機に移動する機能と、
処理中のリクエストに関するセッション情報を他のサーバ装置に転送する機能と
を更に実現させることを特徴とするプログラム。
【請求項18】
請求項15に記載のプログラムであって、
前記各計算機に、
セッション情報の移動条件を保持する機能と、
当該セッション情報移動条件と、当該セッション情報とを比較する機能と、
前記取得したセッション情報移動条件とセッション情報が一致するならば他の計算機へセッション情報を移動する機能と、
を更に実現させることを特徴とするプログラム。
【請求項19】
請求項18に記載のプログラムであって、
前記セッション情報移動条件は、少なくともセッションID及びセッション情報の応答値によって指定することを特徴とするプログラム。
【請求項20】
請求項18に記載のプログラムであって、
前記各計算機に、
各計算機におけるセッション処理の負荷を管理する機能と、
前記セッション処理の数又はセッション内容を少なくとも含む負荷情報をモニタに表示する機能と、
を更に実現させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−103879(P2012−103879A)
【公開日】平成24年5月31日(2012.5.31)
【国際特許分類】
【出願番号】特願2010−251406(P2010−251406)
【出願日】平成22年11月10日(2010.11.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】