(57)【要約】  複数のサーバの何れかに対して通信の割当が行われるシステムにおいて、通信割当の的確さを向上させることを課題とする。セッション情報の複製先となる複製先サーバを、所定のアルゴリズムを用いて決定する情報処理システムにおいて、通信の割り当て先サーバを決定するロードバランサ２に、所定のアルゴリズムを用いて、複数のサーバのうち通信の割り当て先となる割当先サーバを決定する割当先決定部４１と、決定された割当先サーバに通信を割り当てる通信割当部４２と、を備えた。
2014020742.tif 000002
【特許請求の範囲】
【請求項１】
入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信を識別するための通信識別情報の複製先となる複製先サーバを決定する情報処理システムにおいて、前記通信の割り当て先を決定する負荷分散装置であって、
前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信の割り当て先となる割当先サーバを決定する割当先決定手段と、
前記割当先決定手段によって決定された前記割当先サーバに、前記通信を割り当てる通信割当手段と、
を備える負荷分散装置。
【請求項２】
前記情報処理システムは、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報の複製先サーバを決定し、
前記割当先決定手段は、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報に係る通信が割り当てられる割当先サーバを決定する、
請求項１に記載の負荷分散装置。
【請求項３】
前記通信を識別するための識別子を生成する識別子生成手段と、
前記通信識別子生成手段によって生成された前記識別子を、前記割当先決定手段によって決定された前記割当先サーバに通知することで、前記通信識別情報に含める通知手段と、
を更に備え、
前記割当先決定手段は、前記識別子を前記所定のアルゴリズムに基づいて処理することで、前記割当先サーバを決定する、
請求項１または２に記載の負荷分散装置。
【請求項４】
前記所定のアルゴリズムは、入力に対して再現性を有する順序をもって、前記複数のサーバから１または複数のサーバを索出するアルゴリズムであり、
前記情報処理システムは、前記所定のアルゴリズムを用いて索出されたサーバのうち前記順序の上位から所定数のサーバを、前記複製先サーバとして決定し、
前記割当先決定手段は、前記順序に従って前記割当先サーバを決定する、
請求項１から３の何れか一項に記載の負荷分散装置。
【請求項５】
入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信の割り当て先となる割当先サーバを決定する負荷分散装置を有する情報処理システムであって、
前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信を識別するための通信識別情報の複製先となる複製先サーバを決定する複製先決定手段と、
前記複製先決定手段によって決定された前記複製先サーバに、前記通信識別情報を複製する複製手段と、
を備える情報処理システム。
【請求項６】
前記負荷分散装置は、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報に係る通信が割り当てられる割当先サーバを決定し、
前記複製先決定手段は、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報の複製先サーバを決定する、
請求項５に記載の情報処理システム。
【請求項７】
前記所定のアルゴリズムは、入力に対して再現性を有する順序をもって、前記複数のサーバから１または複数のサーバを索出するアルゴリズムであり、
前記複製先決定手段は、前記所定のアルゴリズムを用いて索出されたサーバのうち前記順序の上位から所定数のサーバを、前記複製先サーバとして決定する、
請求項５または６に記載の情報処理システム。
【請求項８】
入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信を識別するための通信識別情報の複製先となる複製先サーバを決定する情報処理システムにおいて、前記通信の割り当て先を決定する方法であって、コンピュータが、
前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信の割り当て先となる割当先サーバを決定する割当先決定ステップと、
前記割当先決定ステップにおいて決定された前記割当先サーバに、前記通信を割り当てる通信割当ステップと、
を実行する方法。
【請求項９】
入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信の割り当て先となる割当先サーバを決定する負荷分散装置を有する情報処理システムにおいて、コンピュータが、
前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信を識別するための通信識別情報の複製先となる複製先サーバを決定する複製先決定ステップと、
前記複製先決定ステップで決定された前記複製先サーバに、前記通信識別情報を複製する複製ステップと、
を実行する方法。
【請求項１０】
入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信を識別するための通信識別情報の複製先となる複製先サーバを決定する情報処理システムにおいて、前記通信の割り当て先を決定するためのプログラムであって、コンピュータを、
前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信の割り当て先となる割当先サーバを決定する割当先決定手段と、
前記割当先決定手段によって決定された前記割当先サーバに、前記通信を割り当てる通信割当手段と、
として機能させるプログラム。
【請求項１１】
入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信の割り当て先となる割当先サーバを決定する負荷分散装置を有する情報処理システムにおいて、コンピュータを、
前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信を識別するための通信識別情報の複製先となる複製先サーバを決定する複製先決定手段と、
前記複製先決定手段によって決定された前記複製先サーバに、前記通信識別情報を複製する複製手段と、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係る技術は、負荷分散装置を有する情報処理に関する。
【背景技術】
【０００２】
従来、送信元ＩＰアドレス、プロトコルタイプ、宛先ポート番号等を検索キーとしてポリシールーティングテーブルを検索し、検索の結果にしたがってハッシュテーブルを検索し、中継先を決定するルータが提案されている（特許文献１を参照）。
【先行技術文献】
【非特許文献】
【０００３】
【特許文献１】特開２００３−２８１１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、複数のサーバを用いてクライアントに対してサービスを提供する場合に、所謂ロードバランサ等の負荷分散装置によって複数のサーバの何れかに通信を割り当て、複数のサーバ間で処理負荷を分散する技術がある。そして、通信が負荷分散装置によって何れかのサーバに割り当てられる場合、通信の割り当てを受けたサーバが通信相手のクライアントに対応する通信識別情報（セッション情報等）を取得するために、複数のサーバ間で通信識別情報が複製されることがある。また、通信識別情報の複製にあたっては、通信量や複製回数等の負荷を低減させるために、一部のサーバに対して通信識別情報を複製する方法がある。【０００５】
しかし、一部のサーバに対して通信識別情報を複製する方法では、負荷分散装置によって、通信識別情報を保持していないサーバに通信が割り当てられてしまう可能性がある。【０００６】
本発明では、上記した課題に鑑み、複数のサーバの何れかに対して通信の割当が行われるシステムにおいて、通信割当の的確さを向上させることを課題とする。
【課題を解決するための手段】
【０００７】
本発明の一側面は、入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信を識別するための通信識別情報の複製先となる複製先サーバを決定する情報処理システムにおいて、前記通信の割り当て先を決定する負荷分散装置であって、前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信の割り当て先となる割当先サーバを決定する割当先決定手段と、前記割当先決定手段によって決定された前記割当先サーバに、前記通信を割り当てる通信割当手段と、を備える負荷分散装置である。【０００８】
また、前記情報処理システムは、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報の複製先サーバを決定し、前記割当先決定手段は、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報に係る通信が割り当てられる割当先サーバを決定してもよい。【０００９】
また、本発明に係る負荷分散装置は、前記通信を識別するための識別子を生成する識別子生成手段と、前記通信識別子生成手段によって生成された前記識別子を、前記割当先決定手段によって決定された前記割当先サーバに通知することで、前記通信識別情報に含める通知手段と、を更に備え、前記割当先決定手段は、前記識別子を前記所定のアルゴリズムに基づいて処理することで、前記割当先サーバを決定してもよい。【００１０】
また、前記所定のアルゴリズムは、入力に対して再現性を有する順序をもって、前記複数のサーバから１または複数のサーバを索出するアルゴリズムであり、前記情報処理システムは、前記所定のアルゴリズムを用いて索出されたサーバのうち前記順序の上位から所定数のサーバを、前記複製先サーバとして決定し、前記割当先決定手段は、前記順序に従って前記割当先サーバを決定してもよい。【００１１】
また、本発明は、情報処理システムとしても把握することが出来る。即ち、本発明の一側面は、入力に対して再現性を有する所定のアルゴリズムを用いて、複数のサーバのうち、クライアントとサーバとの間の通信の割り当て先となる割当先サーバを決定する負荷分散装置を有する情報処理システムであって、前記所定のアルゴリズムを用いて、前記複数のサーバのうち、前記通信を識別するための通信識別情報の複製先となる複製先サーバを決定する複製先決定手段と、前記複製先決定手段によって決定された前記複製先サーバに、前記通信識別情報を複製する複製手段と、を備える情報処理システムである。【００１２】
また、前記負荷分散装置は、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報に係る通信が割り当てられる割当先サーバを決定し、前記複製先決定手段は、前記通信識別情報の少なくとも一部を前記所定のアルゴリズムに基づいて処理することで、該通信識別情報の複製先サーバを決定してもよい。【００１３】
また、前記所定のアルゴリズムは、入力に対して再現性を有する順序をもって、前記複数のサーバから１または複数のサーバを索出するアルゴリズムであり、前記複製先決定手段は、前記所定のアルゴリズムを用いて索出されたサーバのうち前記順序の上位から所定数のサーバを、前記複製先サーバとして決定してもよい。【００１４】
なお、前記所定のアルゴリズムとしては、その他のアルゴリズムが採用されてもよい。例えば、所定のアルゴリズムとして、サーバをツリー上にマッピングし、深さ優先で探索する方式等を採用することが出来る。【００１５】
また、本発明は、情報処理装置、１または複数の情報処理装置を有する情報処理システム、コンピュータによって実行される方法、またはコンピュータに実行させるプログラムとしても把握することが可能である。また、本発明は、そのようなプログラムをコンピュータその他の装置、機械等が読み取り可能な記録媒体に記録したものでもよい。ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることが出来る記録媒体をいう。
【発明の効果】
【００１６】
本発明に係る情報処理によれば、複数のサーバの何れかに対して通信の割当が行われるシステムにおいて、通信割当の的確さを向上させることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】実施形態に係るシステムのハードウェア構成の概略を示す図である。
【図２】実施形態に係るシステムの機能構成の概略を示す図である。
【図３】実施形態において用いられるＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇによる複製先サーバの選択手法の概要を示す図である。
【図４】実施形態に係る、サーバ割当処理の流れを示すフローチャートである。
【図５】実施形態に係る、セッション情報管理処理の流れを示すフローチャート（１）である。
【図６】実施形態に係る、セッション情報管理処理の流れを示すフローチャート（２）である。
【図７】実施形態に係る、セッション情報管理処理の流れを示すフローチャート（３）である。
【図８】実施形態に係る、サーバ割当処理の流れの変形例を示すフローチャートである。
【図９】実施形態に係る、セッション情報管理処理の流れのバリエーションを示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図面に基づいて説明する。なお、以下に説明する実施の形態は例示であって、本発明を以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の形態毎に具体的構成が適宜採用されてよい。
【００１９】
＜システムの構成＞
図１は、本実施形態に係るシステムのハードウェア構成の概略を示す図である。本実施形態に係るシステムは、インターネット等のネットワークを介して互いに通信可能に接続された、複数のサーバ１およびロードバランサ（負荷分散装置）２を備える。また本実施形態に係るシステムには、ネットワークを介して、クライアント端末９が接続される。なお、サーバ１およびロードバランサ２は、夫々、単一の筐体によって構成されてもよいし、ネットワーク等を介して接続された複数の筐体によって構成されてもよい。
【００２０】
サーバ１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２およびＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３等からなる制御部１０と、不揮発性の補助記憶装置１４と、入力装置１５と、出力装置１６と、ネットワークインターフェース１７と、を備える情報処理装置である。但し、本発明の実施にあたって、本発明に係る情報処理装置は、上記した構成と同一の構成である必要はない。情報処理装置の具体的なハードウェア構成に関しては、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。
【００２１】
ロードバランサ２は、サーバ１と同様、ＣＰＵ３１、ＲＡＭ３２およびＲＯＭ３３等からなる制御部３０と、補助記憶装置３４と、入力装置３５と、出力装置３６と、ネットワークインターフェース３７と、を備える情報処理装置である。また、クライアント端末９は、サーバ１と同様、ＣＰＵ、ＲＡＭおよびＲＯＭ等からなる制御部と、補助記憶装置と、入力装置と、出力装置と、ネットワークインターフェースと、を備える情報処理装置である（図示は省略する）。
【００２２】
図２は、本実施形態に係るシステムの機能構成の概略を示す図である。本実施形態に係るサーバ１は、ＣＰＵ１１が、ＲＡＭ１２に展開された各種プログラムを解釈および実行して、サーバ１に備えられた各種ハードウェアを制御することで、通信識別情報生成部（セッション情報生成部）２２、複製先決定部２３、複製部２４およびサーバ索出部２６、を備える情報処理装置として機能する。また、本実施形態では、これらの機能がいずれも汎用のＣＰＵ１１によって実行される例について説明するが、これらの機能は、その一部または全部が、１または複数の専用のプロセッサによって実現されてもよい。
【００２３】
本実施形態において、複数のサーバ１は、Ｗｅｂサイトを管理し、ＨＴＴＰによるコンテンツ取得要求に応じてＨＴＭＬコンテンツを送信する機能を有するサーバである。サーバ１は、クライアント端末９からの要求に応じて、Ｗｅｂサイト中のコンテンツを配信する。但し、本実施形態では、サーバ１によって提供されるサービスの例としてＷｅｂサービスを挙げて説明しているが、本発明の実施にあたって、サーバ１はＷｅｂサービスを提供するためのサーバに限定されない。本発明は、その他のサービスを提供するためのサーバ群にも適用可能である。
【００２４】
本実施形態に係るロードバランサ２は、ＣＰＵ３１が、ＲＡＭ３２に展開された各種プログラムを解釈および実行して、ロードバランサ２に備えられた各種ハードウェアを制御することで、割当先決定部４１、通信割当部４２、通信識別子生成部（セッションＩＤ生成部）４３および通知部４４を備える情報処理装置として機能する。また、本実施形態では、これらの機能がいずれも汎用のＣＰＵ３１によって実行される例について説明するが、これらの機能は、その一部または全部が、１または複数の専用のプロセッサによって実現されてもよい。
【００２５】
本実施形態において、クライアント端末９からのＷｅｂサイトへの通信は、はじめにロードバランサ２によって受信される。ロードバランサ２は、クライアント端末９からの通信を受信すると、当該通信を複数のサーバ１の何れかに割り当てることで、Ｗｅｂサイトへの負荷を複数のサーバ１に分散する負荷分散装置である。本実施形態において用いられるロードバランサ２は、負荷分散先としてクライアント端末９からの通信を割り当てる先のサーバ１を、何らかの負荷分散アルゴリズムに従って決定する。基本的に、ロードバランサ２は、クライアント端末９とサーバ１との間のセッションを維持するために、同一のクライアント端末９からの通信を同一のサーバ１に割り当てる。但し、サーバ側の事情やロードバランサ側の事情により、同一のクライアント端末９からの通信がそれまでとは異なるサーバ１に割り当てられる可能性がある。ここで、サーバ側の事情としては、例えばサーバ１が落ちている場合等が挙げられる。ロードバランサ側の事情としては、ロードバランサが処理速度を向上させる目的等で割当先サーバを変更した場合や、ロードバランサの性能に問題がある場合等が挙げられる。
【００２６】
ロードバランサ２またはロードバランサ２によってクライアント端末９からの通信を割り当てられたサーバ１は、少なくともクライアント端末９またはユーザを一意に特定可能なセッションＩＤを、クライアント端末９に対して発行する。以降、サーバ１は、セッションＩＤを用いて、クライアント端末９とサーバ１との間での通信を識別し、このセッションＩＤによって識別されるセッション情報を用いて、クライアント端末９とサーバ１との間での通信を管理する。このため、セッションＩＤの発行後は、サーバ１とクライアント端末９との間で送受信されるパケットには、セッションＩＤが含まれる。なお、セッションＩＤは、ユーザ端末やユーザとの通信を識別して、ユーザ端末やユーザ毎にサービスを提供するための識別子であり、本発明の通信識別子に相当する。
【００２７】
クライアント端末９は、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）に指定されたＷｅｂサイトに対してパケットを送信する機能、および、ロードバランサによって当該パケットの割当を受けたサーバ１から返信されたコンテンツを受信する機能を備える。また、クライアント端末９は、Ｗｅｂサーバから受信した、接続先のサーバ１との間の通信を管理するためのセッションＩＤを保持する。
【００２８】
本実施形態では、何れかのサーバ１によって発行されたセッションＩＤを含むセッション情報は、１または複数のサーバ１に対して複製される。ここで、セッション情報の複製先として決定されたサーバ１を、「複製先サーバ」と称する。セッション情報の複製先サーバの決定には、全てのサーバ間で共通するアルゴリズムが使用される。また、この際に用いられるアルゴリズムは、入力（本実施形態では、セッションＩＤ）に応じて選択されるサーバ１に再現性のあるアルゴリズムであればよい。このようなアルゴリズムを用いてサーバ１が複製先サーバとして決定されるため、セッションＩＤを用いて複製先サーバが決定された後、同アルゴリズムを、複製先サーバの索出に用いることが出来る。そして、本実施形態では、このようなアルゴリズムを利用した複製先サーバの選択手法として、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇによる複製先サーバの選択手法が用いられる。
【００２９】
図３は、本実施形態において用いられるＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇによる複製先サーバの選択手法の概要を示す図である。Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｉｎｇでは、０から所定の数値ｎ（例えば、２＾３２−１）までの連続した整数が円周上の同一方向回り（図では時計回り）に等間隔に定められた円（ｃｏｎｔｉｎｕｕｍ）が用いられる。このため、ｃｏｎｔｉｎｕｕｍ上を同一方向回り（時計回り）に辿っていくと、ｃｏｎｔｉｎｕｕｍ上の数値は、円周上を進むに従って０から１ずつ増加し、ｃｏｎｔｉｎｕｕｍを一周することでｎに到達すると、その次で０に戻る。本実施形態に係るＷｅｂサイトで用いられる複数のサーバ１には、この０からｎまでの整数のうちの何れかが、サーバ識別子として割り当てられている。換言すれば、本システムにおいて用いられるサーバ１は、ｃｏｎｔｉｎｕｕｍ上にマッピングされる。
【００３０】
ロードバランサ２およびサーバ１は、ロードバランサ２および全てのサーバ１において共通するハッシュ演算アルゴリズムを用いることで、セッション情報の複製先サーバを決定する際や、セッション情報の複製先サーバを索出する際に、同一のセッションＩＤに対して一意のハッシュ値を得る。このため、ｃｏｎｔｉｎｕｕｍ上におけるサーバのマッピング情報（以下、単に「ｃｏｎｔｉｎｕｕｍ」ともいう）はロードバランサ２とサーバ１との間で同期される。ここで、ハッシュ値は、セッションＩＤの一部または全部を入力値とするハッシュ演算を行うことで得られてもよいし、セッションＩＤとして０からｎの範囲内のハッシュ値が用いられているような場合には、セッションＩＤがそのままｃｏｎｔｉｎｕｕｍ上の点を特定するためのハッシュ値として参照されてもよい。
【００３１】
まず、複製先決定部２３またはサーバ索出部２６は、求められたハッシュ値に対応するｃｏｎｔｉｎｕｕｍ上の点を開始地点として同一方向回り（図では時計回り）に探索を開始し、最初に発見されたサーバ１を、セッション情報の複製先として決定（または取得元として索出）する。複製先サーバを１つとする場合や、ここで索出されたサーバ１からセッション情報が取得出来た場合等には、ここで探索は終了する。しかし、複製先サーバを２つ以上とする場合や、ここで索出されたサーバ１からセッション情報が取得出来なかった場合等には、ｃｏｎｔｉｎｕｕｍの同一方向回り（図では時計回り）に探索が継続され、次に発見されたサーバ１が、更にセッション情報の複製先として決定（または取得元として索出）される。なお、探索中に、ｃｏｎｔｉｎｕｕｍの探索位置の値が限界値ｎ（例えば２＾３２−１）を超えた場合、探索位置はｃｏｎｔｉｎｕｕｍの開始地点（即ち、０）に戻り、探索が継続される。
【００３２】
＜処理の流れ＞
次に、図４から図７を用いて、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の形態に応じて適宜選択されてよい。
【００３３】
図４は、本実施形態に係る、サーバ割当処理の流れを示すフローチャートである。本フローチャートに示された処理は、クライアント端末９によって送信されたパケットが、ロードバランサ２によって受信されたことを契機として開始される。
【００３４】
ステップＳ００１およびステップＳ００２では、クライアント端末９からの通信が受信され、セッションＩＤの有無が判定される。クライアント端末９によって送信されたパケットは、サーバ１によって受信される前に、ロードバランサ２によって受信される（ステップＳ００１）。クライアント端末９によって送信されたパケットを受信したロードバランサ２は、受信パケットを参照し、受信パケットにセッションＩＤが設定されているか否かを判定する（ステップＳ００２）。ここで、受信パケットにセッションＩＤが設定されていると判定された場合、処理はステップＳ００４へ進む。一方、受信パケットにセッションＩＤが設定されていないと判定された場合、処理はステップＳ００３へ進む。
【００３５】
ステップＳ００３では、セッションＩＤが生成される。クライアント端末９から受信したパケットにセッションＩＤが設定されていない場合、ロードバランサ２の通信識別子生成部４３は、パケットの送信元のクライアント端末９とサーバ１との間の通信を識別するための識別子として、セッションＩＤを生成する。その後、処理はステップＳ００４へ進む。
【００３６】
ステップＳ００４では、セッションＩＤに基づいて割当先サーバが決定される。ロードバランサ２の割当先決定部４２は、ｃｏｎｔｉｎｕｕｍ上にマッピングされた複数のサーバから、当該パケットを割り当てるサーバ（割当先サーバ）を、上述したＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇを用いて決定する。より具体的には、割当先決定部４２は、ステップＳ００３において生成されたセッションＩＤの一部または全部を入力値とするハッシュ演算を行い、ハッシュ値を得る。ここで用いられるハッシュ演算は、入力に対して再現性を有する。そして、割当先決定部４２は、求められたハッシュ値に対応するｃｏｎｔｉｎｕｕｍ上の点を開始地点として探索を行い、最初に発見されたサーバ１を、割当先サーバとして決定する。その後、処理はステップＳ００５へ進む。
【００３７】
ステップＳ００５では、セッションＩＤがサーバに通知される。ロードバランサ２の通知部４４は、ステップＳ００３で生成されたセッションＩＤを、少なくともステップＳ００４で決定された割当先サーバに通知する。但し、通知部４４は、セッションＩＤを、割当先サーバ以外のサーバ１に通知してもよい。例えば、ロードバランサ２は、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇを用いてｃｏｎｔｉｎｕｕｍの探索を行うことで所定の数のサーバ１を順に索出し、通知部４４は、索出された所定の数のサーバ１に対して、セッションＩＤを通知してもよい。その後、処理はステップＳ００７へ進む。
【００３８】
ステップＳ００６では、セッションＩＤに基づいて割当先サーバが決定される。クライアント端末９から受信したパケットにセッションＩＤが設定されていた場合、ロードバランサ２の割当先決定部４２は、ｃｏｎｔｉｎｕｕｍ上にマッピングされた複数のサーバから、当該パケットを割り当てる割当先サーバを決定する。具体的な決定方法は、演算に用いられるセッションＩＤが受信パケットから抽出されたものである点を除いて、ステップＳ００４において説明した決定方法と概略同様である。その後、処理はステップＳ００７へ進む。
【００３９】
ステップＳ００７では、クライアント端末９からの通信が割当先サーバに送信される。ロードバランサ２の通信割当部４２は、ステップＳ００３またはステップＳ００６において決定された割当先サーバに対して、ステップＳ００１で受信されたパケットを転送する。このようにして、パケットは複数のサーバ１のうちの何れかのサーバ１にたどり着き、ロードバランサ２による通信の割当を受けたサーバ１は、クライアント端末９から送信されたパケットを受信する。その後、本フローチャートに示された処理は終了する。
【００４０】
図５から図７は、本実施形態に係る、セッション情報管理処理の流れを示すフローチャートである。本フローチャートに示された処理は、クライアント端末９によって送信されたパケットが、ロードバランサ２に割当られたサーバ１によって受信されたことを契機として開始される。
【００４１】
ステップＳ１０１では、クライアント端末９からの通信が受信される。ロードバランサ２による通信の割当を受けたサーバ１は、クライアント端末９から送信されたパケットを受信する。以下、パケットを受信したサーバ１を「受信サーバ」と称する。その後、処理はステップＳ１０２へ進む。
【００４２】
ステップＳ１０２では、受信パケットにセッションＩＤが設定されているか否かが判定される。受信サーバは、ステップＳ１０１で受信されたパケットを参照して、当該パケットに、サーバ１とクライアント端末９との間の通信を識別するためのセッションＩＤが含まれているか否かを判定する。パケットにセッションＩＤが含まれている場合、換言すれば、ロードバランサ２によって生成されたセッションＩＤ（ステップＳ００３を参照）がクライアント端末９に対して発行済である場合、処理はステップＳ１１０へ進む。一方、セッションＩＤが含まれていない場合、換言すれば、ロードバランサ２によって生成されたセッションＩＤがクライアント端末９に対して未発行である場合、処理はステップＳ１０３へ進む。
【００４３】
ステップＳ１０３からステップＳ１０６の処理は、ロードバランサ２によって生成されたセッションＩＤがクライアント端末９に対して未発行である場合に、セッションＩＤを発行し、またこのセッションＩＤに係るセッション情報を他のサーバ１に複製するための処理である。
【００４４】
ステップＳ１０３およびステップＳ１０４では、セッション情報の生成および通知が行われる。受信サーバの通信識別情報生成部２２は、パケットの送信元のクライアント端末９とサーバ１との間の通信を識別するための情報として、セッション情報を生成する（ステップＳ１０３）。そして、受信サーバは、生成されたセッション情報を、先述したステップＳ００５でロードバランサ２から通知されたセッションＩＤと関連付け、当該セッション情報に、関連付けられたセッションＩＤを含めて、パケットの送信元クライアント端末９に通知する（ステップＳ１０４）。その後、処理はステップＳ１０５へ進む。
【００４５】
ステップＳ１０５では、セッションＩＤに基づいて複製先サーバが決定される。受信サーバの複製先決定部２３は、上述したＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇを用いて、複製先サーバを決定する。即ち、本実施形態において、複製先サーバの決定に用いられるアルゴリズムは、ロードバランサ２による割当先サーバの決定に用いられるアルゴリズムと同一である。また、参照されるｃｏｎｔｉｎｕｕｍも、サーバ１とロードバランサ２との間で同期される。より具体的には、受信サーバは、セッションＩＤの一部または全部を入力値とするハッシュ演算を行い、ハッシュ値を得る。ここで用いられるハッシュ演算は、入力に対して再現性を有する。そして、サーバ１は、求められたハッシュ値に対応するｃｏｎｔｉｎｕｕｍ上の点を開始地点として探索を行い、発見された順に、所定の数のサーバ１を、複製先サーバとして決定する。その後、処理はステップＳ１０６へ進む。
【００４６】
ステップＳ１０６では、セッション情報が複製先サーバに複製される。受信サーバの複製部２４は、ステップＳ１０３で生成されたセッション情報を、ステップＳ１０５において決定された複製先サーバに対して送信することによって、セッション情報を複製先サーバに複製し、複製先サーバに保持させる。その後、本フローチャートに示された処理は終了する。
【００４７】
なお、複製先サーバが複数決定され、複数の複製先サーバに対してセッション情報が複製される場合、セッション情報を不揮発性の補助記憶装置１４に保持する複製先サーバは、複数の複製先サーバのうちの一部（例えば、１台）であってよい。セッション情報を一部の複製先サーバにおいてのみ不揮発性の補助記憶装置１４に保持させる場合、この一部の複製先サーバを除く他の複製先サーバは、セッション情報をＲＡＭ１２に保持する。このようにすることで、セッション情報の複製のために用いる補助記憶装置１４の領域を節約することが出来る。
【００４８】
ステップＳ１１０では、受信サーバがセッション情報を保持しているか否かが判定される。受信パケットにセッションＩＤが設定されている場合、受信サーバは、自身が、受信したパケットに設定されているセッションＩＤに対応するセッション情報を保持しているか否かを判定する。ここで、受信サーバがセッション情報を保持していると判定された場合、受信サーバは、このセッション情報を用いてクライアント端末９との間で行われる通信内容を管理する。そして、処理はステップＳ１１７へ進む。一方、受信サーバがセッション情報を保持していない場合、処理はステップＳ１１１へ進む。
【００４９】
本実施形態に係るシステムでは、ロードバランサ２がＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇを用いて割当先を決定するため、ステップＳ１１０における判定結果は、通常「セッション情報を保持している」という結果となる。但し、ロードバランサ２がｃｏｎｔｉｎｕｕｍの情報を失う等した場合に、ステップＳ１１０における判定結果が、「セッション情報を保持していない」となり得る。本実施形態に係るシステムでは、ステップＳ１１１からステップＳ１１５の処理によって、受信サーバがセッション情報を保持していない場合にもセッション情報を取得できるため、ｃｏｎｔｉｎｕｕｍの同期を厳密に行うことなく、ｃｏｎｔｉｎｕｕｍの同期にかかる負荷を低減させることが出来る。具体的には、ｃｏｎｔｉｎｕｕｍの同期中にも、同期の完了を待たずにロードバランサ２が通信の割当を行うことが出来る。
【００５０】
ステップＳ１１１からステップＳ１１５の処理は、受信されたパケットにセッションＩＤが設定されている（ステップＳ１０２：ＹＥＳ）が、受信サーバがセッション情報を有していない場合（ステップＳ１１０：ＮＯ）に、他のサーバ１からセッション情報を取得するための処理である。本実施形態に係るシステムによれば、セッションＩＤを有さないサーバ１にロードバランサが通信を割り当ててしまった場合であっても、後述するステップＳ１１１からステップＳ１１５の処理によって、通信の割当を受けたサーバ１が、セッションＩＤから複製先サーバを索出し、セッション情報を取得することが出来る。
【００５１】
ステップＳ１１１では、セッションＩＤに基づいてサーバ１が索出される。受信サーバのサーバ索出部２６は、上述したＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇを用いて、サーバ１を索出する。より具体的には、受信サーバは、セッションＩＤを入力値とするハッシュ演算を行い、ハッシュ値を得る。そして、サーバ１は、求められたハッシュ値に対応するｃｏｎｔｉｎｕｕｍ上の点を開始地点として探索を行い、最初に発見されたサーバ１を索出する。ステップＳ１１１で索出に用いられるアルゴリズムは、ステップＳ１０５において複製先サーバを決定する際に用いたアルゴリズムと同一（本実施形態では、同一のｃｏｎｔｉｎｕｕｍを用いるＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ）である。このため、ステップＳ１１１では、ステップＳ１０５において決定され、セッション情報の複製がなされた複製先サーバが優先的に索出される。その後、処理はステップＳ１１２へ進む。
【００５２】
ステップＳ１１２では、索出されたサーバ１からのセッション情報の取得が試みられる。受信サーバは、ステップＳ１１１で索出されたサーバ１に対して、受信パケットに設定されていたセッションＩＤに対応するセッション情報を要求する。ここで、要求先のサーバ１がセッション情報を有していた場合、セッション情報の取得は成功する。しかし、要求先のサーバ１が複製先サーバでなかった場合や、要求先のサーバ１に障害が発生している場合等、何らかの事情でセッション情報の取得が出来ない可能性がある。
【００５３】
ステップＳ１１３からステップＳ１１５では、セッション情報が取得できるまで、セッションＩＤに基づくサーバ１の索出とセッション情報の要求が繰り返される。このため、受信サーバは、ステップＳ１１２においてセッション情報を取得できたか否かを判定する（ステップＳ１１３）。セッション情報が取得できたと判定された場合、受信サーバは、取得されたセッション情報を用いてクライアント端末９との間で行われる通信内容を管理する。そして、処理はステップＳ１１６へ進む。
【００５４】
一方、セッション情報が取得できなかったと判定された場合、受信サーバのサーバ索出部２６は、セッションＩＤに基づいて次のサーバ１を索出し（ステップＳ１１５）、索出されたサーバ１に対してセッション情報を要求する（ステップＳ１１２）。ここで索出される「次のサーバ」とは、図３を用いて説明したＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇにおける探索を継続することによって、直前のステップＳ１１２において発見されたサーバ１の次に発見されるサーバ１である。次のサーバ１の索出とセッション情報の要求とは、セッション情報が取得できるまで（ステップＳ１１３：ＹＥＳ）繰り返し実行される。但し、本実施形態では、複製先サーバは、上記ステップＳ１０３からステップＳ１０６で説明した通り所定数（１または複数）選択されているものの、複製先サーバの数には限りがある。このため、探索がｃｏｎｔｉｎｕｕｍを一周し、全てのサーバ１に対して問い合わせ済みとなったがセッション情報の取得が出来なかった場合には（ステップＳ１１４：ＹＥＳ）、セッション情報の取得は失敗し、本フローチャートに示された処理は終了する。
【００５５】
なお、ステップＳ１１３からステップＳ１１５では、索出されたサーバ１が複製先サーバであるか否かに拘らず、セッション情報が取得できるまで、セッションＩＤに基づくサーバ１の索出とセッション情報の要求が繰り返されるが、これは、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇ手法を用いたセッション情報複製処理の信頼性を高めるための補助的な処理であり、省略されてもよい。
【００５６】
ステップＳ１１６では、ｃｏｎｔｉｎｕｕｍの同期が行われる。ステップＳ１１０において受信サーバがセッション情報を保持していないと判定されたということは、ロードバランサ２がｃｏｎｔｉｎｕｕｍの情報を失っているか、ｃｏｎｔｉｎｕｕｍの情報が最新でない等の理由で、ロードバランサ２がセッション情報を保持するサーバへの通信割当に失敗したと推定出来る。このため、ステップＳ１１０において受信サーバがセッション情報を保持していないと判定された場合、ロードバランサ２とサーバ１とは、ｃｏｎｔｉｎｕｕｍの同期処理を行う。通信割当の失敗時にこのような同期処理が行われるため、ｃｏｎｔｉｎｕｕｍの通常の同期を厳密に行うことなく、ｃｏｎｔｉｎｕｕｍの同期にかかる負荷を低減させることが出来る。その後、処理はセッション情報の更新のため、ステップＳ１１７へ進む。
【００５７】
ステップＳ１１７からステップＳ１２２では、複製先サーバに保持されているセッション情報の更新が行われる。
【００５８】
ステップＳ１１７では、セッション情報の更新が必要となるか否かが判定される。受信サーバは、クライアント端末９との通信に応じて、当該クライアント端末９と受信サーバとの間で用いられるセッション情報の更新の要否を判定する。セッション情報は、クライアント端末９と受信サーバとの間での通信が進行し、通信において管理すべき内容の変更、追加および削除等があった場合に変更される。セッション情報の更新が不要であると判定された場合、本フローチャートに示された処理は終了する。一方、セッション情報の更新が必要であると判定された場合、処理はステップＳ１１８へ進む。
【００５９】
ステップＳ１１８およびステップＳ１１９では、セッション情報が更新され、更新されたセッション情報がクライアントに通知される。受信サーバは、セッション情報を更新し（ステップＳ１１８）、クライアントへの返信パケットに含めて送信することで、更新されたセッション情報をクライアントに通知する（ステップＳ１１９）。セッション情報の更新および通知は従来のサーバ／クライアント間通信において行われている処理であるため、詳細な説明は省略する。その後、処理はステップＳ１２０へ進む。
【００６０】
ステップＳ１２０およびステップＳ１２１では、複製先サーバのセッション情報が更新される。受信サーバのサーバ索出部２６は、セッションＩＤに基づいて複製先サーバを索出し（ステップＳ１２０）、複製先サーバが保持するセッション情報を更新する（ステップＳ１２１）。ステップＳ１２０の処理の詳細については、ステップＳ１１１において説明した処理と概略同様であるため、説明を省略する。ステップＳ１２１において、受信サーバは、ステップＳ１１８で更新されたセッション情報を、ステップＳ１２０において索出された複製先サーバに対して送信することによって、複製先サーバによって保持されているセッション情報を更新する（ステップＳ１２１）。その後、本フローチャートに示された処理は終了する。
【００６１】
本実施形態に係るシステムによれば、複数のサーバ１の何れかに対して通信の割当を行う場合に、全てのサーバ１に対してセッション情報の複製を行うことなく、セッション情報を保持しているサーバ１へ的確に通信を割り当てることが出来る。即ち、本実施形態に係るシステムによれば、全てのサーバ１に対してセッション情報の複製を行ったり、複製先サーバを集中管理したりするようなシステムに比べて低い処理負荷で、的確な負荷分散を行うことが出来る。また、割当先サーバおよび複製先サーバの決定にＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇを用いる場合には、システムに対するサーバの追加または削除に対しても、安定性がある。
【００６２】
＜バリエーション＞
上記説明した実施形態では、クライアントから送信されてロードバランサ２によって受信されたパケットにセッションＩＤが設定されていない場合、ロードバランサ２がセッションＩＤを生成することとしていた。但し、セッションＩＤが未設定のセッションが発生した場合に、ロードバランサ２によるセッションＩＤ生成を行わず、サーバがセッションＩＤを生成することとしてもよい。この場合、図４から図７を用いて上述した処理の一部が変更される。ここでは、セッションＩＤの生成をサーバ１が行う場合の処理の流れについて、図８および図９を用いて説明する。
【００６３】
図８は、本実施形態に係る、サーバ割当処理の流れのバリエーションを示すフローチャートである。本フローチャートに示された処理は、クライアント端末９によって送信されたパケットが、ロードバランサ２によって受信されたことを契機として開始される。
【００６４】
ステップＳ２０１およびステップＳ２０２では、クライアント端末９からの通信が受信され、セッションＩＤの有無が判定される。処理の詳細は、図４を用いて上述したステップＳ００１およびステップＳ００２と概略同様であるため、説明を省略する。受信パケットにセッションＩＤが設定されていると判定された場合、処理はステップＳ２０４へ進む。一方、受信パケットにセッションＩＤが設定されていないと判定された場合、処理はステップＳ２０３へ進む。
【００６５】
ステップＳ２０３では、割当先サーバがランダムに決定される。クライアント端末９から受信したパケットにセッションＩＤが設定されていない場合、ロードバランサ２の割当先決定部４２は、ｃｏｎｔｉｎｕｕｍ上にマッピングされた複数のサーバから、当該パケットを割り当てるサーバ（割当先サーバ）をランダムに決定する。但し、割当先サーバは、ランダムではない方法で決定されてもよい。例えば、複数のサーバの現在の負荷に係る情報を取得し、負荷がより低いサーバが優先的に割当先サーバとなるように、割当先サーバが決定されてもよいし、その他の負荷分散アルゴリズムを用いて割当先サーバが決定されてもよい。その後、処理はステップＳ２０５へ進む。
【００６６】
ステップＳ２０４では、セッションＩＤに基づいて割当先サーバが決定される。クライアント端末９から受信したパケットにセッションＩＤが設定されていた場合、ロードバランサ２の割当先決定部４２は、ｃｏｎｔｉｎｕｕｍ上にマッピングされた複数のサーバから、当該パケットを割り当てる割当先サーバを決定する。処理の詳細は、図４を用いて上述したステップＳ００６と概略同様であるため、説明を省略する。その後、処理はステップＳ２０５へ進む。
【００６７】
ステップＳ２０５では、クライアント端末９からの通信が割当先サーバに送信される。ロードバランサ２の通信割当部４２は、ステップＳ２０３またはステップＳ２０４において決定された割当先サーバに対して、ステップＳ２０１で受信されたパケットを転送する。このようにして、パケットは複数のサーバ１のうちの何れかのサーバ１にたどり着き、ロードバランサ２による通信の割当を受けたサーバ１は、クライアント端末９から送信されたパケットを受信する。その後、本フローチャートに示された処理は終了する。
【００６８】
図８を用いて説明したサーバ割当処理のバリエーションによって、セッションＩＤを有さないパケットがサーバ１に割り当てられた場合、割当を受けたサーバは、自らセッションＩＤの生成およびクライアント端末への通知を行う必要がある。このような場合のサーバ１の処理の流れについて、図９を用いて説明する。
【００６９】
図９は、本実施形態に係る、セッション情報管理処理の流れのバリエーションを示すフローチャートである。本フローチャートに示された処理は、クライアント端末９によって送信されたパケットが、ロードバランサ２に割当られたサーバ１によって受信されたことを契機として開始される。
【００７０】
ステップＳ３０１およびステップＳ３０２では、クライアント端末９からの通信が受信され、受信パケットにセッションＩＤが設定されているか否かが判定される。処理の詳細は、図５を用いて上述したステップＳ１０１およびステップＳ１０２と概略同様であるため、説明を省略する。パケットにセッションＩＤが含まれている場合、処理は図６および図７を用いて説明したセッション情報の取得処理および更新処理に進む。セッション情報の取得処理および更新処理については、図６および図７を用いて説明したものと概略同様であるため、説明を省略する。一方、セッションＩＤが含まれていない場合、処理はステップＳ３０３へ進む。
【００７１】
ステップＳ３０３およびステップＳ３０４では、セッションＩＤを含むセッション情報の生成および通知が行われる。受信サーバの通信識別情報生成部２２は、パケットの送信元のクライアント端末９とサーバ１との間の通信を識別するための情報として、セッションＩＤを含むセッション情報を生成する（ステップＳ３０３）。そして、受信サーバは、生成されたセッション情報をセッションＩＤと関連付け、当該セッションＩＤと共にパケットの送信元クライアント端末９に通知する（ステップＳ３０４）。その後、処理はステップＳ３０５へ進む。
【００７２】
ステップＳ３０５およびステップＳ３０６では、セッションＩＤに基づいて複製先サーバが決定され、セッション情報が複製先サーバに複製される。処理の詳細は、図５を用いて上述したステップＳ１０５およびステップＳ１０６と概略同様であるため、説明を省略する。その後、本フローチャートに示された処理は終了する。
【図１】
2014020742.tif 000003
【図２】
2014020742.tif 000004
【図３】
2014020742.tif 000005
【図４】
2014020742.tif 000006
【図５】
2014020742.tif 000007
【図６】
2014020742.tif 000008
【図７】
2014020742.tif 000009
【図８】
2014020742.tif 000010
【図９】
2014020742.tif 000011
【国際調査報告】
2014020742.tif 000012
2014020742.tif 000013